@clickhouse/click-ui 0.7.0 → 0.9.0

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 (398) hide show
  1. package/dist/cjs/click-ui.css +1953 -119
  2. package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs +13 -49
  3. package/dist/cjs/components/Assets/Icons/Horizontal-Loading.cjs.map +1 -1
  4. package/dist/cjs/components/Assets/Icons/Loaders.css +94 -0
  5. package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs +13 -0
  6. package/dist/cjs/components/Assets/Icons/Loaders.module.css.cjs.map +1 -0
  7. package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs +8 -12
  8. package/dist/cjs/components/Assets/Icons/Loading-Animated.cjs.map +1 -1
  9. package/dist/cjs/components/Assets/Icons/Loading.cjs +13 -6
  10. package/dist/cjs/components/Assets/Icons/Loading.cjs.map +1 -1
  11. package/dist/cjs/components/AutoComplete/AutoComplete.css +97 -0
  12. package/dist/cjs/components/AutoComplete/AutoComplete.module.css.cjs +18 -0
  13. package/dist/cjs/components/AutoComplete/AutoComplete.module.css.cjs.map +1 -0
  14. package/dist/cjs/components/AutoComplete/index.cjs +14 -74
  15. package/dist/cjs/components/AutoComplete/index.cjs.map +1 -1
  16. package/dist/cjs/components/Button/BaseButton.cjs +10 -31
  17. package/dist/cjs/components/Button/BaseButton.cjs.map +1 -1
  18. package/dist/cjs/components/Button/BaseButton.css +40 -0
  19. package/dist/cjs/components/Button/BaseButton.module.css.cjs +10 -0
  20. package/dist/cjs/components/Button/BaseButton.module.css.cjs.map +1 -0
  21. package/dist/cjs/components/CardPromotion/CardPromotion.css +52 -0
  22. package/dist/cjs/components/CardPromotion/CardPromotion.module.css.cjs +21 -0
  23. package/dist/cjs/components/CardPromotion/CardPromotion.module.css.cjs.map +1 -0
  24. package/dist/cjs/components/CardPromotion/index.cjs +8 -54
  25. package/dist/cjs/components/CardPromotion/index.cjs.map +1 -1
  26. package/dist/cjs/components/CodeBlock/CodeBlock.css +48 -0
  27. package/dist/cjs/components/CodeBlock/CodeBlock.module.css.cjs +22 -0
  28. package/dist/cjs/components/CodeBlock/CodeBlock.module.css.cjs.map +1 -0
  29. package/dist/cjs/components/CodeBlock/InlineCodeBlock.cjs +7 -14
  30. package/dist/cjs/components/CodeBlock/InlineCodeBlock.cjs.map +1 -1
  31. package/dist/cjs/components/CodeBlock/InlineCodeBlock.css +10 -0
  32. package/dist/cjs/components/CodeBlock/InlineCodeBlock.module.css.cjs +12 -0
  33. package/dist/cjs/components/CodeBlock/InlineCodeBlock.module.css.cjs.map +1 -0
  34. package/dist/cjs/components/CodeBlock/index.cjs +18 -49
  35. package/dist/cjs/components/CodeBlock/index.cjs.map +1 -1
  36. package/dist/cjs/components/CodeBlock/useColorStyle.cjs +15 -0
  37. package/dist/cjs/components/CodeBlock/useColorStyle.cjs.map +1 -1
  38. package/dist/cjs/components/ContextMenu/ContextMenu.css +12 -0
  39. package/dist/cjs/components/ContextMenu/ContextMenu.module.css.cjs +8 -1
  40. package/dist/cjs/components/ContextMenu/ContextMenu.module.css.cjs.map +1 -1
  41. package/dist/cjs/components/ContextMenu/index.cjs +8 -20
  42. package/dist/cjs/components/ContextMenu/index.cjs.map +1 -1
  43. package/dist/cjs/components/CrossButton/CrossButton.css +12 -0
  44. package/dist/cjs/components/CrossButton/CrossButton.module.css.cjs +10 -0
  45. package/dist/cjs/components/CrossButton/CrossButton.module.css.cjs.map +1 -0
  46. package/dist/cjs/components/CrossButton/index.cjs +11 -18
  47. package/dist/cjs/components/CrossButton/index.cjs.map +1 -1
  48. package/dist/cjs/components/DatePicker/DateRangePicker.cjs +12 -2
  49. package/dist/cjs/components/DatePicker/DateRangePicker.cjs.map +1 -1
  50. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +1 -1
  51. package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
  52. package/dist/cjs/components/DatePicker/index.cjs +1 -3
  53. package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
  54. package/dist/cjs/components/DatePicker/utils.cjs +3 -0
  55. package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
  56. package/dist/cjs/components/Dropdown/Dropdown.css +23 -0
  57. package/dist/cjs/components/Dropdown/Dropdown.module.css.cjs +3 -1
  58. package/dist/cjs/components/Dropdown/Dropdown.module.css.cjs.map +1 -1
  59. package/dist/cjs/components/Dropdown/index.cjs +12 -23
  60. package/dist/cjs/components/Dropdown/index.cjs.map +1 -1
  61. package/dist/cjs/components/EllipsisContent/EllipsisContent.css +21 -0
  62. package/dist/cjs/components/EllipsisContent/EllipsisContent.module.css.cjs +10 -0
  63. package/dist/cjs/components/EllipsisContent/EllipsisContent.module.css.cjs.map +1 -0
  64. package/dist/cjs/components/EllipsisContent/index.cjs +7 -6
  65. package/dist/cjs/components/EllipsisContent/index.cjs.map +1 -1
  66. package/dist/cjs/components/EmptyButton/EmptyButton.css +21 -0
  67. package/dist/cjs/components/EmptyButton/EmptyButton.module.css.cjs +10 -0
  68. package/dist/cjs/components/EmptyButton/EmptyButton.module.css.cjs.map +1 -0
  69. package/dist/cjs/components/EmptyButton/index.cjs +10 -4
  70. package/dist/cjs/components/EmptyButton/index.cjs.map +1 -1
  71. package/dist/cjs/components/FileTabs/FileTabs.css +167 -0
  72. package/dist/cjs/components/FileTabs/FileTabs.module.css.cjs +38 -0
  73. package/dist/cjs/components/FileTabs/FileTabs.module.css.cjs.map +1 -0
  74. package/dist/cjs/components/FileTabs/index.cjs +51 -80
  75. package/dist/cjs/components/FileTabs/index.cjs.map +1 -1
  76. package/dist/cjs/components/FileUpload/FileMultiUpload.cjs +3 -9
  77. package/dist/cjs/components/FileUpload/FileMultiUpload.cjs.map +1 -1
  78. package/dist/cjs/components/FileUpload/FileMultiUpload.css +8 -0
  79. package/dist/cjs/components/FileUpload/FileMultiUpload.module.css.cjs +10 -0
  80. package/dist/cjs/components/FileUpload/FileMultiUpload.module.css.cjs.map +1 -0
  81. package/dist/cjs/components/FileUpload/FileUpload.stories-common.css +14 -0
  82. package/dist/cjs/components/FileUpload/FileUploadArea.cjs +87 -64
  83. package/dist/cjs/components/FileUpload/FileUploadArea.cjs.map +1 -1
  84. package/dist/cjs/components/FileUpload/FileUploadArea.css +130 -0
  85. package/dist/cjs/components/FileUpload/FileUploadArea.module.css.cjs +38 -0
  86. package/dist/cjs/components/FileUpload/FileUploadArea.module.css.cjs.map +1 -0
  87. package/dist/cjs/components/FileUpload/FileUploadItem.cjs +56 -64
  88. package/dist/cjs/components/FileUpload/FileUploadItem.cjs.map +1 -1
  89. package/dist/cjs/components/FileUpload/FileUploadItem.css +82 -0
  90. package/dist/cjs/components/FileUpload/FileUploadItem.module.css.cjs +27 -0
  91. package/dist/cjs/components/FileUpload/FileUploadItem.module.css.cjs.map +1 -0
  92. package/dist/cjs/components/FormContainer/Error.cjs +8 -9
  93. package/dist/cjs/components/FormContainer/Error.cjs.map +1 -1
  94. package/dist/cjs/components/FormContainer/Error.css +4 -0
  95. package/dist/cjs/components/FormContainer/Error.module.css.cjs +12 -0
  96. package/dist/cjs/components/FormContainer/Error.module.css.cjs.map +1 -0
  97. package/dist/cjs/components/FormContainer/FormElementContainer.cjs +8 -6
  98. package/dist/cjs/components/FormContainer/FormElementContainer.cjs.map +1 -1
  99. package/dist/cjs/components/FormContainer/FormElementContainer.css +14 -0
  100. package/dist/cjs/components/FormContainer/FormElementContainer.module.css.cjs +10 -0
  101. package/dist/cjs/components/FormContainer/FormElementContainer.module.css.cjs.map +1 -0
  102. package/dist/cjs/components/FormContainer/FormRoot.cjs +32 -18
  103. package/dist/cjs/components/FormContainer/FormRoot.cjs.map +1 -1
  104. package/dist/cjs/components/FormContainer/FormRoot.css +33 -0
  105. package/dist/cjs/components/FormContainer/FormRoot.module.css.cjs +15 -0
  106. package/dist/cjs/components/FormContainer/FormRoot.module.css.cjs.map +1 -0
  107. package/dist/cjs/components/Grid/Cell.cjs +1 -3
  108. package/dist/cjs/components/Grid/Cell.cjs.map +1 -1
  109. package/dist/cjs/components/Grid/ColumnResizer.cjs +18 -15
  110. package/dist/cjs/components/Grid/ColumnResizer.cjs.map +1 -1
  111. package/dist/cjs/components/Grid/ColumnResizer.css +22 -0
  112. package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs +11 -0
  113. package/dist/cjs/components/Grid/ColumnResizer.module.css.cjs.map +1 -0
  114. package/dist/cjs/components/Grid/Grid.css +34 -0
  115. package/dist/cjs/components/Grid/Grid.module.css.cjs +21 -0
  116. package/dist/cjs/components/Grid/Grid.module.css.cjs.map +1 -0
  117. package/dist/cjs/components/Grid/Header.cjs +22 -43
  118. package/dist/cjs/components/Grid/Header.cjs.map +1 -1
  119. package/dist/cjs/components/Grid/Header.css +44 -0
  120. package/dist/cjs/components/Grid/Header.module.css.cjs +19 -0
  121. package/dist/cjs/components/Grid/Header.module.css.cjs.map +1 -0
  122. package/dist/cjs/components/Grid/RowNumberColumn.cjs +12 -29
  123. package/dist/cjs/components/Grid/RowNumberColumn.cjs.map +1 -1
  124. package/dist/cjs/components/Grid/RowNumberColumn.css +22 -0
  125. package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs +12 -0
  126. package/dist/cjs/components/Grid/RowNumberColumn.module.css.cjs.map +1 -0
  127. package/dist/cjs/components/Grid/StyledCell.cjs +84 -56
  128. package/dist/cjs/components/Grid/StyledCell.cjs.map +1 -1
  129. package/dist/cjs/components/Grid/StyledCell.css +146 -0
  130. package/dist/cjs/components/Grid/StyledCell.module.css.cjs +47 -0
  131. package/dist/cjs/components/Grid/StyledCell.module.css.cjs.map +1 -0
  132. package/dist/cjs/components/Grid/index.cjs +30 -30
  133. package/dist/cjs/components/Grid/index.cjs.map +1 -1
  134. package/dist/cjs/components/GridCenter/GridCenter.css +6 -0
  135. package/dist/cjs/components/GridContainer/GridContainer.css +71 -0
  136. package/dist/cjs/components/GridContainer/GridContainer.module.css.cjs +12 -0
  137. package/dist/cjs/components/GridContainer/GridContainer.module.css.cjs.map +1 -0
  138. package/dist/cjs/components/GridContainer/index.cjs +64 -64
  139. package/dist/cjs/components/GridContainer/index.cjs.map +1 -1
  140. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.css +22 -0
  141. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.module.css.cjs +18 -0
  142. package/dist/cjs/components/MiddleTruncator/MiddleTruncator.module.css.cjs.map +1 -0
  143. package/dist/cjs/components/MiddleTruncator/index.cjs +5 -17
  144. package/dist/cjs/components/MiddleTruncator/index.cjs.map +1 -1
  145. package/dist/cjs/components/Pagination/Pagination.css +7 -0
  146. package/dist/cjs/components/Pagination/Pagination.module.css.cjs +10 -0
  147. package/dist/cjs/components/Pagination/Pagination.module.css.cjs.map +1 -0
  148. package/dist/cjs/components/Pagination/index.cjs +3 -5
  149. package/dist/cjs/components/Pagination/index.cjs.map +1 -1
  150. package/dist/cjs/components/Panel/Panel.css +116 -0
  151. package/dist/cjs/components/Panel/Panel.module.css.cjs +87 -0
  152. package/dist/cjs/components/Panel/Panel.module.css.cjs.map +1 -0
  153. package/dist/cjs/components/Panel/index.cjs +85 -35
  154. package/dist/cjs/components/Panel/index.cjs.map +1 -1
  155. package/dist/cjs/components/Popover/Popover.css +20 -0
  156. package/dist/cjs/components/Popover/Popover.module.css.cjs +5 -1
  157. package/dist/cjs/components/Popover/Popover.module.css.cjs.map +1 -1
  158. package/dist/cjs/components/Popover/index.cjs +2 -18
  159. package/dist/cjs/components/Popover/index.cjs.map +1 -1
  160. package/dist/cjs/components/Select/MultiSelectValue.cjs +4 -9
  161. package/dist/cjs/components/Select/MultiSelectValue.cjs.map +1 -1
  162. package/dist/cjs/components/Select/MultiSelectValue.css +19 -0
  163. package/dist/cjs/components/Select/MultiSelectValue.module.css.cjs +11 -0
  164. package/dist/cjs/components/Select/MultiSelectValue.module.css.cjs.map +1 -0
  165. package/dist/cjs/components/Select/SingleSelectValue.cjs +3 -5
  166. package/dist/cjs/components/Select/SingleSelectValue.cjs.map +1 -1
  167. package/dist/cjs/components/Select/SingleSelectValue.css +10 -0
  168. package/dist/cjs/components/Select/SingleSelectValue.module.css.cjs +10 -0
  169. package/dist/cjs/components/Select/SingleSelectValue.module.css.cjs.map +1 -0
  170. package/dist/cjs/components/Select/common/InternalSelect.cjs +18 -23
  171. package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
  172. package/dist/cjs/components/Select/common/SelectComponents.cjs +110 -0
  173. package/dist/cjs/components/Select/common/SelectComponents.cjs.map +1 -0
  174. package/dist/cjs/components/Select/common/SelectComponents.css +296 -0
  175. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs +31 -0
  176. package/dist/cjs/components/Select/common/SelectComponents.module.css.cjs.map +1 -0
  177. package/dist/cjs/components/SplitButton/SplitButton.css +138 -0
  178. package/dist/cjs/components/SplitButton/SplitButton.module.css.cjs +19 -0
  179. package/dist/cjs/components/SplitButton/SplitButton.module.css.cjs.map +1 -0
  180. package/dist/cjs/components/SplitButton/index.cjs +42 -88
  181. package/dist/cjs/components/SplitButton/index.cjs.map +1 -1
  182. package/dist/cjs/components/Table/Table.css +0 -1
  183. package/dist/esm/click-ui.css +1953 -119
  184. package/dist/esm/components/Assets/Icons/Horizontal-Loading.js +13 -49
  185. package/dist/esm/components/Assets/Icons/Horizontal-Loading.js.map +1 -1
  186. package/dist/esm/components/Assets/Icons/Loaders.css +94 -0
  187. package/dist/esm/components/Assets/Icons/Loaders.module.css.js +8 -0
  188. package/dist/esm/components/Assets/Icons/Loaders.module.css.js.map +1 -0
  189. package/dist/esm/components/Assets/Icons/Loading-Animated.js +9 -13
  190. package/dist/esm/components/Assets/Icons/Loading-Animated.js.map +1 -1
  191. package/dist/esm/components/Assets/Icons/Loading.js +13 -6
  192. package/dist/esm/components/Assets/Icons/Loading.js.map +1 -1
  193. package/dist/esm/components/Assets/Icons/system/IconsLight.js +2 -2
  194. package/dist/esm/components/Assets/Icons/system/IconsLight.js.map +1 -1
  195. package/dist/esm/components/AutoComplete/AutoComplete.css +97 -0
  196. package/dist/esm/components/AutoComplete/AutoComplete.module.css.js +14 -0
  197. package/dist/esm/components/AutoComplete/AutoComplete.module.css.js.map +1 -0
  198. package/dist/esm/components/AutoComplete/index.js +15 -75
  199. package/dist/esm/components/AutoComplete/index.js.map +1 -1
  200. package/dist/esm/components/Button/BaseButton.css +40 -0
  201. package/dist/esm/components/Button/BaseButton.js +11 -32
  202. package/dist/esm/components/Button/BaseButton.js.map +1 -1
  203. package/dist/esm/components/Button/BaseButton.module.css.js +6 -0
  204. package/dist/esm/components/Button/BaseButton.module.css.js.map +1 -0
  205. package/dist/esm/components/CardPromotion/CardPromotion.css +52 -0
  206. package/dist/esm/components/CardPromotion/CardPromotion.module.css.js +13 -0
  207. package/dist/esm/components/CardPromotion/CardPromotion.module.css.js.map +1 -0
  208. package/dist/esm/components/CardPromotion/index.js +8 -54
  209. package/dist/esm/components/CardPromotion/index.js.map +1 -1
  210. package/dist/esm/components/CodeBlock/CodeBlock.css +48 -0
  211. package/dist/esm/components/CodeBlock/CodeBlock.module.css.js +14 -0
  212. package/dist/esm/components/CodeBlock/CodeBlock.module.css.js.map +1 -0
  213. package/dist/esm/components/CodeBlock/InlineCodeBlock.css +10 -0
  214. package/dist/esm/components/CodeBlock/InlineCodeBlock.js +7 -14
  215. package/dist/esm/components/CodeBlock/InlineCodeBlock.js.map +1 -1
  216. package/dist/esm/components/CodeBlock/InlineCodeBlock.module.css.js +7 -0
  217. package/dist/esm/components/CodeBlock/InlineCodeBlock.module.css.js.map +1 -0
  218. package/dist/esm/components/CodeBlock/index.js +20 -51
  219. package/dist/esm/components/CodeBlock/index.js.map +1 -1
  220. package/dist/esm/components/CodeBlock/useColorStyle.js +14 -1
  221. package/dist/esm/components/CodeBlock/useColorStyle.js.map +1 -1
  222. package/dist/esm/components/ContextMenu/ContextMenu.css +12 -0
  223. package/dist/esm/components/ContextMenu/ContextMenu.module.css.js +7 -2
  224. package/dist/esm/components/ContextMenu/ContextMenu.module.css.js.map +1 -1
  225. package/dist/esm/components/ContextMenu/index.js +8 -20
  226. package/dist/esm/components/ContextMenu/index.js.map +1 -1
  227. package/dist/esm/components/CrossButton/CrossButton.css +12 -0
  228. package/dist/esm/components/CrossButton/CrossButton.module.css.js +6 -0
  229. package/dist/esm/components/CrossButton/CrossButton.module.css.js.map +1 -0
  230. package/dist/esm/components/CrossButton/index.js +11 -18
  231. package/dist/esm/components/CrossButton/index.js.map +1 -1
  232. package/dist/esm/components/DatePicker/DateRangePicker.js +14 -4
  233. package/dist/esm/components/DatePicker/DateRangePicker.js.map +1 -1
  234. package/dist/esm/components/DatePicker/DateTimeRangePicker.js +1 -1
  235. package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
  236. package/dist/esm/components/DatePicker/index.js +2 -4
  237. package/dist/esm/components/DatePicker/index.js.map +1 -1
  238. package/dist/esm/components/DatePicker/utils.js +3 -1
  239. package/dist/esm/components/DatePicker/utils.js.map +1 -1
  240. package/dist/esm/components/Dropdown/Dropdown.css +23 -0
  241. package/dist/esm/components/Dropdown/Dropdown.module.css.js +3 -1
  242. package/dist/esm/components/Dropdown/Dropdown.module.css.js.map +1 -1
  243. package/dist/esm/components/Dropdown/index.js +12 -23
  244. package/dist/esm/components/Dropdown/index.js.map +1 -1
  245. package/dist/esm/components/EllipsisContent/EllipsisContent.css +21 -0
  246. package/dist/esm/components/EllipsisContent/EllipsisContent.module.css.js +6 -0
  247. package/dist/esm/components/EllipsisContent/EllipsisContent.module.css.js.map +1 -0
  248. package/dist/esm/components/EllipsisContent/index.js +7 -6
  249. package/dist/esm/components/EllipsisContent/index.js.map +1 -1
  250. package/dist/esm/components/EmptyButton/EmptyButton.css +21 -0
  251. package/dist/esm/components/EmptyButton/EmptyButton.module.css.js +6 -0
  252. package/dist/esm/components/EmptyButton/EmptyButton.module.css.js.map +1 -0
  253. package/dist/esm/components/EmptyButton/index.js +10 -4
  254. package/dist/esm/components/EmptyButton/index.js.map +1 -1
  255. package/dist/esm/components/FileTabs/FileTabs.css +167 -0
  256. package/dist/esm/components/FileTabs/FileTabs.module.css.js +26 -0
  257. package/dist/esm/components/FileTabs/FileTabs.module.css.js.map +1 -0
  258. package/dist/esm/components/FileTabs/index.js +51 -80
  259. package/dist/esm/components/FileTabs/index.js.map +1 -1
  260. package/dist/esm/components/FileUpload/FileMultiUpload.css +8 -0
  261. package/dist/esm/components/FileUpload/FileMultiUpload.js +3 -9
  262. package/dist/esm/components/FileUpload/FileMultiUpload.js.map +1 -1
  263. package/dist/esm/components/FileUpload/FileMultiUpload.module.css.js +6 -0
  264. package/dist/esm/components/FileUpload/FileMultiUpload.module.css.js.map +1 -0
  265. package/dist/esm/components/FileUpload/FileUpload.stories-common.css +14 -0
  266. package/dist/esm/components/FileUpload/FileUploadArea.css +130 -0
  267. package/dist/esm/components/FileUpload/FileUploadArea.js +87 -64
  268. package/dist/esm/components/FileUpload/FileUploadArea.js.map +1 -1
  269. package/dist/esm/components/FileUpload/FileUploadArea.module.css.js +32 -0
  270. package/dist/esm/components/FileUpload/FileUploadArea.module.css.js.map +1 -0
  271. package/dist/esm/components/FileUpload/FileUploadItem.css +82 -0
  272. package/dist/esm/components/FileUpload/FileUploadItem.js +56 -64
  273. package/dist/esm/components/FileUpload/FileUploadItem.js.map +1 -1
  274. package/dist/esm/components/FileUpload/FileUploadItem.module.css.js +21 -0
  275. package/dist/esm/components/FileUpload/FileUploadItem.module.css.js.map +1 -0
  276. package/dist/esm/components/FormContainer/Error.css +4 -0
  277. package/dist/esm/components/FormContainer/Error.js +8 -9
  278. package/dist/esm/components/FormContainer/Error.js.map +1 -1
  279. package/dist/esm/components/FormContainer/Error.module.css.js +7 -0
  280. package/dist/esm/components/FormContainer/Error.module.css.js.map +1 -0
  281. package/dist/esm/components/FormContainer/FormElementContainer.css +14 -0
  282. package/dist/esm/components/FormContainer/FormElementContainer.js +8 -6
  283. package/dist/esm/components/FormContainer/FormElementContainer.js.map +1 -1
  284. package/dist/esm/components/FormContainer/FormElementContainer.module.css.js +6 -0
  285. package/dist/esm/components/FormContainer/FormElementContainer.module.css.js.map +1 -0
  286. package/dist/esm/components/FormContainer/FormRoot.css +33 -0
  287. package/dist/esm/components/FormContainer/FormRoot.js +32 -18
  288. package/dist/esm/components/FormContainer/FormRoot.js.map +1 -1
  289. package/dist/esm/components/FormContainer/FormRoot.module.css.js +11 -0
  290. package/dist/esm/components/FormContainer/FormRoot.module.css.js.map +1 -0
  291. package/dist/esm/components/Grid/Cell.js +1 -3
  292. package/dist/esm/components/Grid/Cell.js.map +1 -1
  293. package/dist/esm/components/Grid/ColumnResizer.css +22 -0
  294. package/dist/esm/components/Grid/ColumnResizer.js +18 -15
  295. package/dist/esm/components/Grid/ColumnResizer.js.map +1 -1
  296. package/dist/esm/components/Grid/ColumnResizer.module.css.js +7 -0
  297. package/dist/esm/components/Grid/ColumnResizer.module.css.js.map +1 -0
  298. package/dist/esm/components/Grid/Grid.css +34 -0
  299. package/dist/esm/components/Grid/Grid.module.css.js +13 -0
  300. package/dist/esm/components/Grid/Grid.module.css.js.map +1 -0
  301. package/dist/esm/components/Grid/Header.css +44 -0
  302. package/dist/esm/components/Grid/Header.js +22 -43
  303. package/dist/esm/components/Grid/Header.js.map +1 -1
  304. package/dist/esm/components/Grid/Header.module.css.js +13 -0
  305. package/dist/esm/components/Grid/Header.module.css.js.map +1 -0
  306. package/dist/esm/components/Grid/RowNumberColumn.css +22 -0
  307. package/dist/esm/components/Grid/RowNumberColumn.js +12 -29
  308. package/dist/esm/components/Grid/RowNumberColumn.js.map +1 -1
  309. package/dist/esm/components/Grid/RowNumberColumn.module.css.js +8 -0
  310. package/dist/esm/components/Grid/RowNumberColumn.module.css.js.map +1 -0
  311. package/dist/esm/components/Grid/StyledCell.css +146 -0
  312. package/dist/esm/components/Grid/StyledCell.js +84 -56
  313. package/dist/esm/components/Grid/StyledCell.js.map +1 -1
  314. package/dist/esm/components/Grid/StyledCell.module.css.js +32 -0
  315. package/dist/esm/components/Grid/StyledCell.module.css.js.map +1 -0
  316. package/dist/esm/components/Grid/index.js +30 -30
  317. package/dist/esm/components/Grid/index.js.map +1 -1
  318. package/dist/esm/components/GridCenter/GridCenter.css +6 -0
  319. package/dist/esm/components/GridContainer/GridContainer.css +71 -0
  320. package/dist/esm/components/GridContainer/GridContainer.module.css.js +8 -0
  321. package/dist/esm/components/GridContainer/GridContainer.module.css.js.map +1 -0
  322. package/dist/esm/components/GridContainer/index.js +65 -65
  323. package/dist/esm/components/GridContainer/index.js.map +1 -1
  324. package/dist/esm/components/MiddleTruncator/MiddleTruncator.css +22 -0
  325. package/dist/esm/components/MiddleTruncator/MiddleTruncator.module.css.js +11 -0
  326. package/dist/esm/components/MiddleTruncator/MiddleTruncator.module.css.js.map +1 -0
  327. package/dist/esm/components/MiddleTruncator/index.js +5 -17
  328. package/dist/esm/components/MiddleTruncator/index.js.map +1 -1
  329. package/dist/esm/components/Pagination/Pagination.css +7 -0
  330. package/dist/esm/components/Pagination/Pagination.module.css.js +6 -0
  331. package/dist/esm/components/Pagination/Pagination.module.css.js.map +1 -0
  332. package/dist/esm/components/Pagination/index.js +3 -5
  333. package/dist/esm/components/Pagination/index.js.map +1 -1
  334. package/dist/esm/components/Panel/Panel.css +116 -0
  335. package/dist/esm/components/Panel/Panel.module.css.js +58 -0
  336. package/dist/esm/components/Panel/Panel.module.css.js.map +1 -0
  337. package/dist/esm/components/Panel/index.js +85 -35
  338. package/dist/esm/components/Panel/index.js.map +1 -1
  339. package/dist/esm/components/Popover/Popover.css +20 -0
  340. package/dist/esm/components/Popover/Popover.module.css.js +5 -2
  341. package/dist/esm/components/Popover/Popover.module.css.js.map +1 -1
  342. package/dist/esm/components/Popover/index.js +2 -18
  343. package/dist/esm/components/Popover/index.js.map +1 -1
  344. package/dist/esm/components/Select/MultiSelectValue.css +19 -0
  345. package/dist/esm/components/Select/MultiSelectValue.js +4 -9
  346. package/dist/esm/components/Select/MultiSelectValue.js.map +1 -1
  347. package/dist/esm/components/Select/MultiSelectValue.module.css.js +7 -0
  348. package/dist/esm/components/Select/MultiSelectValue.module.css.js.map +1 -0
  349. package/dist/esm/components/Select/SingleSelectValue.css +10 -0
  350. package/dist/esm/components/Select/SingleSelectValue.js +3 -5
  351. package/dist/esm/components/Select/SingleSelectValue.js.map +1 -1
  352. package/dist/esm/components/Select/SingleSelectValue.module.css.js +6 -0
  353. package/dist/esm/components/Select/SingleSelectValue.module.css.js.map +1 -0
  354. package/dist/esm/components/Select/common/InternalSelect.js +4 -9
  355. package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
  356. package/dist/esm/components/Select/common/SelectComponents.css +296 -0
  357. package/dist/esm/components/Select/common/SelectComponents.js +92 -0
  358. package/dist/esm/components/Select/common/SelectComponents.js.map +1 -0
  359. package/dist/esm/components/Select/common/SelectComponents.module.css.js +27 -0
  360. package/dist/esm/components/Select/common/SelectComponents.module.css.js.map +1 -0
  361. package/dist/esm/components/SplitButton/SplitButton.css +138 -0
  362. package/dist/esm/components/SplitButton/SplitButton.module.css.js +15 -0
  363. package/dist/esm/components/SplitButton/SplitButton.module.css.js.map +1 -0
  364. package/dist/esm/components/SplitButton/index.js +43 -89
  365. package/dist/esm/components/SplitButton/index.js.map +1 -1
  366. package/dist/esm/components/Table/Table.css +0 -1
  367. package/dist/types/components/Assets/Icons/Horizontal-Loading.d.ts +2 -3
  368. package/dist/types/components/Assets/Icons/Loading-Animated.d.ts +2 -3
  369. package/dist/types/components/Assets/Icons/Loading.d.ts +2 -4
  370. package/dist/types/components/AutoComplete/AutoComplete.d.ts +1 -1
  371. package/dist/types/components/Button/BaseButton.d.ts +2 -1
  372. package/dist/types/components/CardPromotion/CardPromotion.d.ts +1 -1
  373. package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
  374. package/dist/types/components/CodeBlock/InlineCodeBlock.d.ts +1 -1
  375. package/dist/types/components/CodeBlock/useColorStyle.d.ts +6 -112
  376. package/dist/types/components/ContextMenu/ContextMenu.d.ts +1 -1
  377. package/dist/types/components/CrossButton/CrossButton.d.ts +2 -7
  378. package/dist/types/components/DatePicker/DateRangePicker.d.ts +2 -1
  379. package/dist/types/components/DatePicker/utils.d.ts +1 -0
  380. package/dist/types/components/Dropdown/Dropdown.d.ts +2 -2
  381. package/dist/types/components/EmptyButton/EmptyButton.d.ts +2 -1
  382. package/dist/types/components/FileTabs/FileTabs.d.ts +3 -3
  383. package/dist/types/components/FileUpload/FileUpload.stories-common.d.ts +4 -1
  384. package/dist/types/components/FormContainer/Error.d.ts +2 -1
  385. package/dist/types/components/FormContainer/FormElementContainer.d.ts +2 -1
  386. package/dist/types/components/FormContainer/FormRoot.d.ts +6 -4
  387. package/dist/types/components/Grid/RowNumberColumn.d.ts +1 -2
  388. package/dist/types/components/Grid/StyledCell.d.ts +10 -5
  389. package/dist/types/components/GridCenter/GridCenter.d.ts +9 -1
  390. package/dist/types/components/Panel/Panel.d.ts +2 -39
  391. package/dist/types/components/Select/common/SelectComponents.d.ts +33 -0
  392. package/dist/types/components/SplitButton/SplitButton.d.ts +1 -1
  393. package/package.json +1 -1
  394. package/dist/cjs/components/Select/common/SelectStyled.cjs +0 -194
  395. package/dist/cjs/components/Select/common/SelectStyled.cjs.map +0 -1
  396. package/dist/esm/components/Select/common/SelectStyled.js +0 -176
  397. package/dist/esm/components/Select/common/SelectStyled.js.map +0 -1
  398. package/dist/types/components/Select/common/SelectStyled.d.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport * as Popover from '@radix-ui/react-popover';\nimport { styled } from 'styled-components';\nimport { Body, CalendarRenderer, DatePickerInput, DateTableCell } from './Common';\nimport { shiftFromTimezone, shiftToTimezone, Timezone } from './utils';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\n\nconst DAYS_IN_WEEK = 7;\n\nconst PopoverTrigger = styled(Popover.Trigger)`\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n width: fit-content;\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: none;\n }\n`;\n\nconst PopoverContent = styled(Popover.Content)`\n z-index: 1;\n outline: none;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `}\n\n &:focus {\n outline: none;\n }\n`;\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n selectedDate?: Date;\n setSelectedDate: (selectedDate: Date) => void;\n autoFocus?: boolean;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n selectedDate,\n setSelectedDate,\n autoFocus = false,\n timezone,\n}: CalendarProps) => {\n const allDays = calendarBody.value.flatMap(week => week.value);\n const totalDays = allDays.length;\n\n const today = shiftToTimezone(new Date(), timezone);\n\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n\n const shiftedAllowList = useMemo(() => {\n return allowOnlyDatesList?.map(date => {\n return shiftToTimezone(date, timezone);\n });\n }, [allowOnlyDatesList, timezone]);\n\n const initialFocusIndex = allDays.findIndex(day =>\n shiftedSelected\n ? isSameDate(shiftedSelected, day.value)\n : isSameDate(today, day.value)\n );\n\n const [focusedDayIndex, setFocusedDayIndex] = useState<number>(\n initialFocusIndex >= 0 ? initialFocusIndex : 0\n );\n const dayRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n\n useEffect(() => {\n dayRefs.current[focusedDayIndex]?.focus();\n }, [focusedDayIndex]);\n\n useEffect(() => {\n if (autoFocus && initialFocusIndex >= 0) {\n const timeoutId = setTimeout(() => {\n dayRefs.current[initialFocusIndex]?.focus();\n }, 0);\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, initialFocusIndex]);\n\n const onDayKeyDown = useCallback(\n (\n event: KeyboardEvent<HTMLTableCellElement>,\n index: number,\n fullDate: Date,\n isDisabled: boolean\n ) => {\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalDays;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalDays) % totalDays;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + DAYS_IN_WEEK) % totalDays;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!isDisabled) {\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n }\n return;\n default:\n return;\n }\n\n setFocusedDayIndex(newIndex);\n dayRefs.current[newIndex]?.focus();\n },\n [totalDays, setSelectedDate, closeDatepicker, timezone]\n );\n\n let dayIndex = 0;\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected = shiftedSelected && isSameDate(shiftedSelected, fullDate);\n const isPresent = isSameDate(today, fullDate);\n\n const isNotAllowed =\n shiftedAllowList &&\n shiftedAllowList.length > 0 &&\n !shiftedAllowList.some((shiftedDate: Date) => {\n return isSameDate(shiftedDate, fullDate);\n });\n\n const isFutureDisabled = futureDatesDisabled && fullDate > today;\n const isDisabled = isNotAllowed || isFutureDisabled;\n const currentIndex = dayIndex;\n dayIndex++;\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n };\n\n return (\n <DateTableCell\n ref={el => {\n dayRefs.current[currentIndex] = el;\n }}\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onKeyDown={e => onDayKeyDown(e, currentIndex, fullDate, isDisabled)}\n tabIndex={currentIndex === focusedDayIndex ? 0 : -1}\n role=\"gridcell\"\n aria-label={fullDate.toDateString()}\n >\n {date}\n </DateTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\nexport interface DatePickerProps {\n allowOnlyDatesList?: Array<Date>;\n container?: HTMLElement | null;\n date?: Date;\n disabled?: boolean;\n futureDatesDisabled?: boolean;\n onSelectDate: (selectedDate: Date) => void;\n placeholder?: string;\n responsivePositioning?: boolean;\n timezone?: Timezone;\n}\n\nexport const DatePicker = ({\n allowOnlyDatesList,\n container,\n date,\n disabled = false,\n futureDatesDisabled = false,\n onSelectDate,\n placeholder,\n responsivePositioning = true,\n timezone = 'system',\n}: DatePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedDate, setSelectedDate] = useState<Date>();\n const [partialYear, setPartialYear] = useState<number>();\n const [partialMonth, setPartialMonth] = useState<number>();\n const [autoFocusCalendar, setAutoFocusCalendar] = useState<boolean>(false);\n\n const calendarOptions: UseCalendarOptions = {};\n const portalContainer = useResolvedPortalContainer(container);\n\n if (selectedDate) {\n calendarOptions.defaultDate = selectedDate;\n }\n\n useEffect(() => {\n if (date) {\n setSelectedDate(date);\n }\n }, [date]);\n\n const resetPartialState = useCallback(() => {\n setPartialYear(undefined);\n setPartialMonth(undefined);\n }, []);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n resetPartialState();\n setAutoFocusCalendar(false);\n }\n },\n [resetPartialState]\n );\n\n const onCloseDatePicker = useCallback(() => {\n setIsOpen(false);\n resetPartialState();\n }, [resetPartialState]);\n\n const onDateSelect = useCallback(\n (date: Date): void => {\n setSelectedDate(date);\n onSelectDate(date);\n resetPartialState();\n },\n [onSelectDate, resetPartialState]\n );\n\n const onYearSelect = useCallback((year: number) => {\n setPartialYear(year);\n setPartialMonth(undefined);\n }, []);\n\n const onMonthSelect = useCallback((year: number, month: number) => {\n setPartialYear(year);\n setPartialMonth(month);\n }, []);\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n setAutoFocusCalendar(true);\n }\n }, []);\n\n return (\n <Popover.Root\n onOpenChange={onOpenChange}\n open={isOpen}\n >\n <PopoverTrigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DatePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n partialMonth={partialMonth}\n partialYear={partialYear}\n placeholder={placeholder}\n selectedDate={selectedDate}\n timezone={timezone}\n />\n </PopoverTrigger>\n <Popover.Portal container={portalContainer}>\n <PopoverContent\n align=\"start\"\n avoidCollisions={responsivePositioning}\n sideOffset={4}\n >\n <CalendarRenderer\n calendarOptions={calendarOptions}\n onYearSelect={onYearSelect}\n onMonthSelect={onMonthSelect}\n selectedDate={selectedDate}\n timezone={timezone}\n >\n {body => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n autoFocus={autoFocusCalendar}\n calendarBody={body}\n closeDatepicker={onCloseDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n selectedDate={selectedDate}\n setSelectedDate={onDateSelect}\n timezone={timezone}\n />\n )}\n </CalendarRenderer>\n </PopoverContent>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["DAYS_IN_WEEK","PopoverTrigger","styled","Popover","Trigger","withConfig","componentId","PopoverContent","Content","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","Calendar","allowOnlyDatesList","calendarBody","closeDatepicker","futureDatesDisabled","selectedDate","setSelectedDate","autoFocus","timezone","allDays","value","flatMap","week","totalDays","length","today","shiftToTimezone","Date","shiftedSelected","undefined","shiftedAllowList","useMemo","map","date","initialFocusIndex","findIndex","day","isSameDate","focusedDayIndex","setFocusedDayIndex","useState","dayRefs","useRef","useEffect","current","focus","timeoutId","setTimeout","clearTimeout","onDayKeyDown","useCallback","event","index","fullDate","isDisabled","newIndex","key","preventDefault","shiftFromTimezone","dayIndex","weekKey","isCurrentMonth","dayKey","isSelected","isPresent","isNotAllowed","some","shiftedDate","isFutureDisabled","currentIndex","handleClick","el","e","toDateString","DatePicker","container","disabled","onSelectDate","placeholder","responsivePositioning","isOpen","setIsOpen","partialYear","setPartialYear","partialMonth","setPartialMonth","autoFocusCalendar","setAutoFocusCalendar","calendarOptions","portalContainer","useResolvedPortalContainer","defaultDate","resetPartialState","onOpenChange","open","onCloseDatePicker","onDateSelect","onYearSelect","year","onMonthSelect","month","onTriggerKeyDown","body"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isSameDate, UseCalendarOptions } from '@h6s/calendar';\nimport * as Popover from '@radix-ui/react-popover';\nimport { styled } from 'styled-components';\nimport { Body, CalendarRenderer, DatePickerInput, DateTableCell } from './Common';\nimport {\n isDateNotInAllowList,\n shiftFromTimezone,\n shiftToTimezone,\n Timezone,\n} from './utils';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\n\nconst DAYS_IN_WEEK = 7;\n\nconst PopoverTrigger = styled(Popover.Trigger)`\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n width: fit-content;\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: none;\n }\n`;\n\nconst PopoverContent = styled(Popover.Content)`\n z-index: 1;\n outline: none;\n\n ${({ theme }) => `\n border: 1px solid ${theme.click.genericMenu.panel.color.stroke.default};\n background: ${theme.click.genericMenu.panel.color.background.default};\n box-shadow: ${theme.click.genericMenu.panel.shadow.default};\n border-radius: ${theme.click.genericMenu.panel.radii.all};\n `}\n\n &:focus {\n outline: none;\n }\n`;\n\ninterface CalendarProps {\n allowOnlyDatesList?: Array<Date>;\n calendarBody: Body;\n closeDatepicker: () => void;\n futureDatesDisabled: boolean;\n selectedDate?: Date;\n setSelectedDate: (selectedDate: Date) => void;\n autoFocus?: boolean;\n timezone: Timezone;\n}\n\nconst Calendar = ({\n allowOnlyDatesList,\n calendarBody,\n closeDatepicker,\n futureDatesDisabled,\n selectedDate,\n setSelectedDate,\n autoFocus = false,\n timezone,\n}: CalendarProps) => {\n const allDays = calendarBody.value.flatMap(week => week.value);\n const totalDays = allDays.length;\n\n const today = shiftToTimezone(new Date(), timezone);\n\n const shiftedSelected = selectedDate\n ? shiftToTimezone(selectedDate, timezone)\n : undefined;\n\n const shiftedAllowList = useMemo(() => {\n return allowOnlyDatesList?.map(date => {\n return shiftToTimezone(date, timezone);\n });\n }, [allowOnlyDatesList, timezone]);\n\n const initialFocusIndex = allDays.findIndex(day =>\n shiftedSelected\n ? isSameDate(shiftedSelected, day.value)\n : isSameDate(today, day.value)\n );\n\n const [focusedDayIndex, setFocusedDayIndex] = useState<number>(\n initialFocusIndex >= 0 ? initialFocusIndex : 0\n );\n const dayRefs = useRef<Array<HTMLTableCellElement | null>>([]);\n\n useEffect(() => {\n dayRefs.current[focusedDayIndex]?.focus();\n }, [focusedDayIndex]);\n\n useEffect(() => {\n if (autoFocus && initialFocusIndex >= 0) {\n const timeoutId = setTimeout(() => {\n dayRefs.current[initialFocusIndex]?.focus();\n }, 0);\n return () => clearTimeout(timeoutId);\n }\n }, [autoFocus, initialFocusIndex]);\n\n const onDayKeyDown = useCallback(\n (\n event: KeyboardEvent<HTMLTableCellElement>,\n index: number,\n fullDate: Date,\n isDisabled: boolean\n ) => {\n let newIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n newIndex = (index + 1) % totalDays;\n break;\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = (index - 1 + totalDays) % totalDays;\n break;\n case 'ArrowDown':\n event.preventDefault();\n newIndex = (index + DAYS_IN_WEEK) % totalDays;\n break;\n case 'ArrowUp':\n event.preventDefault();\n newIndex = (index - DAYS_IN_WEEK + totalDays) % totalDays;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!isDisabled) {\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n }\n return;\n default:\n return;\n }\n\n setFocusedDayIndex(newIndex);\n dayRefs.current[newIndex]?.focus();\n },\n [totalDays, setSelectedDate, closeDatepicker, timezone]\n );\n\n let dayIndex = 0;\n\n return calendarBody.value.map(({ key: weekKey, value: week }) => {\n return (\n <tr key={weekKey}>\n {week.map(({ date, isCurrentMonth, key: dayKey, value: fullDate }) => {\n const isSelected = shiftedSelected && isSameDate(shiftedSelected, fullDate);\n const isPresent = isSameDate(today, fullDate);\n\n const isNotAllowed = isDateNotInAllowList(shiftedAllowList, fullDate);\n\n const isFutureDisabled = futureDatesDisabled && fullDate > today;\n const isDisabled = isNotAllowed || isFutureDisabled;\n const currentIndex = dayIndex;\n dayIndex++;\n\n const handleClick = () => {\n if (isDisabled) {\n return false;\n }\n setSelectedDate(shiftFromTimezone(fullDate, timezone));\n closeDatepicker();\n };\n\n return (\n <DateTableCell\n ref={el => {\n dayRefs.current[currentIndex] = el;\n }}\n $isCurrentMonth={isCurrentMonth}\n $isDisabled={isDisabled}\n $isSelected={isSelected}\n $isPresent={isPresent}\n key={dayKey}\n onClick={handleClick}\n onKeyDown={e => onDayKeyDown(e, currentIndex, fullDate, isDisabled)}\n tabIndex={currentIndex === focusedDayIndex ? 0 : -1}\n role=\"gridcell\"\n aria-label={fullDate.toDateString()}\n >\n {date}\n </DateTableCell>\n );\n })}\n </tr>\n );\n });\n};\n\nexport interface DatePickerProps {\n allowOnlyDatesList?: Array<Date>;\n container?: HTMLElement | null;\n date?: Date;\n disabled?: boolean;\n futureDatesDisabled?: boolean;\n onSelectDate: (selectedDate: Date) => void;\n placeholder?: string;\n responsivePositioning?: boolean;\n timezone?: Timezone;\n}\n\nexport const DatePicker = ({\n allowOnlyDatesList,\n container,\n date,\n disabled = false,\n futureDatesDisabled = false,\n onSelectDate,\n placeholder,\n responsivePositioning = true,\n timezone = 'system',\n}: DatePickerProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [selectedDate, setSelectedDate] = useState<Date>();\n const [partialYear, setPartialYear] = useState<number>();\n const [partialMonth, setPartialMonth] = useState<number>();\n const [autoFocusCalendar, setAutoFocusCalendar] = useState<boolean>(false);\n\n const calendarOptions: UseCalendarOptions = {};\n const portalContainer = useResolvedPortalContainer(container);\n\n if (selectedDate) {\n calendarOptions.defaultDate = selectedDate;\n }\n\n useEffect(() => {\n if (date) {\n setSelectedDate(date);\n }\n }, [date]);\n\n const resetPartialState = useCallback(() => {\n setPartialYear(undefined);\n setPartialMonth(undefined);\n }, []);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n resetPartialState();\n setAutoFocusCalendar(false);\n }\n },\n [resetPartialState]\n );\n\n const onCloseDatePicker = useCallback(() => {\n setIsOpen(false);\n resetPartialState();\n }, [resetPartialState]);\n\n const onDateSelect = useCallback(\n (date: Date): void => {\n setSelectedDate(date);\n onSelectDate(date);\n resetPartialState();\n },\n [onSelectDate, resetPartialState]\n );\n\n const onYearSelect = useCallback((year: number) => {\n setPartialYear(year);\n setPartialMonth(undefined);\n }, []);\n\n const onMonthSelect = useCallback((year: number, month: number) => {\n setPartialYear(year);\n setPartialMonth(month);\n }, []);\n\n const onTriggerKeyDown = useCallback((e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(true);\n setAutoFocusCalendar(true);\n }\n }, []);\n\n return (\n <Popover.Root\n onOpenChange={onOpenChange}\n open={isOpen}\n >\n <PopoverTrigger\n disabled={disabled}\n onKeyDown={onTriggerKeyDown}\n >\n <DatePickerInput\n data-testid=\"datepicker-input-container\"\n disabled={disabled}\n isActive={isOpen}\n partialMonth={partialMonth}\n partialYear={partialYear}\n placeholder={placeholder}\n selectedDate={selectedDate}\n timezone={timezone}\n />\n </PopoverTrigger>\n <Popover.Portal container={portalContainer}>\n <PopoverContent\n align=\"start\"\n avoidCollisions={responsivePositioning}\n sideOffset={4}\n >\n <CalendarRenderer\n calendarOptions={calendarOptions}\n onYearSelect={onYearSelect}\n onMonthSelect={onMonthSelect}\n selectedDate={selectedDate}\n timezone={timezone}\n >\n {body => (\n <Calendar\n allowOnlyDatesList={allowOnlyDatesList}\n autoFocus={autoFocusCalendar}\n calendarBody={body}\n closeDatepicker={onCloseDatePicker}\n futureDatesDisabled={futureDatesDisabled}\n selectedDate={selectedDate}\n setSelectedDate={onDateSelect}\n timezone={timezone}\n />\n )}\n </CalendarRenderer>\n </PopoverContent>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["DAYS_IN_WEEK","PopoverTrigger","styled","Popover","Trigger","withConfig","componentId","PopoverContent","Content","theme","click","genericMenu","panel","color","stroke","default","background","shadow","radii","all","Calendar","allowOnlyDatesList","calendarBody","closeDatepicker","futureDatesDisabled","selectedDate","setSelectedDate","autoFocus","timezone","allDays","value","flatMap","week","totalDays","length","today","shiftToTimezone","Date","shiftedSelected","undefined","shiftedAllowList","useMemo","map","date","initialFocusIndex","findIndex","day","isSameDate","focusedDayIndex","setFocusedDayIndex","useState","dayRefs","useRef","useEffect","current","focus","timeoutId","setTimeout","clearTimeout","onDayKeyDown","useCallback","event","index","fullDate","isDisabled","newIndex","key","preventDefault","shiftFromTimezone","dayIndex","weekKey","isCurrentMonth","dayKey","isSelected","isPresent","isNotAllowed","isDateNotInAllowList","isFutureDisabled","currentIndex","handleClick","el","e","toDateString","DatePicker","container","disabled","onSelectDate","placeholder","responsivePositioning","isOpen","setIsOpen","partialYear","setPartialYear","partialMonth","setPartialMonth","autoFocusCalendar","setAutoFocusCalendar","calendarOptions","portalContainer","useResolvedPortalContainer","defaultDate","resetPartialState","onOpenChange","open","onCloseDatePicker","onDateSelect","onYearSelect","year","onMonthSelect","month","onTriggerKeyDown","body"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { isSameDate } from '@h6s/calendar';
1
2
  import '../../utils/date.js';
2
3
  import dayjs from 'dayjs';
3
4
 
@@ -78,6 +79,7 @@ const getPredefinedMonthsForDateRangePicker = (numberOfMonths) => {
78
79
  }
79
80
  return nextSixMonths;
80
81
  };
82
+ const isDateNotInAllowList = (allowList, date) => Array.isArray(allowList) && allowList.length > 0 && !allowList.some((allowedDate) => isSameDate(allowedDate, date));
81
83
  const datesAreWithinMaxRange = (startDate, endDate, maxRangeLength) => {
82
84
  const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), "days"));
83
85
  return daysDifference <= maxRangeLength;
@@ -111,5 +113,5 @@ const dateRangeIsValid = (dateRange) => {
111
113
  return true;
112
114
  };
113
115
 
114
- export { dateRangeIsValid, datesAreWithinMaxRange, formatDateHeader, formatSelectedDate, formatSelectedDateTime, formatSelectedDateTimeWithSeconds, formatWeekday, getPredefinedMonthsForDateRangePicker, isDateRangeTheWholeMonth, shiftFromTimezone, shiftToTimezone };
116
+ export { dateRangeIsValid, datesAreWithinMaxRange, formatDateHeader, formatSelectedDate, formatSelectedDateTime, formatSelectedDateTimeWithSeconds, formatWeekday, getPredefinedMonthsForDateRangePicker, isDateNotInAllowList, isDateRangeTheWholeMonth, shiftFromTimezone, shiftToTimezone };
115
117
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import { dayjs } from '@/utils/date';\n\nexport type Timezone = 'system' | 'UTC';\n\nexport interface DateRange {\n startDate: Date;\n endDate: Date;\n}\n\nconst locale = 'en-US';\n\nexport type Meridiem = 'am' | 'pm';\n\nexport interface Time {\n hour: number;\n minutes: number;\n}\n\nexport interface DateRangeListItem {\n dateRange: DateRange;\n label: string;\n}\n\nconst createFormatter = (options: Intl.DateTimeFormatOptions) => {\n const timezoneFormatters: Partial<Record<Timezone, Intl.DateTimeFormat>> = {};\n\n return (timezone: Timezone, date: Date): string => {\n if (!timezoneFormatters[timezone]) {\n const opts = timezone === 'UTC' ? { ...options, timeZone: 'UTC' } : options;\n timezoneFormatters[timezone] = new Intl.DateTimeFormat(locale, opts);\n }\n return timezoneFormatters[timezone].format(date);\n };\n};\n\nexport const formatSelectedDate = createFormatter({\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n});\n\nexport const formatWeekday = createFormatter({ weekday: 'short' });\n\nexport const formatSelectedDateTime = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const formatSelectedDateTimeWithSeconds = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nexport const formatDateHeader = createFormatter({\n month: 'short',\n year: 'numeric',\n});\n\n// In UTC mode, shift by the host offset so local-time getters return UTC\n// values. shiftFromTimezone reverses it.\n//\n// Caveat: round-tripping across a DST boundary drifts by an hour — each\n// direction reads getTimezoneOffset on its own input. Call sites don't\n// round-trip the same Date, so this hasn't bitten us.\nexport const shiftToTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() + date.getTimezoneOffset() * 60_000);\n};\n\nexport const shiftFromTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() - date.getTimezoneOffset() * 60_000);\n};\n\nexport const getPredefinedMonthsForDateRangePicker = (\n numberOfMonths: number\n): DateRange[] => {\n const now = dayjs();\n\n if (numberOfMonths < 0) {\n const lastSixMonths: DateRange[] = [];\n for (let i = 0; i < Math.abs(numberOfMonths); i++) {\n const date = now.subtract(i, 'month');\n if (date.date() === 1 && date.month() === now.month()) {\n continue;\n }\n lastSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: i === 0 ? now.toDate() : date.endOf('month').toDate(),\n });\n }\n\n return lastSixMonths.reverse();\n }\n\n const nextSixMonths: DateRange[] = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const date = now.add(i, 'month');\n nextSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: date.endOf('month').toDate(),\n });\n }\n\n return nextSixMonths;\n};\n\nexport const getPredefinedTimePeriodsForDateTimePicker = (): DateRangeListItem[] => {\n const now = dayjs();\n\n const fifteenMinutesAgo = now.subtract(15, 'minute');\n const thirtyMinutesAgo = now.subtract(30, 'minute');\n const oneHourAgo = now.subtract(1, 'hour');\n const sixHoursAgo = now.subtract(6, 'hour');\n const oneDayAgo = now.subtract(1, 'day');\n const oneMonthAgo = now.subtract(1, 'month');\n\n const dateRangeList: DateRangeListItem[] = [\n {\n dateRange: {\n startDate: fifteenMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 15 minutes',\n },\n {\n dateRange: {\n startDate: thirtyMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 30 minutes',\n },\n {\n dateRange: {\n startDate: oneHourAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past hour',\n },\n {\n dateRange: {\n startDate: sixHoursAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 6 hours',\n },\n {\n dateRange: {\n startDate: oneDayAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past day',\n },\n {\n dateRange: {\n startDate: oneMonthAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past month',\n },\n ];\n\n return dateRangeList;\n};\n\nexport const getNextNDatesForDatePickerAllowOnlyList = (numberOfDays: number): Date[] => {\n const now = dayjs();\n\n return Array.from({ length: numberOfDays }, (_, i) =>\n now.add(i, 'day').startOf('day').toDate()\n );\n};\n\nexport const datesAreWithinMaxRange = (\n startDate: Date,\n endDate: Date,\n maxRangeLength: number\n): boolean => {\n const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), 'days'));\n\n return daysDifference <= maxRangeLength;\n};\n\nexport const isDateRangeTheWholeMonth = (\n { startDate, endDate }: DateRange,\n timezone: Timezone = 'system'\n): boolean => {\n const start = timezone === 'UTC' ? dayjs.utc(startDate) : dayjs(startDate);\n const end = timezone === 'UTC' ? dayjs.utc(endDate) : dayjs(endDate);\n\n if (start.month() !== end.month()) {\n return false;\n }\n\n const startDateIsFirstDay = start.isSame(start.startOf('month'), 'day');\n const endDateIsLastDay = end.isSame(end.endOf('month'), 'day');\n\n return startDateIsFirstDay && endDateIsLastDay;\n};\n\nexport const dateRangeIsValid = (dateRange: DateRange): boolean => {\n if (!dateRange?.startDate || !dateRange?.endDate) {\n return false;\n }\n\n if (!(dateRange.startDate instanceof Date) || !dayjs(dateRange.startDate).isValid()) {\n return false;\n }\n\n if (!(dateRange.endDate instanceof Date) || !dayjs(dateRange.endDate).isValid()) {\n return false;\n }\n\n if (dateRange.startDate.getTime() > dateRange.endDate.getTime()) {\n return false;\n }\n\n return true;\n};\n"],"names":["locale","createFormatter","options","timezoneFormatters","timezone","date","opts","timeZone","Intl","DateTimeFormat","format","formatSelectedDate","day","month","year","formatWeekday","weekday","formatSelectedDateTime","hour","minute","formatSelectedDateTimeWithSeconds","second","formatDateHeader","shiftToTimezone","Date","getTime","getTimezoneOffset","shiftFromTimezone","getPredefinedMonthsForDateRangePicker","numberOfMonths","now","dayjs","lastSixMonths","i","Math","abs","subtract","push","startDate","startOf","toDate","endDate","endOf","reverse","nextSixMonths","add","datesAreWithinMaxRange","maxRangeLength","daysDifference","diff","isDateRangeTheWholeMonth","start","utc","end","startDateIsFirstDay","isSame","endDateIsLastDay","dateRangeIsValid","dateRange","isValid"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["import { isSameDate } from '@h6s/calendar';\nimport { dayjs } from '@/utils/date';\n\nexport type Timezone = 'system' | 'UTC';\n\nexport interface DateRange {\n startDate: Date;\n endDate: Date;\n}\n\nconst locale = 'en-US';\n\nexport type Meridiem = 'am' | 'pm';\n\nexport interface Time {\n hour: number;\n minutes: number;\n}\n\nexport interface DateRangeListItem {\n dateRange: DateRange;\n label: string;\n}\n\nconst createFormatter = (options: Intl.DateTimeFormatOptions) => {\n const timezoneFormatters: Partial<Record<Timezone, Intl.DateTimeFormat>> = {};\n\n return (timezone: Timezone, date: Date): string => {\n if (!timezoneFormatters[timezone]) {\n const opts = timezone === 'UTC' ? { ...options, timeZone: 'UTC' } : options;\n timezoneFormatters[timezone] = new Intl.DateTimeFormat(locale, opts);\n }\n return timezoneFormatters[timezone].format(date);\n };\n};\n\nexport const formatSelectedDate = createFormatter({\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n});\n\nexport const formatWeekday = createFormatter({ weekday: 'short' });\n\nexport const formatSelectedDateTime = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport const formatSelectedDateTimeWithSeconds = createFormatter({\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n});\n\nexport const formatDateHeader = createFormatter({\n month: 'short',\n year: 'numeric',\n});\n\n// In UTC mode, shift by the host offset so local-time getters return UTC\n// values. shiftFromTimezone reverses it.\n//\n// Caveat: round-tripping across a DST boundary drifts by an hour — each\n// direction reads getTimezoneOffset on its own input. Call sites don't\n// round-trip the same Date, so this hasn't bitten us.\nexport const shiftToTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() + date.getTimezoneOffset() * 60_000);\n};\n\nexport const shiftFromTimezone = (date: Date, timezone: Timezone): Date => {\n if (timezone !== 'UTC') {\n return date;\n }\n return new Date(date.getTime() - date.getTimezoneOffset() * 60_000);\n};\n\nexport const getPredefinedMonthsForDateRangePicker = (\n numberOfMonths: number\n): DateRange[] => {\n const now = dayjs();\n\n if (numberOfMonths < 0) {\n const lastSixMonths: DateRange[] = [];\n for (let i = 0; i < Math.abs(numberOfMonths); i++) {\n const date = now.subtract(i, 'month');\n if (date.date() === 1 && date.month() === now.month()) {\n continue;\n }\n lastSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: i === 0 ? now.toDate() : date.endOf('month').toDate(),\n });\n }\n\n return lastSixMonths.reverse();\n }\n\n const nextSixMonths: DateRange[] = [];\n for (let i = 0; i < numberOfMonths; i++) {\n const date = now.add(i, 'month');\n nextSixMonths.push({\n startDate: date.startOf('month').toDate(),\n endDate: date.endOf('month').toDate(),\n });\n }\n\n return nextSixMonths;\n};\n\nexport const getPredefinedTimePeriodsForDateTimePicker = (): DateRangeListItem[] => {\n const now = dayjs();\n\n const fifteenMinutesAgo = now.subtract(15, 'minute');\n const thirtyMinutesAgo = now.subtract(30, 'minute');\n const oneHourAgo = now.subtract(1, 'hour');\n const sixHoursAgo = now.subtract(6, 'hour');\n const oneDayAgo = now.subtract(1, 'day');\n const oneMonthAgo = now.subtract(1, 'month');\n\n const dateRangeList: DateRangeListItem[] = [\n {\n dateRange: {\n startDate: fifteenMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 15 minutes',\n },\n {\n dateRange: {\n startDate: thirtyMinutesAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 30 minutes',\n },\n {\n dateRange: {\n startDate: oneHourAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past hour',\n },\n {\n dateRange: {\n startDate: sixHoursAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past 6 hours',\n },\n {\n dateRange: {\n startDate: oneDayAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past day',\n },\n {\n dateRange: {\n startDate: oneMonthAgo.toDate(),\n endDate: now.toDate(),\n },\n label: 'Past month',\n },\n ];\n\n return dateRangeList;\n};\n\nexport const getNextNDatesForDatePickerAllowOnlyList = (numberOfDays: number): Date[] => {\n const now = dayjs();\n\n return Array.from({ length: numberOfDays }, (_, i) =>\n now.add(i, 'day').startOf('day').toDate()\n );\n};\n\nexport const isDateNotInAllowList = (\n allowList: Array<Date> | undefined,\n date: Date\n): boolean =>\n Array.isArray(allowList) &&\n allowList.length > 0 &&\n !allowList.some(allowedDate => isSameDate(allowedDate, date));\n\nexport const datesAreWithinMaxRange = (\n startDate: Date,\n endDate: Date,\n maxRangeLength: number\n): boolean => {\n const daysDifference = Math.abs(dayjs(startDate).diff(dayjs(endDate), 'days'));\n\n return daysDifference <= maxRangeLength;\n};\n\nexport const isDateRangeTheWholeMonth = (\n { startDate, endDate }: DateRange,\n timezone: Timezone = 'system'\n): boolean => {\n const start = timezone === 'UTC' ? dayjs.utc(startDate) : dayjs(startDate);\n const end = timezone === 'UTC' ? dayjs.utc(endDate) : dayjs(endDate);\n\n if (start.month() !== end.month()) {\n return false;\n }\n\n const startDateIsFirstDay = start.isSame(start.startOf('month'), 'day');\n const endDateIsLastDay = end.isSame(end.endOf('month'), 'day');\n\n return startDateIsFirstDay && endDateIsLastDay;\n};\n\nexport const dateRangeIsValid = (dateRange: DateRange): boolean => {\n if (!dateRange?.startDate || !dateRange?.endDate) {\n return false;\n }\n\n if (!(dateRange.startDate instanceof Date) || !dayjs(dateRange.startDate).isValid()) {\n return false;\n }\n\n if (!(dateRange.endDate instanceof Date) || !dayjs(dateRange.endDate).isValid()) {\n return false;\n }\n\n if (dateRange.startDate.getTime() > dateRange.endDate.getTime()) {\n return false;\n }\n\n return true;\n};\n"],"names":["locale","createFormatter","options","timezoneFormatters","timezone","date","opts","timeZone","Intl","DateTimeFormat","format","formatSelectedDate","day","month","year","formatWeekday","weekday","formatSelectedDateTime","hour","minute","formatSelectedDateTimeWithSeconds","second","formatDateHeader","shiftToTimezone","Date","getTime","getTimezoneOffset","shiftFromTimezone","getPredefinedMonthsForDateRangePicker","numberOfMonths","now","dayjs","lastSixMonths","i","Math","abs","subtract","push","startDate","startOf","toDate","endDate","endOf","reverse","nextSixMonths","add","isDateNotInAllowList","allowList","Array","isArray","length","some","allowedDate","isSameDate","datesAreWithinMaxRange","maxRangeLength","daysDifference","diff","isDateRangeTheWholeMonth","start","utc","end","startDateIsFirstDay","isSame","endDateIsLastDay","dateRangeIsValid","dateRange","isValid"],"mappings":"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"}
@@ -11,3 +11,26 @@
11
11
  position: relative;
12
12
  min-height: 32px;
13
13
  }
14
+
15
+ .dropdown-trigger__FUHvM {
16
+ /* stylelint-disable-next-line plugin/no-unsupported-browser-features -- `fit-content`
17
+ keyword on `width` is widely supported on evergreen browsers; the original
18
+ rule used the same value. */
19
+ width: fit-content;
20
+ cursor: pointer;
21
+ }
22
+
23
+ .dropdown-trigger__FUHvM[disabled] {
24
+ cursor: not-allowed;
25
+ }
26
+
27
+ .dropdown-trigger__FUHvM:focus-visible {
28
+ outline: 2px solid var(--click-global-color-outline-default);
29
+ outline-offset: 2px;
30
+ }
31
+
32
+ .dropdown-group__nvxHE {
33
+ width: 100%;
34
+ /* stylelint-disable-next-line custom-property-pattern -- design tokens use camelCase (e.g. genericMenu) */
35
+ border-bottom: 1px solid var(--click-genericMenu-item-color-default-stroke-default);
36
+ }
@@ -1,6 +1,8 @@
1
1
  const styles = {
2
2
  "dropdown-menu-content": "dropdown-menu-content__Qc6mk",
3
- "dropdown-menu-item": "dropdown-menu-item__dILwE"
3
+ "dropdown-menu-item": "dropdown-menu-item__dILwE",
4
+ "dropdown-trigger": "dropdown-trigger__FUHvM",
5
+ "dropdown-group": "dropdown-group__nvxHE"
4
6
  };
5
7
 
6
8
  export { styles as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"Dropdown.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -2,7 +2,6 @@ import "./Dropdown.css";
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
4
4
  import { forwardRef } from 'react';
5
- import { styled } from 'styled-components';
6
5
  import { GenericMenuItem, GenericMenuPanel, Arrow } from '../GenericMenu/index.js';
7
6
  import { cn } from '../../lib/cva.js';
8
7
  import { useInputModality } from '../../hooks/internal/useInputModality.js';
@@ -18,11 +17,6 @@ const _DropdownMenuItem = ({
18
17
  ...props
19
18
  }, ref) => /* @__PURE__ */ jsx(GenericMenuItem, { ref, ...props, className: cn(styles["dropdown-menu-item"], className) });
20
19
  const DropdownMenuItem = forwardRef(_DropdownMenuItem);
21
- const Trigger = styled(DropdownMenu.Trigger).withConfig({
22
- componentId: "sc-18bhwbw-0"
23
- })(["cursor:pointer;width:fit-content;&[disabled]{cursor:not-allowed;}&:focus-visible{outline:2px solid ", ";outline-offset:2px;}"], ({
24
- theme
25
- }) => theme.click.global.color.outline.default);
26
20
  const DropdownTrigger = ({
27
21
  sub,
28
22
  children,
@@ -39,7 +33,11 @@ const DropdownTrigger = ({
39
33
  /* @__PURE__ */ jsx(SvgImage, { name: "chevron-right" })
40
34
  ] });
41
35
  }
42
- return /* @__PURE__ */ jsx(Trigger, { asChild: true, ...props, children: /* @__PURE__ */ jsx("div", { children }) });
36
+ const {
37
+ className,
38
+ ...triggerProps
39
+ } = props;
40
+ return /* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild: true, ...triggerProps, className: cn(styles["dropdown-trigger"], className), children: /* @__PURE__ */ jsx("div", { children }) });
43
41
  };
44
42
  DropdownTrigger.displayName = "DropdownTrigger";
45
43
  Dropdown.Trigger = DropdownTrigger;
@@ -66,25 +64,16 @@ const DropdownContent = ({
66
64
  };
67
65
  DropdownContent.displayName = "DropdownContent";
68
66
  Dropdown.Content = DropdownContent;
69
- const DropdownMenuGroup = styled(DropdownMenu.Group).withConfig({
70
- componentId: "sc-18bhwbw-1"
71
- })(["width:100%;border-bottom:1px solid ", ";"], ({
72
- theme
73
- }) => theme.click.genericMenu.item.color.default.stroke.default);
74
- const DropdownGroup = (props) => {
75
- return /* @__PURE__ */ jsx(DropdownMenuGroup, { ...props });
67
+ const DropdownGroup = ({
68
+ className,
69
+ ...props
70
+ }) => {
71
+ return /* @__PURE__ */ jsx(DropdownMenu.Group, { ...props, className: cn(styles["dropdown-group"], className) });
76
72
  };
77
73
  DropdownGroup.displayName = "DropdownGroup";
78
74
  Dropdown.Group = DropdownGroup;
79
- const DropdownMenuSub = styled(DropdownMenu.Sub).withConfig({
80
- componentId: "sc-18bhwbw-2"
81
- })(["border-bottom:1px solid ", ";"], ({
82
- theme
83
- }) => theme.click.genericMenu.item.color.default.stroke.default);
84
- const DropdownSub = ({
85
- ...props
86
- }) => {
87
- return /* @__PURE__ */ jsx(DropdownMenuSub, { ...props });
75
+ const DropdownSub = (props) => {
76
+ return /* @__PURE__ */ jsx(DropdownMenu.Sub, { ...props });
88
77
  };
89
78
  DropdownSub.displayName = "DropdownSub";
90
79
  Dropdown.Sub = DropdownSub;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { styled } from 'styled-components';\nimport { Arrow, GenericMenuItem, GenericMenuPanel } from '@/components/GenericMenu';\nimport { cn } from '@/lib/cva';\nimport { useInputModality } from '@/hooks/internal';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\nimport styles from './Dropdown.module.css';\n\nexport const Dropdown = (props: DropdownMenu.DropdownMenuProps) => (\n <DropdownMenu.Root {...props} />\n);\n\ntype DropdownMenuItemComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuItem<T>>\n) => ReactNode;\n\nconst _DropdownMenuItem = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuItem<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuItem\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuItem>)}\n className={cn(styles['dropdown-menu-item'], className)}\n />\n);\n\nconst DropdownMenuItem: DropdownMenuItemComponent = forwardRef(_DropdownMenuItem);\n\ninterface SubDropdownProps {\n sub?: true;\n icon?: IconName;\n iconDir?: HorizontalDirection;\n}\n\ninterface MainDropdownProps {\n sub?: never;\n}\n\ntype DropdownSubTriggerProps = DropdownMenu.DropdownMenuSubTriggerProps &\n SubDropdownProps;\ntype DropdownTriggerProps = DropdownMenu.DropdownMenuTriggerProps & MainDropdownProps;\n\nconst Trigger = styled(DropdownMenu.Trigger)`\n cursor: pointer;\n width: fit-content;\n &[disabled] {\n cursor: not-allowed;\n }\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.click.global.color.outline.default};\n outline-offset: 2px;\n }\n`;\n\nconst DropdownTrigger = ({\n sub,\n children,\n ...props\n}: DropdownSubTriggerProps | DropdownTriggerProps) => {\n if (sub) {\n const { icon, iconDir, ...menuProps } = props as DropdownSubTriggerProps;\n return (\n <DropdownMenuItem\n as={DropdownMenu.SubTrigger}\n {...menuProps}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n <Icon name=\"chevron-right\" />\n </DropdownMenuItem>\n );\n }\n\n return (\n <Trigger\n asChild\n {...(props as DropdownTriggerProps)}\n >\n <div>{children}</div>\n </Trigger>\n );\n};\n\nDropdownTrigger.displayName = 'DropdownTrigger';\nDropdown.Trigger = DropdownTrigger;\n\nexport type ArrowProps = {\n showArrow?: boolean;\n};\n\ninterface StyledDropdownContentProps extends DropdownMenu.DropdownMenuContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ninterface StyledDropdownSubContentProps extends DropdownMenu.DropdownMenuSubContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ntype DropdownContentProps = StyledDropdownContentProps & SubDropdownProps & ArrowProps;\ntype DropdownSubContentProps = StyledDropdownSubContentProps &\n MainDropdownProps &\n ArrowProps;\n\ntype DropdownMenuContentComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuPanel<T>>\n) => ReactNode;\n\nconst _DropdownMenuContent = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuPanel<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuPanel\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuPanel>)}\n className={cn(styles['dropdown-menu-content'], className)}\n />\n);\n\nconst DropdownMenuContent: DropdownMenuContentComponent =\n forwardRef(_DropdownMenuContent);\n\nconst DropdownContent = ({\n sub,\n children,\n container,\n showArrow,\n responsivePositioning = true,\n ...props\n}: DropdownContentProps | DropdownSubContentProps) => {\n const ContentElement = sub ? DropdownMenu.SubContent : DropdownMenu.Content;\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n return (\n <DropdownMenu.Portal container={portalContainer}>\n <DropdownMenuContent\n {...props}\n type=\"dropdown-menu\"\n showArrow={showArrow}\n as={ContentElement}\n sideOffset={4}\n loop\n avoidCollisions={responsivePositioning}\n collisionPadding={responsivePositioning ? 100 : undefined}\n {...inputModalityProps}\n >\n {showArrow && (\n <Arrow\n asChild\n as={DropdownMenu.Arrow}\n width={20}\n height={10}\n >\n <Popover_Arrow />\n </Arrow>\n )}\n {children}\n </DropdownMenuContent>\n </DropdownMenu.Portal>\n );\n};\n\nDropdownContent.displayName = 'DropdownContent';\nDropdown.Content = DropdownContent;\n\nconst DropdownMenuGroup = styled(DropdownMenu.Group)`\n width: 100%;\n border-bottom: 1px solid\n ${({ theme }) => theme.click.genericMenu.item.color.default.stroke.default};\n`;\n\nconst DropdownGroup = (props: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenuGroup {...props} />;\n};\n\nDropdownGroup.displayName = 'DropdownGroup';\nDropdown.Group = DropdownGroup;\n\nconst DropdownMenuSub = styled(DropdownMenu.Sub)`\n border-bottom: 1px solid\n ${({ theme }) => theme.click.genericMenu.item.color.default.stroke.default};\n`;\n\nconst DropdownSub = ({ ...props }: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenuSub {...props} />;\n};\n\nDropdownSub.displayName = 'DropdownSub';\nDropdown.Sub = DropdownSub;\n\ninterface DropdownItemProps extends DropdownMenu.DropdownMenuItemProps {\n /** Icon to display in the menu item */\n icon?: IconName;\n /** The direction of the icon relative to the label */\n iconDir?: HorizontalDirection;\n /** The type of the menu item */\n type?: 'default' | 'danger';\n}\n\nexport type { DropdownItemProps };\n\nconst DropdownItem = ({\n icon,\n iconDir,\n type = 'default',\n children,\n ...props\n}: DropdownItemProps) => {\n return (\n <DropdownMenuItem\n as={DropdownMenu.Item}\n type={type}\n {...props}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n </DropdownMenuItem>\n );\n};\n\nDropdownItem.displayName = 'DropdownItem';\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"names":["Dropdown","props","_DropdownMenuItem","className","ref","cn","styles","DropdownMenuItem","forwardRef","Trigger","styled","DropdownMenu","withConfig","componentId","theme","click","global","color","outline","default","DropdownTrigger","sub","children","icon","iconDir","menuProps","SubTrigger","Icon","displayName","_DropdownMenuContent","DropdownMenuContent","DropdownContent","container","showArrow","responsivePositioning","ContentElement","SubContent","Content","inputModalityProps","useInputModality","portalContainer","useResolvedPortalContainer","undefined","Arrow","DropdownMenuGroup","Group","genericMenu","item","stroke","DropdownGroup","DropdownMenuSub","Sub","DropdownSub","DropdownItem","type","Item"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { Arrow, GenericMenuItem, GenericMenuPanel } from '@/components/GenericMenu';\nimport { cn } from '@/lib/cva';\nimport { useInputModality } from '@/hooks/internal';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport { IconWrapper } from '@/components/IconWrapper';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\nimport styles from './Dropdown.module.css';\n\nexport const Dropdown = (props: DropdownMenu.DropdownMenuProps) => (\n <DropdownMenu.Root {...props} />\n);\n\ntype DropdownMenuItemComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuItem<T>>\n) => ReactNode;\n\nconst _DropdownMenuItem = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuItem<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuItem\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuItem>)}\n className={cn(styles['dropdown-menu-item'], className)}\n />\n);\n\nconst DropdownMenuItem: DropdownMenuItemComponent = forwardRef(_DropdownMenuItem);\n\ninterface SubDropdownProps {\n sub?: true;\n icon?: IconName;\n iconDir?: HorizontalDirection;\n}\n\ninterface MainDropdownProps {\n sub?: never;\n}\n\ntype DropdownSubTriggerProps = DropdownMenu.DropdownMenuSubTriggerProps &\n SubDropdownProps;\ntype DropdownTriggerProps = DropdownMenu.DropdownMenuTriggerProps & MainDropdownProps;\n\nconst DropdownTrigger = ({\n sub,\n children,\n ...props\n}: DropdownSubTriggerProps | DropdownTriggerProps) => {\n if (sub) {\n const { icon, iconDir, ...menuProps } = props as DropdownSubTriggerProps;\n return (\n <DropdownMenuItem\n as={DropdownMenu.SubTrigger}\n {...menuProps}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n <Icon name=\"chevron-right\" />\n </DropdownMenuItem>\n );\n }\n\n const { className, ...triggerProps } = props as DropdownTriggerProps;\n return (\n <DropdownMenu.Trigger\n asChild\n {...triggerProps}\n className={cn(styles['dropdown-trigger'], className)}\n >\n <div>{children}</div>\n </DropdownMenu.Trigger>\n );\n};\n\nDropdownTrigger.displayName = 'DropdownTrigger';\nDropdown.Trigger = DropdownTrigger;\n\nexport type ArrowProps = {\n showArrow?: boolean;\n};\n\ninterface StyledDropdownContentProps extends DropdownMenu.DropdownMenuContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ninterface StyledDropdownSubContentProps extends DropdownMenu.DropdownMenuSubContentProps {\n children?: ReactNode;\n container?: HTMLElement | null;\n responsivePositioning?: boolean;\n}\n\ntype DropdownContentProps = StyledDropdownContentProps & SubDropdownProps & ArrowProps;\ntype DropdownSubContentProps = StyledDropdownSubContentProps &\n MainDropdownProps &\n ArrowProps;\n\ntype DropdownMenuContentComponent = <T extends ElementType = 'div'>(\n props: ComponentProps<typeof GenericMenuPanel<T>>\n) => ReactNode;\n\nconst _DropdownMenuContent = <T extends ElementType = 'div'>(\n { className, ...props }: ComponentProps<typeof GenericMenuPanel<T>>,\n ref: ComponentPropsWithRef<T>['ref']\n) => (\n <GenericMenuPanel\n ref={ref}\n {...(props as ComponentProps<typeof GenericMenuPanel>)}\n className={cn(styles['dropdown-menu-content'], className)}\n />\n);\n\nconst DropdownMenuContent: DropdownMenuContentComponent =\n forwardRef(_DropdownMenuContent);\n\nconst DropdownContent = ({\n sub,\n children,\n container,\n showArrow,\n responsivePositioning = true,\n ...props\n}: DropdownContentProps | DropdownSubContentProps) => {\n const ContentElement = sub ? DropdownMenu.SubContent : DropdownMenu.Content;\n const inputModalityProps = useInputModality();\n const portalContainer = useResolvedPortalContainer(container);\n\n return (\n <DropdownMenu.Portal container={portalContainer}>\n <DropdownMenuContent\n {...props}\n type=\"dropdown-menu\"\n showArrow={showArrow}\n as={ContentElement}\n sideOffset={4}\n loop\n avoidCollisions={responsivePositioning}\n collisionPadding={responsivePositioning ? 100 : undefined}\n {...inputModalityProps}\n >\n {showArrow && (\n <Arrow\n asChild\n as={DropdownMenu.Arrow}\n width={20}\n height={10}\n >\n <Popover_Arrow />\n </Arrow>\n )}\n {children}\n </DropdownMenuContent>\n </DropdownMenu.Portal>\n );\n};\n\nDropdownContent.displayName = 'DropdownContent';\nDropdown.Content = DropdownContent;\n\nconst DropdownGroup = ({ className, ...props }: DropdownMenu.DropdownMenuGroupProps) => {\n return (\n <DropdownMenu.Group\n {...props}\n className={cn(styles['dropdown-group'], className)}\n />\n );\n};\n\nDropdownGroup.displayName = 'DropdownGroup';\nDropdown.Group = DropdownGroup;\n\n// DropdownMenu.Sub is a context-only Radix primitive that renders no DOM node, so\n// the original styled(DropdownMenu.Sub) border-bottom never applied (the className\n// was dropped). The migration preserves that behavior: no class is forwarded.\nconst DropdownSub = (props: DropdownMenu.DropdownMenuGroupProps) => {\n return <DropdownMenu.Sub {...props} />;\n};\n\nDropdownSub.displayName = 'DropdownSub';\nDropdown.Sub = DropdownSub;\n\ninterface DropdownItemProps extends DropdownMenu.DropdownMenuItemProps {\n /** Icon to display in the menu item */\n icon?: IconName;\n /** The direction of the icon relative to the label */\n iconDir?: HorizontalDirection;\n /** The type of the menu item */\n type?: 'default' | 'danger';\n}\n\nexport type { DropdownItemProps };\n\nconst DropdownItem = ({\n icon,\n iconDir,\n type = 'default',\n children,\n ...props\n}: DropdownItemProps) => {\n return (\n <DropdownMenuItem\n as={DropdownMenu.Item}\n type={type}\n {...props}\n >\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n </DropdownMenuItem>\n );\n};\n\nDropdownItem.displayName = 'DropdownItem';\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"names":["Dropdown","props","_DropdownMenuItem","className","ref","cn","styles","DropdownMenuItem","forwardRef","DropdownTrigger","sub","children","icon","iconDir","menuProps","DropdownMenu","SubTrigger","Icon","triggerProps","displayName","Trigger","_DropdownMenuContent","DropdownMenuContent","DropdownContent","container","showArrow","responsivePositioning","ContentElement","SubContent","Content","inputModalityProps","useInputModality","portalContainer","useResolvedPortalContainer","undefined","Arrow","DropdownGroup","Group","DropdownSub","Sub","DropdownItem","type","Item"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /* stylelint-disable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown -- the original rule used this same
2
+ width fallback chain (100% → -webkit-fill-available → fill-available →
3
+ stretch) so the content fills the available inline space. */
4
+ .ellipsis-content__jsw7w {
5
+ display: inline-block;
6
+ width: 100%;
7
+ width: -webkit-fill-available;
8
+ width: fill-available;
9
+ width: stretch;
10
+ overflow: hidden;
11
+ justify-content: flex-start;
12
+ white-space: nowrap;
13
+ text-overflow: ellipsis;
14
+ vertical-align: text-bottom;
15
+ }
16
+ /* stylelint-enable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown */
17
+
18
+ .ellipsis-content__jsw7w > *:not(button) {
19
+ overflow: hidden;
20
+ text-overflow: ellipsis;
21
+ }
@@ -0,0 +1,6 @@
1
+ const styles = {
2
+ "ellipsis-content": "ellipsis-content__jsw7w"
3
+ };
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=EllipsisContent.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EllipsisContent.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,20 +1,21 @@
1
+ import "./EllipsisContent.css";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { forwardRef } from 'react';
3
4
  import { mergeRefs } from '../../utils/mergeRefs.js';
4
- import { styled } from 'styled-components';
5
+ import { cn } from '../../lib/cva.js';
6
+ import styles from './EllipsisContent.module.css.js';
5
7
 
6
- const EllipsisContainer = styled.div.withConfig({
7
- componentId: "sc-1ibz5fp-0"
8
- })(["display:inline-block;white-space:nowrap;text-overflow:ellipsis;vertical-align:text-bottom;overflow:hidden;justify-content:flex-start;width:100%;width:-webkit-fill-available;width:fill-available;width:stretch;& > *:not(button){overflow:hidden;text-overflow:ellipsis;}"]);
9
8
  const _EllipsisContent = ({
10
9
  component,
10
+ className,
11
11
  ...props
12
12
  }, ref) => {
13
- return /* @__PURE__ */ jsx(EllipsisContainer, { as: component ?? "div", ref: mergeRefs([ref, (node) => {
13
+ const Component = component ?? "div";
14
+ return /* @__PURE__ */ jsx(Component, { ref: mergeRefs([ref, (node) => {
14
15
  if (node && node.scrollWidth > node.clientWidth) {
15
16
  node.title = node.innerText;
16
17
  }
17
- }]), ...props });
18
+ }]), ...props, className: cn(styles["ellipsis-content"], className) });
18
19
  };
19
20
  const EllipsisContent = forwardRef(_EllipsisContent);
20
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/EllipsisContent/EllipsisContent.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { styled } from 'styled-components';\n\nconst EllipsisContainer = styled.div`\n display: inline-block;\n white-space: nowrap;\n text-overflow: ellipsis;\n vertical-align: text-bottom;\n overflow: hidden;\n justify-content: flex-start;\n width: 100%;\n width: -webkit-fill-available;\n width: fill-available;\n width: stretch;\n & > *:not(button) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\nexport interface EllipsisContentProps<T extends ElementType = 'div'> {\n component?: T;\n}\n\ntype EllipsisPolymorphicComponent = <T extends ElementType = 'div'>(\n props: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>\n) => ReactNode;\n\nconst _EllipsisContent = <T extends ElementType = 'div'>(\n {\n component,\n ...props\n }: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>,\n ref: ComponentPropsWithRef<T>['ref']\n) => {\n return (\n <EllipsisContainer\n as={component ?? 'div'}\n ref={mergeRefs([\n ref,\n node => {\n if (node && node.scrollWidth > node.clientWidth) {\n node.title = node.innerText;\n }\n },\n ])}\n {...props}\n />\n );\n};\n\nexport const EllipsisContent: EllipsisPolymorphicComponent = forwardRef(_EllipsisContent);\n"],"names":["EllipsisContainer","styled","div","withConfig","componentId","_EllipsisContent","component","props","ref","mergeRefs","node","scrollWidth","clientWidth","title","innerText","EllipsisContent","forwardRef"],"mappings":";;;;;AAUA,MAAMA,iBAAAA,GAAoBC,MAAAA,CAAOC,GAAAA,CAAGC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,4QAAA,CAAA,CAAA;AAwBpC,MAAMC,mBAAmB,CACvB;AAAA,EACEC,SAAAA;AAAAA,EACA,GAAGC;AAC6E,CAAA,EAClFC,GAAAA,KACG;AACH,EAAA,uBACE,GAAA,CAAC,qBACC,EAAA,EAAIF,SAAAA,IAAa,OACjB,GAAA,EAAKG,SAAAA,CAAU,CACbD,GAAAA,EACAE,CAAAA,IAAAA,KAAQ;AACN,IAAA,IAAIA,IAAAA,IAAQA,IAAAA,CAAKC,WAAAA,GAAcD,IAAAA,CAAKE,WAAAA,EAAa;AAC/CF,MAAAA,IAAAA,CAAKG,QAAQH,IAAAA,CAAKI,SAAAA;AAAAA,IACpB;AAAA,EACF,CAAC,CACF,CAAA,EACD,GAAIP,KAAAA,EAAM,CAAA;AAGhB,CAAA;AAEO,MAAMQ,eAAAA,GAAgDC,WAAWX,gBAAgB;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/EllipsisContent/EllipsisContent.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { mergeRefs } from '@/utils/mergeRefs';\nimport { cn } from '@/lib/cva';\nimport styles from './EllipsisContent.module.css';\n\nexport interface EllipsisContentProps<T extends ElementType = 'div'> {\n component?: T;\n}\n\ntype EllipsisPolymorphicComponent = <T extends ElementType = 'div'>(\n props: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> & EllipsisContentProps<T>\n) => ReactNode;\n\nconst _EllipsisContent = <T extends ElementType = 'div'>(\n {\n component,\n className,\n ...props\n }: Omit<ComponentProps<T>, keyof EllipsisContentProps<T>> &\n EllipsisContentProps<T> & { className?: string },\n ref: ComponentPropsWithRef<T>['ref']\n) => {\n const Component = component ?? 'div';\n return (\n <Component\n ref={mergeRefs([\n ref,\n node => {\n if (node && node.scrollWidth > node.clientWidth) {\n node.title = node.innerText;\n }\n },\n ])}\n {...props}\n className={cn(styles['ellipsis-content'], className)}\n />\n );\n};\n\nexport const EllipsisContent: EllipsisPolymorphicComponent = forwardRef(_EllipsisContent);\n"],"names":["_EllipsisContent","component","className","props","ref","Component","mergeRefs","node","scrollWidth","clientWidth","title","innerText","cn","styles","EllipsisContent","forwardRef"],"mappings":";;;;;;AAmBA,MAAMA,mBAAmB,CACvB;AAAA,EACEC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGC;AAE4C,CAAA,EACjDC,GAAAA,KACG;AACH,EAAA,MAAMC,YAAYJ,SAAAA,IAAa,KAAA;AAC/B,EAAA,2BACG,SAAA,EAAA,EACC,GAAA,EAAKK,SAAAA,CAAU,CACbF,KACAG,CAAAA,IAAAA,KAAQ;AACN,IAAA,IAAIA,IAAAA,IAAQA,IAAAA,CAAKC,WAAAA,GAAcD,IAAAA,CAAKE,WAAAA,EAAa;AAC/CF,MAAAA,IAAAA,CAAKG,QAAQH,IAAAA,CAAKI,SAAAA;AAAAA,IACpB;AAAA,EACF,CAAC,CACF,CAAA,KACGR,KAAAA,EACJ,SAAA,EAAWS,EAAAA,CAAGC,MAAAA,CAAO,kBAAkB,CAAA,EAAGX,SAAS,CAAA,EAAE,CAAA;AAG3D,CAAA;AAEO,MAAMY,eAAAA,GAAgDC,WAAWf,gBAAgB;;;;"}
@@ -0,0 +1,21 @@
1
+ /* Kept at zero specificity via :where() so that downstream styled-components
2
+ overrides on a styled(EmptyButton) (e.g. CrossButton overriding background and
3
+ padding, the Popover/CodeBlock close/copy buttons overriding color and padding)
4
+ win without needing a specificity hack — EmptyButton is a CSS Module, whose
5
+ rules otherwise beat equal-specificity styled-components by source order. */
6
+ :where(.empty-button__1ynA8) {
7
+ padding: 0;
8
+ border: 0;
9
+ background: transparent;
10
+ color: inherit;
11
+ font: inherit;
12
+ outline: none;
13
+ cursor: pointer;
14
+ }
15
+
16
+ /* Also scoped with :where() so the disabled cursor stays at zero specificity
17
+ and a downstream styled(EmptyButton) `&:disabled` override wins naturally,
18
+ rather than tying on specificity and losing to the CSS Module by source order. */
19
+ :where(.empty-button__1ynA8):disabled {
20
+ cursor: not-allowed;
21
+ }
@@ -0,0 +1,6 @@
1
+ const styles = {
2
+ "empty-button": "empty-button__1ynA8"
3
+ };
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=EmptyButton.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyButton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,8 +1,14 @@
1
- import { styled } from 'styled-components';
1
+ import "./EmptyButton.css";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { cn } from '../../lib/cva.js';
5
+ import styles from './EmptyButton.module.css.js';
2
6
 
3
- const EmptyButton = styled.button.withConfig({
4
- componentId: "sc-1noms58-0"
5
- })(["background:transparent;border:none;cursor:pointer;outline:none;padding:0;border:0;color:inherit;font:inherit;&:disabled{cursor:not-allowed;}"]);
7
+ const EmptyButton = forwardRef(({
8
+ className,
9
+ ...props
10
+ }, ref) => /* @__PURE__ */ jsx("button", { ref, ...props, className: cn(styles["empty-button"], className) }));
11
+ EmptyButton.displayName = "EmptyButton";
6
12
 
7
13
  export { EmptyButton };
8
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/EmptyButton/EmptyButton.tsx"],"sourcesContent":["import { styled } from 'styled-components';\n\nexport const EmptyButton = styled.button`\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n padding: 0;\n border: 0;\n color: inherit;\n font: inherit;\n &:disabled {\n cursor: not-allowed;\n }\n`;\n"],"names":["EmptyButton","styled","button","withConfig","componentId"],"mappings":";;AAEO,MAAMA,WAAAA,GAAcC,MAAAA,CAAOC,MAAAA,CAAMC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,8IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/EmptyButton/EmptyButton.tsx"],"sourcesContent":["import { ButtonHTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/lib/cva';\nimport styles from './EmptyButton.module.css';\n\nexport const EmptyButton = forwardRef<\n HTMLButtonElement,\n ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n <button\n ref={ref}\n {...props}\n className={cn(styles['empty-button'], className)}\n />\n));\n\nEmptyButton.displayName = 'EmptyButton';\n"],"names":["EmptyButton","forwardRef","className","props","ref","cn","styles","displayName"],"mappings":";;;;;AAIO,MAAMA,WAAAA,GAAcC,WAGzB,CAAC;AAAA,EAAEC,SAAAA;AAAAA,EAAW,GAAGC;AAAM,CAAA,EAAGC,GAAAA,qBAC1B,GAAA,CAAC,QAAA,EAAA,EACC,GAAA,KACID,KAAAA,EACJ,SAAA,EAAWE,EAAAA,CAAGC,MAAAA,CAAO,cAAc,CAAA,EAAGJ,SAAS,IAElD;AAEDF,WAAAA,CAAYO,WAAAA,GAAc,aAAA;;;;"}