@chayns-ui/core 0.9.2 → 0.10.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 (210) hide show
  1. package/dist/accordion.css +3 -1
  2. package/dist/badge.css +28 -3
  3. package/dist/banner.css +2 -0
  4. package/dist/breadcrumb.css +63 -0
  5. package/dist/button.css +103 -35
  6. package/dist/card.css +39 -0
  7. package/dist/checkbox.css +3 -3
  8. package/dist/combo-box.css +17 -4
  9. package/dist/components/accordion/Accordion.d.ts +3 -4
  10. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  11. package/dist/components/accordion/Accordion.js +37 -23
  12. package/dist/components/accordion/Accordion.js.map +1 -1
  13. package/dist/components/accordion/Accordion.types.d.ts +7 -2
  14. package/dist/components/accordion/Accordion.types.d.ts.map +1 -1
  15. package/dist/components/accordion/Accordion.types.js +7 -1
  16. package/dist/components/accordion/Accordion.types.js.map +1 -1
  17. package/dist/components/accordion-group/AccordionGroup.d.ts.map +1 -1
  18. package/dist/components/accordion-group/AccordionGroup.js +1 -0
  19. package/dist/components/accordion-group/AccordionGroup.js.map +1 -1
  20. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  21. package/dist/components/avatar/Avatar.js +1 -0
  22. package/dist/components/avatar/Avatar.js.map +1 -1
  23. package/dist/components/avatar/Avatar.types.d.ts +9 -1
  24. package/dist/components/avatar/Avatar.types.d.ts.map +1 -1
  25. package/dist/components/avatar/Avatar.types.js +17 -0
  26. package/dist/components/avatar/Avatar.types.js.map +1 -0
  27. package/dist/components/avatar-group/AvatarGroup.d.ts.map +1 -1
  28. package/dist/components/avatar-group/AvatarGroup.js +4 -3
  29. package/dist/components/avatar-group/AvatarGroup.js.map +1 -1
  30. package/dist/components/badge/Badge.d.ts.map +1 -1
  31. package/dist/components/badge/Badge.js +1 -0
  32. package/dist/components/badge/Badge.js.map +1 -1
  33. package/dist/components/badge/Badge.types.d.ts +13 -0
  34. package/dist/components/badge/Badge.types.d.ts.map +1 -1
  35. package/dist/components/badge/Badge.types.js +16 -1
  36. package/dist/components/badge/Badge.types.js.map +1 -1
  37. package/dist/components/banner/Banner.d.ts.map +1 -1
  38. package/dist/components/banner/Banner.js +1 -0
  39. package/dist/components/banner/Banner.js.map +1 -1
  40. package/dist/components/banner/Banner.types.d.ts +7 -0
  41. package/dist/components/banner/Banner.types.d.ts.map +1 -1
  42. package/dist/components/banner/Banner.types.js +9 -1
  43. package/dist/components/banner/Banner.types.js.map +1 -1
  44. package/dist/components/breadcrumb/Breadcrumb.d.ts +4 -0
  45. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -0
  46. package/dist/components/breadcrumb/Breadcrumb.js +35 -0
  47. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -0
  48. package/dist/components/breadcrumb/Breadcrumb.types.d.ts +13 -0
  49. package/dist/components/breadcrumb/Breadcrumb.types.d.ts.map +1 -0
  50. package/dist/components/button/Button.d.ts.map +1 -1
  51. package/dist/components/button/Button.js +1 -0
  52. package/dist/components/button/Button.js.map +1 -1
  53. package/dist/components/button/Button.types.d.ts +7 -0
  54. package/dist/components/button/Button.types.d.ts.map +1 -1
  55. package/dist/components/button/Button.types.js +9 -1
  56. package/dist/components/button/Button.types.js.map +1 -1
  57. package/dist/components/button/button-icon/ButtonIcon.d.ts.map +1 -1
  58. package/dist/components/button/button-icon/ButtonIcon.js +7 -3
  59. package/dist/components/button/button-icon/ButtonIcon.js.map +1 -1
  60. package/dist/components/card/Card.d.ts.map +1 -1
  61. package/dist/components/card/Card.js +2 -0
  62. package/dist/components/card/Card.js.map +1 -1
  63. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  64. package/dist/components/checkbox/Checkbox.js +1 -0
  65. package/dist/components/checkbox/Checkbox.js.map +1 -1
  66. package/dist/components/combo-box/ComboBox.d.ts.map +1 -1
  67. package/dist/components/combo-box/ComboBox.js +83 -13
  68. package/dist/components/combo-box/ComboBox.js.map +1 -1
  69. package/dist/components/date-time-picker/DateTimePicker.d.ts.map +1 -1
  70. package/dist/components/date-time-picker/DateTimePicker.js +31 -239
  71. package/dist/components/date-time-picker/DateTimePicker.js.map +1 -1
  72. package/dist/components/date-time-picker/DateTimePicker.types.d.ts +12 -0
  73. package/dist/components/date-time-picker/DateTimePicker.types.d.ts.map +1 -1
  74. package/dist/components/date-time-picker/DateTimePicker.types.js +15 -1
  75. package/dist/components/date-time-picker/DateTimePicker.types.js.map +1 -1
  76. package/dist/components/date-time-picker/date-time-picker-utils.d.ts +4 -0
  77. package/dist/components/date-time-picker/date-time-picker-utils.d.ts.map +1 -0
  78. package/dist/components/date-time-picker/date-time-picker-utils.js +19 -0
  79. package/dist/components/date-time-picker/date-time-picker-utils.js.map +1 -0
  80. package/dist/components/date-time-picker/hooks/useDateTimePickerValue.d.ts +37 -0
  81. package/dist/components/date-time-picker/hooks/useDateTimePickerValue.d.ts.map +1 -0
  82. package/dist/components/date-time-picker/hooks/useDateTimePickerValue.js +156 -0
  83. package/dist/components/date-time-picker/hooks/useDateTimePickerValue.js.map +1 -0
  84. package/dist/components/date-time-picker/sizer/PickerSizer.d.ts +7 -0
  85. package/dist/components/date-time-picker/sizer/PickerSizer.d.ts.map +1 -0
  86. package/dist/components/date-time-picker/sizer/PickerSizer.js +15 -0
  87. package/dist/components/date-time-picker/sizer/PickerSizer.js.map +1 -0
  88. package/dist/components/date-time-picker/wheel/Wheel.d.ts +14 -0
  89. package/dist/components/date-time-picker/wheel/Wheel.d.ts.map +1 -0
  90. package/dist/components/date-time-picker/wheel/Wheel.js +136 -0
  91. package/dist/components/date-time-picker/wheel/Wheel.js.map +1 -0
  92. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  93. package/dist/components/icon-button/IconButton.js +1 -0
  94. package/dist/components/icon-button/IconButton.js.map +1 -1
  95. package/dist/components/list/List.d.ts +15 -10
  96. package/dist/components/list/List.d.ts.map +1 -1
  97. package/dist/components/list/List.js +19 -7
  98. package/dist/components/list/List.js.map +1 -1
  99. package/dist/components/list/List.types.d.ts +2 -2
  100. package/dist/components/list/List.types.d.ts.map +1 -1
  101. package/dist/components/pagination/Pagination.d.ts +4 -0
  102. package/dist/components/pagination/Pagination.d.ts.map +1 -0
  103. package/dist/components/pagination/Pagination.js +57 -0
  104. package/dist/components/pagination/Pagination.js.map +1 -0
  105. package/dist/components/pagination/Pagination.types.d.ts +15 -0
  106. package/dist/components/pagination/Pagination.types.d.ts.map +1 -0
  107. package/dist/components/pagination/pagination-pages.d.ts +2 -0
  108. package/dist/components/pagination/pagination-pages.d.ts.map +1 -0
  109. package/dist/components/pagination/pagination-pages.js +35 -0
  110. package/dist/components/pagination/pagination-pages.js.map +1 -0
  111. package/dist/components/popup/Popup.d.ts +4 -1
  112. package/dist/components/popup/Popup.d.ts.map +1 -1
  113. package/dist/components/popup/Popup.js +25 -18
  114. package/dist/components/popup/Popup.js.map +1 -1
  115. package/dist/components/popup/PopupList.d.ts +4 -1
  116. package/dist/components/popup/PopupList.d.ts.map +1 -1
  117. package/dist/components/popup/PopupList.js +7 -1
  118. package/dist/components/popup/PopupList.js.map +1 -1
  119. package/dist/components/progress/Progress.d.ts.map +1 -1
  120. package/dist/components/progress/Progress.js +1 -0
  121. package/dist/components/progress/Progress.js.map +1 -1
  122. package/dist/components/progress/Progress.types.d.ts +1 -1
  123. package/dist/components/progress/Progress.types.d.ts.map +1 -1
  124. package/dist/components/radio-group/RadioGroup.d.ts.map +1 -1
  125. package/dist/components/radio-group/RadioGroup.js +2 -0
  126. package/dist/components/radio-group/RadioGroup.js.map +1 -1
  127. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
  128. package/dist/components/segmented-control/SegmentedControl.js +78 -25
  129. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  130. package/dist/components/segmented-control/SegmentedControl.types.d.ts +1 -1
  131. package/dist/components/segmented-control/SegmentedControl.types.d.ts.map +1 -1
  132. package/dist/components/segmented-control/SegmentedControlContext.d.ts +2 -0
  133. package/dist/components/segmented-control/SegmentedControlContext.d.ts.map +1 -1
  134. package/dist/components/segmented-control/SegmentedControlContext.js.map +1 -1
  135. package/dist/components/skeleton/Skeleton.d.ts.map +1 -1
  136. package/dist/components/skeleton/Skeleton.js +1 -0
  137. package/dist/components/skeleton/Skeleton.js.map +1 -1
  138. package/dist/components/skeleton/Skeleton.types.d.ts +6 -0
  139. package/dist/components/skeleton/Skeleton.types.d.ts.map +1 -1
  140. package/dist/components/skeleton/Skeleton.types.js +8 -1
  141. package/dist/components/skeleton/Skeleton.types.js.map +1 -1
  142. package/dist/components/slider/Slider.d.ts +4 -0
  143. package/dist/components/slider/Slider.d.ts.map +1 -0
  144. package/dist/components/slider/Slider.js +61 -0
  145. package/dist/components/slider/Slider.js.map +1 -0
  146. package/dist/components/slider/Slider.types.d.ts +10 -0
  147. package/dist/components/slider/Slider.types.d.ts.map +1 -0
  148. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  149. package/dist/components/spinner/Spinner.js +1 -0
  150. package/dist/components/spinner/Spinner.js.map +1 -1
  151. package/dist/components/split-button/SplitButton.d.ts.map +1 -1
  152. package/dist/components/split-button/SplitButton.js +2 -1
  153. package/dist/components/split-button/SplitButton.js.map +1 -1
  154. package/dist/components/stepper/Stepper.d.ts +4 -0
  155. package/dist/components/stepper/Stepper.d.ts.map +1 -0
  156. package/dist/components/stepper/Stepper.js +60 -0
  157. package/dist/components/stepper/Stepper.js.map +1 -0
  158. package/dist/components/stepper/Stepper.types.d.ts +27 -0
  159. package/dist/components/stepper/Stepper.types.d.ts.map +1 -0
  160. package/dist/components/stepper/Stepper.types.js +25 -0
  161. package/dist/components/stepper/Stepper.types.js.map +1 -0
  162. package/dist/components/stepper/stepper-values.d.ts +6 -0
  163. package/dist/components/stepper/stepper-values.d.ts.map +1 -0
  164. package/dist/components/stepper/stepper-values.js +26 -0
  165. package/dist/components/stepper/stepper-values.js.map +1 -0
  166. package/dist/components/switch/Switch.d.ts.map +1 -1
  167. package/dist/components/switch/Switch.js +1 -0
  168. package/dist/components/switch/Switch.js.map +1 -1
  169. package/dist/components/text-area/TextArea.d.ts.map +1 -1
  170. package/dist/components/text-area/TextArea.js +1 -0
  171. package/dist/components/text-area/TextArea.js.map +1 -1
  172. package/dist/components/text-field/TextField.d.ts.map +1 -1
  173. package/dist/components/text-field/TextField.js +1 -0
  174. package/dist/components/text-field/TextField.js.map +1 -1
  175. package/dist/components/tooltip/Tooltip.d.ts +4 -0
  176. package/dist/components/tooltip/Tooltip.d.ts.map +1 -0
  177. package/dist/components/tooltip/Tooltip.js +75 -0
  178. package/dist/components/tooltip/Tooltip.js.map +1 -0
  179. package/dist/components/tooltip/Tooltip.types.d.ts +12 -0
  180. package/dist/components/tooltip/Tooltip.types.d.ts.map +1 -0
  181. package/dist/components/tooltip/hooks/useTooltipInteraction.d.ts +11 -0
  182. package/dist/components/tooltip/hooks/useTooltipInteraction.d.ts.map +1 -0
  183. package/dist/components/tooltip/hooks/useTooltipInteraction.js +59 -0
  184. package/dist/components/tooltip/hooks/useTooltipInteraction.js.map +1 -0
  185. package/dist/components/tooltip/tooltip-trigger-props.d.ts +4 -0
  186. package/dist/components/tooltip/tooltip-trigger-props.d.ts.map +1 -0
  187. package/dist/components/tooltip/tooltip-trigger-props.js +25 -0
  188. package/dist/components/tooltip/tooltip-trigger-props.js.map +1 -0
  189. package/dist/date-time-picker.css +33 -2
  190. package/dist/hooks/useOverlayPosition.d.ts +4 -0
  191. package/dist/hooks/useOverlayPosition.d.ts.map +1 -0
  192. package/dist/hooks/useOverlayPosition.js +60 -0
  193. package/dist/hooks/useOverlayPosition.js.map +1 -0
  194. package/dist/index.d.ts +21 -7
  195. package/dist/index.d.ts.map +1 -1
  196. package/dist/index.js +14 -7
  197. package/dist/pagination.css +54 -0
  198. package/dist/popup.css +4 -0
  199. package/dist/progress.css +1 -1
  200. package/dist/segmented-control.css +2 -0
  201. package/dist/slider.css +109 -0
  202. package/dist/split-button.css +2 -79
  203. package/dist/stepper.css +77 -0
  204. package/dist/styles.css +5 -0
  205. package/dist/tooltip.css +68 -0
  206. package/dist/utils/native-ref.d.ts +4 -0
  207. package/dist/utils/native-ref.d.ts.map +1 -0
  208. package/dist/utils/native-ref.js +24 -0
  209. package/dist/utils/native-ref.js.map +1 -0
  210. package/package.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport type { TextFieldProps } from './TextField.types.js';\n\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n { className, counter, error, helpText, id, placeholder, ...inputProps },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${inputId}-help` : undefined;\n const errorId = hasError ? `${inputId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const inputClassName = ['chayns-text-field__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-field${hasError ? ' chayns-text-field--error' : ''}`}>\n <input\n {...inputProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={inputClassName}\n id={inputId}\n placeholder={placeholder === undefined ? undefined : ' '}\n ref={ref}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-field__label\" htmlFor={inputId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-field__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-field__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default TextField;\n"],"mappings":";;;AAIA,IAAM,YAAY,WAA6C,SAAS,UACtE,EAAE,WAAW,SAAS,OAAO,UAAU,IAAI,aAAa,GAAG,cAC3D,KACA;CACA,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM;CACtB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,QAAQ,SAAS,KAAA;CAC5D,MAAM,UAAU,WAAW,GAAG,QAAQ,UAAU,KAAA;CAChD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,iBAAiB,CAAC,4BAA4B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEvF,OACE,qBAAC,OAAD;EAAK,WAAW,oBAAoB,WAAW,8BAA8B;EAA7E,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;IAChD;GACN,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA2B,SAAS;IAClD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA2B,IAAI;KAC3C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET,CAAC"}
1
+ {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport type { TextFieldProps } from './TextField.types.js';\n\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n { className, counter, error, helpText, id, placeholder, ...inputProps },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${inputId}-help` : undefined;\n const errorId = hasError ? `${inputId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const inputClassName = ['chayns-text-field__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-field${hasError ? ' chayns-text-field--error' : ''}`}>\n <input\n {...inputProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={inputClassName}\n id={inputId}\n placeholder={placeholder === undefined ? undefined : ' '}\n ref={ref}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-field__label\" htmlFor={inputId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-field__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-field__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n});\n\nTextField.displayName = 'TextField';\n\nexport default TextField;\n"],"mappings":";;;AAIA,IAAM,YAAY,WAA6C,SAAS,UACtE,EAAE,WAAW,SAAS,OAAO,UAAU,IAAI,aAAa,GAAG,cAC3D,KACA;CACA,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM;CACtB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,QAAQ,SAAS,KAAA;CAC5D,MAAM,UAAU,WAAW,GAAG,QAAQ,UAAU,KAAA;CAChD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,iBAAiB,CAAC,4BAA4B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEvF,OACE,qBAAC,OAAD;EAAK,WAAW,oBAAoB,WAAW,8BAA8B;EAA7E,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;IAChD;GACN,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA2B,SAAS;IAClD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA2B,IAAI;KAC3C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET,CAAC;AAED,UAAU,cAAc"}
@@ -0,0 +1,4 @@
1
+ import type { TooltipProps } from './Tooltip.types.js';
2
+ declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLElement>>;
3
+ export default Tooltip;
4
+ //# sourceMappingURL=Tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AAK5E,QAAA,MAAM,OAAO,sGAiFX,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { composeNativeRefs } from "../../utils/native-ref.js";
2
+ import { useOverlayPosition } from "../../hooks/useOverlayPosition.js";
3
+ import { useTooltipInteraction } from "./hooks/useTooltipInteraction.js";
4
+ import { tooltipTriggerProps } from "./tooltip-trigger-props.js";
5
+ import { Fragment, cloneElement, forwardRef, isValidElement, useId, useMemo, useRef, useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ import { createPortal } from "react-dom";
8
+ //#region src/components/tooltip/Tooltip.tsx
9
+ var ANCHOR_GAP = 9;
10
+ var Tooltip = forwardRef(function Tooltip({ children, content, ...nativeProps }, ref) {
11
+ const id = useId();
12
+ const [trigger, setTrigger] = useState(null);
13
+ const surface = useRef(null);
14
+ const interaction = useTooltipInteraction(trigger, surface);
15
+ useOverlayPosition(surface, trigger, interaction.open, "top", ANCHOR_GAP);
16
+ const child = isValidElement(children) ? children : void 0;
17
+ const descriptorRef = child ? Object.getOwnPropertyDescriptor(child, "ref")?.value : void 0;
18
+ const childRef = child?.props.ref ?? descriptorRef;
19
+ const mergedRef = useMemo(() => composeNativeRefs(childRef, setTrigger, ref), [childRef, ref]);
20
+ if (!child || child.type === Fragment || child.props.disabled) throw new Error("Tooltip requires one enabled ref-/native-prop-capable trigger element.");
21
+ const props = tooltipTriggerProps(child.props, nativeProps);
22
+ const description = [...new Set([
23
+ child.props["aria-describedby"],
24
+ nativeProps["aria-describedby"],
25
+ id
26
+ ].filter(Boolean).flatMap((value) => value?.split(/\s+/) ?? []))].join(" ");
27
+ const triggerProps = {
28
+ ...props,
29
+ ref: mergedRef,
30
+ "aria-describedby": description,
31
+ onPointerEnter: (event) => {
32
+ props.onPointerEnter?.(event);
33
+ if (!event.defaultPrevented) interaction.enter();
34
+ },
35
+ onPointerLeave: (event) => {
36
+ props.onPointerLeave?.(event);
37
+ if (!event.defaultPrevented) interaction.leave(event.relatedTarget);
38
+ },
39
+ onFocus: (event) => {
40
+ props.onFocus?.(event);
41
+ if (!event.defaultPrevented) interaction.focus();
42
+ },
43
+ onBlur: (event) => {
44
+ props.onBlur?.(event);
45
+ if (!event.defaultPrevented) interaction.blur();
46
+ },
47
+ onClick: (event) => {
48
+ props.onClick?.(event);
49
+ if (!event.defaultPrevented) interaction.enter();
50
+ },
51
+ onKeyDown: (event) => {
52
+ props.onKeyDown?.(event);
53
+ if (!event.defaultPrevented && interaction.open && event.key === "Escape") {
54
+ event.preventDefault();
55
+ event.stopPropagation();
56
+ interaction.dismiss();
57
+ }
58
+ }
59
+ };
60
+ const triggerElement = cloneElement(child, triggerProps);
61
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [triggerElement, trigger && typeof document !== "undefined" ? createPortal(/* @__PURE__ */ jsx("span", {
62
+ "aria-hidden": !interaction.open,
63
+ className: `chayns-tooltip${interaction.open ? " chayns-tooltip--open" : ""}`,
64
+ id,
65
+ onPointerLeave: (event) => interaction.leave(event.relatedTarget),
66
+ ref: surface,
67
+ role: "tooltip",
68
+ children: content
69
+ }), document.body) : null] });
70
+ });
71
+ Tooltip.displayName = "Tooltip";
72
+ //#endregion
73
+ export { Tooltip as default };
74
+
75
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","names":[],"sources":["../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n Fragment,\n isValidElement,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Ref } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useOverlayPosition } from '../../hooks/useOverlayPosition.js';\nimport { composeNativeRefs } from '../../utils/native-ref.js';\nimport { useTooltipInteraction } from './hooks/useTooltipInteraction.js';\nimport { tooltipTriggerProps } from './tooltip-trigger-props.js';\nimport type { TooltipProps, TooltipTriggerProps } from './Tooltip.types.js';\n\n// Fixed anchor gap in the verified Bodywork .tipbox reference.\nconst ANCHOR_GAP = 9;\n\nconst Tooltip = forwardRef<HTMLElement, TooltipProps>(function Tooltip(\n { children, content, ...nativeProps },\n ref,\n) {\n const id = useId();\n const [trigger, setTrigger] = useState<HTMLElement | null>(null);\n const surface = useRef<HTMLSpanElement>(null);\n const interaction = useTooltipInteraction(trigger, surface);\n useOverlayPosition(surface, trigger, interaction.open, 'top', ANCHOR_GAP);\n\n const child = isValidElement<TooltipTriggerProps>(children) ? children : undefined;\n const descriptorRef = child\n ? (Object.getOwnPropertyDescriptor(child, 'ref')?.value as Ref<HTMLElement> | undefined)\n : undefined;\n const childRef = child?.props.ref ?? descriptorRef;\n const mergedRef = useMemo(() => composeNativeRefs(childRef, setTrigger, ref), [childRef, ref]);\n if (!child || child.type === Fragment || child.props.disabled)\n throw new Error('Tooltip requires one enabled ref-/native-prop-capable trigger element.');\n\n const props = tooltipTriggerProps(child.props, nativeProps);\n const description = [\n ...new Set(\n [child.props['aria-describedby'], nativeProps['aria-describedby'], id]\n .filter(Boolean)\n .flatMap((value) => value?.split(/\\s+/) ?? []),\n ),\n ].join(' ');\n const triggerProps: TooltipTriggerProps = {\n ...props,\n ref: mergedRef,\n 'aria-describedby': description,\n onPointerEnter: (event) => {\n props.onPointerEnter?.(event);\n if (!event.defaultPrevented) interaction.enter();\n },\n onPointerLeave: (event) => {\n props.onPointerLeave?.(event);\n if (!event.defaultPrevented) interaction.leave(event.relatedTarget);\n },\n onFocus: (event) => {\n props.onFocus?.(event);\n if (!event.defaultPrevented) interaction.focus();\n },\n onBlur: (event) => {\n props.onBlur?.(event);\n if (!event.defaultPrevented) interaction.blur();\n },\n onClick: (event) => {\n props.onClick?.(event);\n if (!event.defaultPrevented) interaction.enter();\n },\n onKeyDown: (event) => {\n props.onKeyDown?.(event);\n if (!event.defaultPrevented && interaction.open && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n interaction.dismiss();\n }\n },\n };\n const triggerElement = cloneElement(child, triggerProps);\n return (\n <>\n {triggerElement}\n {trigger && typeof document !== 'undefined'\n ? createPortal(\n <span\n aria-hidden={!interaction.open}\n className={`chayns-tooltip${interaction.open ? ' chayns-tooltip--open' : ''}`}\n id={id}\n onPointerLeave={(event) => interaction.leave(event.relatedTarget)}\n ref={surface}\n role=\"tooltip\"\n >\n {content}\n </span>,\n document.body,\n )\n : null}\n </>\n );\n});\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;\n"],"mappings":";;;;;;;;AAmBA,IAAM,aAAa;AAEnB,IAAM,UAAU,WAAsC,SAAS,QAC7D,EAAE,UAAU,SAAS,GAAG,eACxB,KACA;CACA,MAAM,KAAK,MAAM;CACjB,MAAM,CAAC,SAAS,cAAc,SAA6B,IAAI;CAC/D,MAAM,UAAU,OAAwB,IAAI;CAC5C,MAAM,cAAc,sBAAsB,SAAS,OAAO;CAC1D,mBAAmB,SAAS,SAAS,YAAY,MAAM,OAAO,UAAU;CAExE,MAAM,QAAQ,eAAoC,QAAQ,IAAI,WAAW,KAAA;CACzE,MAAM,gBAAgB,QACjB,OAAO,yBAAyB,OAAO,KAAK,CAAC,EAAE,QAChD,KAAA;CACJ,MAAM,WAAW,OAAO,MAAM,OAAO;CACrC,MAAM,YAAY,cAAc,kBAAkB,UAAU,YAAY,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC;CAC7F,IAAI,CAAC,SAAS,MAAM,SAAS,YAAY,MAAM,MAAM,UACnD,MAAM,IAAI,MAAM,wEAAwE;CAE1F,MAAM,QAAQ,oBAAoB,MAAM,OAAO,WAAW;CAC1D,MAAM,cAAc,CAClB,GAAG,IAAI,IACL;EAAC,MAAM,MAAM;EAAqB,YAAY;EAAqB;CAAE,CAAC,CACnE,OAAO,OAAO,CAAC,CACf,SAAS,UAAU,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CACjD,CACF,CAAC,CAAC,KAAK,GAAG;CACV,MAAM,eAAoC;EACxC,GAAG;EACH,KAAK;EACL,oBAAoB;EACpB,iBAAiB,UAAU;GACzB,MAAM,iBAAiB,KAAK;GAC5B,IAAI,CAAC,MAAM,kBAAkB,YAAY,MAAM;EACjD;EACA,iBAAiB,UAAU;GACzB,MAAM,iBAAiB,KAAK;GAC5B,IAAI,CAAC,MAAM,kBAAkB,YAAY,MAAM,MAAM,aAAa;EACpE;EACA,UAAU,UAAU;GAClB,MAAM,UAAU,KAAK;GACrB,IAAI,CAAC,MAAM,kBAAkB,YAAY,MAAM;EACjD;EACA,SAAS,UAAU;GACjB,MAAM,SAAS,KAAK;GACpB,IAAI,CAAC,MAAM,kBAAkB,YAAY,KAAK;EAChD;EACA,UAAU,UAAU;GAClB,MAAM,UAAU,KAAK;GACrB,IAAI,CAAC,MAAM,kBAAkB,YAAY,MAAM;EACjD;EACA,YAAY,UAAU;GACpB,MAAM,YAAY,KAAK;GACvB,IAAI,CAAC,MAAM,oBAAoB,YAAY,QAAQ,MAAM,QAAQ,UAAU;IACzE,MAAM,eAAe;IACrB,MAAM,gBAAgB;IACtB,YAAY,QAAQ;GACtB;EACF;CACF;CACA,MAAM,iBAAiB,aAAa,OAAO,YAAY;CACvD,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,gBACA,WAAW,OAAO,aAAa,cAC5B,aACE,oBAAC,QAAD;EACE,eAAa,CAAC,YAAY;EAC1B,WAAW,iBAAiB,YAAY,OAAO,0BAA0B;EACrE;EACJ,iBAAiB,UAAU,YAAY,MAAM,MAAM,aAAa;EAChE,KAAK;EACL,MAAK;EAEJ,UAAA;CACG,CAAA,GACN,SAAS,IACX,IACA,IACJ,EAAA,CAAA;AAEN,CAAC;AACD,QAAQ,cAAc"}
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes, ReactElement, ReactNode, Ref } from 'react';
2
+ export interface TooltipTriggerProps extends HTMLAttributes<HTMLElement> {
3
+ ref?: Ref<HTMLElement>;
4
+ disabled?: boolean;
5
+ }
6
+ /** Explains one existing enabled trigger without changing its native action. */
7
+ export interface TooltipProps extends Omit<HTMLAttributes<HTMLElement>, 'children' | 'content'> {
8
+ children: ReactElement<TooltipTriggerProps>;
9
+ /** Already localized non-interactive explanation; never essential instructions or actions. */
10
+ content: ReactNode;
11
+ }
12
+ //# sourceMappingURL=Tooltip.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.types.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACtE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7F,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC5C,8FAA8F;IAC9F,OAAO,EAAE,SAAS,CAAC;CACpB"}
@@ -0,0 +1,11 @@
1
+ import type { RefObject } from 'react';
2
+ /** Tracks focus/hover independently, including Escape suppression and outside dismissal. */
3
+ export declare function useTooltipInteraction(trigger: HTMLElement | null, surface: RefObject<HTMLSpanElement | null>): {
4
+ open: boolean;
5
+ enter: () => void;
6
+ leave: (relatedTarget: EventTarget | null) => void;
7
+ focus: () => void;
8
+ blur: () => void;
9
+ dismiss: () => void;
10
+ };
11
+ //# sourceMappingURL=useTooltipInteraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTooltipInteraction.d.ts","sourceRoot":"","sources":["../../../../src/components/tooltip/hooks/useTooltipInteraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,4FAA4F;AAC5F,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,OAAO,EAAE,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;;;2BAQZ,WAAW,GAAG,IAAI;;;;EAuCjD"}
@@ -0,0 +1,59 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ //#region src/components/tooltip/hooks/useTooltipInteraction.ts
3
+ /** Tracks focus/hover independently, including Escape suppression and outside dismissal. */
4
+ function useTooltipInteraction(trigger, surface) {
5
+ const [open, setOpen] = useState(false);
6
+ const focused = useRef(false);
7
+ function enter() {
8
+ setOpen(true);
9
+ }
10
+ function leave(relatedTarget) {
11
+ if (relatedTarget instanceof Node && (surface.current?.contains(relatedTarget) || trigger?.contains(relatedTarget))) return;
12
+ if (!focused.current) setOpen(false);
13
+ }
14
+ function dismiss() {
15
+ setOpen(false);
16
+ }
17
+ function focus() {
18
+ focused.current = true;
19
+ enter();
20
+ }
21
+ function blur() {
22
+ focused.current = false;
23
+ setOpen(false);
24
+ }
25
+ useEffect(() => {
26
+ if (!open) return void 0;
27
+ function keyDown(event) {
28
+ if (event.key !== "Escape" || event.defaultPrevented) return;
29
+ setOpen(false);
30
+ }
31
+ function pointerDown(event) {
32
+ if (event.defaultPrevented || !(event.target instanceof Node)) return;
33
+ if (trigger?.contains(event.target) || surface.current?.contains(event.target)) return;
34
+ setOpen(false);
35
+ }
36
+ document.addEventListener("keydown", keyDown);
37
+ document.addEventListener("pointerdown", pointerDown);
38
+ return () => {
39
+ document.removeEventListener("keydown", keyDown);
40
+ document.removeEventListener("pointerdown", pointerDown);
41
+ };
42
+ }, [
43
+ open,
44
+ surface,
45
+ trigger
46
+ ]);
47
+ return {
48
+ open,
49
+ enter,
50
+ leave,
51
+ focus,
52
+ blur,
53
+ dismiss
54
+ };
55
+ }
56
+ //#endregion
57
+ export { useTooltipInteraction };
58
+
59
+ //# sourceMappingURL=useTooltipInteraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTooltipInteraction.js","names":[],"sources":["../../../../src/components/tooltip/hooks/useTooltipInteraction.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { RefObject } from 'react';\n\n/** Tracks focus/hover independently, including Escape suppression and outside dismissal. */\nexport function useTooltipInteraction(\n trigger: HTMLElement | null,\n surface: RefObject<HTMLSpanElement | null>,\n) {\n const [open, setOpen] = useState(false);\n const focused = useRef(false);\n\n function enter() {\n setOpen(true);\n }\n function leave(relatedTarget: EventTarget | null) {\n if (\n relatedTarget instanceof Node &&\n (surface.current?.contains(relatedTarget) || trigger?.contains(relatedTarget))\n )\n return;\n if (!focused.current) setOpen(false);\n }\n function dismiss() {\n setOpen(false);\n }\n function focus() {\n focused.current = true;\n enter();\n }\n function blur() {\n focused.current = false;\n setOpen(false);\n }\n\n useEffect(() => {\n if (!open) return undefined;\n function keyDown(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n setOpen(false);\n }\n function pointerDown(event: PointerEvent) {\n if (event.defaultPrevented || !(event.target instanceof Node)) return;\n if (trigger?.contains(event.target) || surface.current?.contains(event.target)) return;\n setOpen(false);\n }\n document.addEventListener('keydown', keyDown);\n document.addEventListener('pointerdown', pointerDown);\n return () => {\n document.removeEventListener('keydown', keyDown);\n document.removeEventListener('pointerdown', pointerDown);\n };\n }, [open, surface, trigger]);\n return { open, enter, leave, focus, blur, dismiss };\n}\n"],"mappings":";;;AAIA,SAAgB,sBACd,SACA,SACA;CACA,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,MAAM,UAAU,OAAO,KAAK;CAE5B,SAAS,QAAQ;EACf,QAAQ,IAAI;CACd;CACA,SAAS,MAAM,eAAmC;EAChD,IACE,yBAAyB,SACxB,QAAQ,SAAS,SAAS,aAAa,KAAK,SAAS,SAAS,aAAa,IAE5E;EACF,IAAI,CAAC,QAAQ,SAAS,QAAQ,KAAK;CACrC;CACA,SAAS,UAAU;EACjB,QAAQ,KAAK;CACf;CACA,SAAS,QAAQ;EACf,QAAQ,UAAU;EAClB,MAAM;CACR;CACA,SAAS,OAAO;EACd,QAAQ,UAAU;EAClB,QAAQ,KAAK;CACf;CAEA,gBAAgB;EACd,IAAI,CAAC,MAAM,OAAO,KAAA;EAClB,SAAS,QAAQ,OAAsB;GACrC,IAAI,MAAM,QAAQ,YAAY,MAAM,kBAAkB;GACtD,QAAQ,KAAK;EACf;EACA,SAAS,YAAY,OAAqB;GACxC,IAAI,MAAM,oBAAoB,EAAE,MAAM,kBAAkB,OAAO;GAC/D,IAAI,SAAS,SAAS,MAAM,MAAM,KAAK,QAAQ,SAAS,SAAS,MAAM,MAAM,GAAG;GAChF,QAAQ,KAAK;EACf;EACA,SAAS,iBAAiB,WAAW,OAAO;EAC5C,SAAS,iBAAiB,eAAe,WAAW;EACpD,aAAa;GACX,SAAS,oBAAoB,WAAW,OAAO;GAC/C,SAAS,oBAAoB,eAAe,WAAW;EACzD;CACF,GAAG;EAAC;EAAM;EAAS;CAAO,CAAC;CAC3B,OAAO;EAAE;EAAM;EAAO;EAAO;EAAO;EAAM;CAAQ;AACpD"}
@@ -0,0 +1,4 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ /** Preserve child listeners before outer listeners for every shared native event. */
3
+ export declare function tooltipTriggerProps(child: HTMLAttributes<HTMLElement>, outer: HTMLAttributes<HTMLElement>): HTMLAttributes<HTMLElement>;
4
+ //# sourceMappingURL=tooltip-trigger-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-trigger-props.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip-trigger-props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,OAAO,CAAC;AAI5D,qFAAqF;AACrF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,EAClC,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,GAcjB,cAAc,CAAC,WAAW,CAAC,CAC7C"}
@@ -0,0 +1,25 @@
1
+ //#region src/components/tooltip/tooltip-trigger-props.ts
2
+ /** Preserve child listeners before outer listeners for every shared native event. */
3
+ function tooltipTriggerProps(child, outer) {
4
+ const merged = {
5
+ ...child,
6
+ ...outer
7
+ };
8
+ for (const [name, listener] of Object.entries(outer)) {
9
+ const previous = child[name];
10
+ if (/^on[A-Z]/.test(name) && typeof previous === "function" && typeof listener === "function") merged[name] = (event) => {
11
+ previous(event);
12
+ if (!event.defaultPrevented) listener(event);
13
+ };
14
+ }
15
+ merged.className = [child.className, outer.className].filter(Boolean).join(" ") || void 0;
16
+ merged.style = {
17
+ ...child.style,
18
+ ...outer.style
19
+ };
20
+ return merged;
21
+ }
22
+ //#endregion
23
+ export { tooltipTriggerProps };
24
+
25
+ //# sourceMappingURL=tooltip-trigger-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-trigger-props.js","names":[],"sources":["../../../src/components/tooltip/tooltip-trigger-props.ts"],"sourcesContent":["import type { HTMLAttributes, SyntheticEvent } from 'react';\n\ntype Handler = (event: SyntheticEvent<HTMLElement>) => void;\n\n/** Preserve child listeners before outer listeners for every shared native event. */\nexport function tooltipTriggerProps(\n child: HTMLAttributes<HTMLElement>,\n outer: HTMLAttributes<HTMLElement>,\n) {\n const merged: Record<string, unknown> = { ...child, ...outer };\n for (const [name, listener] of Object.entries(outer)) {\n const previous = (child as Record<string, unknown>)[name];\n if (/^on[A-Z]/.test(name) && typeof previous === 'function' && typeof listener === 'function') {\n merged[name] = (event: SyntheticEvent<HTMLElement>) => {\n (previous as Handler)(event);\n if (!event.defaultPrevented) (listener as Handler)(event);\n };\n }\n }\n merged.className = [child.className, outer.className].filter(Boolean).join(' ') || undefined;\n merged.style = { ...child.style, ...outer.style };\n return merged as HTMLAttributes<HTMLElement>;\n}\n"],"mappings":";;AAKA,SAAgB,oBACd,OACA,OACA;CACA,MAAM,SAAkC;EAAE,GAAG;EAAO,GAAG;CAAM;CAC7D,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,KAAK,GAAG;EACpD,MAAM,WAAY,MAAkC;EACpD,IAAI,WAAW,KAAK,IAAI,KAAK,OAAO,aAAa,cAAc,OAAO,aAAa,YACjF,OAAO,SAAS,UAAuC;GACrD,SAAsB,KAAK;GAC3B,IAAI,CAAC,MAAM,kBAAkB,SAAsB,KAAK;EAC1D;CAEJ;CACA,OAAO,YAAY,CAAC,MAAM,WAAW,MAAM,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnF,OAAO,QAAQ;EAAE,GAAG,MAAM;EAAO,GAAG,MAAM;CAAM;CAChD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  @layer chayns.components {
2
2
  .chayns-date-time-picker {
3
- display: inline-block;
3
+ display: inline-grid;
4
4
  max-inline-size: 100%;
5
5
  position: relative;
6
6
  }
@@ -11,6 +11,8 @@
11
11
 
12
12
  .chayns-date-time-picker__trigger {
13
13
  box-sizing: border-box;
14
+ grid-area: 1 / 1;
15
+ inline-size: 100%;
14
16
  max-inline-size: 100%;
15
17
  min-block-size: calc(1.2em + 2 * var(--input-py) + 3px);
16
18
  padding: var(--input-py) var(--input-px);
@@ -25,6 +27,21 @@
25
27
  text-align: start;
26
28
  }
27
29
 
30
+ .chayns-date-time-picker__sizer {
31
+ display: grid;
32
+ grid-area: 1 / 1;
33
+ visibility: hidden;
34
+ white-space: nowrap;
35
+ }
36
+
37
+ .chayns-date-time-picker__sizer > span {
38
+ grid-area: 1 / 1;
39
+ padding: var(--input-py) var(--input-px);
40
+ border: 1.5px solid transparent;
41
+ font: inherit;
42
+ line-height: 1.2;
43
+ }
44
+
28
45
  .chayns-date-time-picker__trigger:focus-visible {
29
46
  border-color: var(--accent);
30
47
  box-shadow: 0 0 0 var(--focus-ring-size)
@@ -53,10 +70,13 @@
53
70
  }
54
71
 
55
72
  .chayns-date-time-picker__popup {
73
+ box-sizing: border-box;
56
74
  position: absolute;
57
75
  inset-block-start: calc(100% + var(--k4));
58
- inset-inline: 0;
76
+ inset-inline-start: 0;
59
77
  z-index: var(--z-popover);
78
+ inline-size: max-content;
79
+ min-inline-size: 100%;
60
80
  overflow: hidden;
61
81
  padding: var(--k8);
62
82
  border: 1px solid var(--border);
@@ -118,4 +138,15 @@
118
138
  transform-origin: center;
119
139
  transform-style: preserve-3d;
120
140
  }
141
+
142
+ .chayns-date-time-picker--date .chayns-date-time-picker__wheel {
143
+ flex: 0 0 auto;
144
+ min-inline-size: max-content;
145
+ }
146
+
147
+ .chayns-date-time-picker--date .chayns-date-time-picker__wheel-option {
148
+ inline-size: max-content;
149
+ min-inline-size: 100%;
150
+ padding-inline: var(--k8);
151
+ }
121
152
  }
@@ -0,0 +1,4 @@
1
+ import type { RefObject } from 'react';
2
+ /** Positions a non-modal surface at its trigger and keeps it inside the viewport. */
3
+ export declare function useOverlayPosition(surfaceRef: RefObject<HTMLElement | null>, trigger: HTMLElement | null, open: boolean, placement?: 'bottom' | 'top', gap?: number): void;
4
+ //# sourceMappingURL=useOverlayPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../src/hooks/useOverlayPosition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,qFAAqF;AACrF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,IAAI,EAAE,OAAO,EACb,SAAS,GAAE,QAAQ,GAAG,KAAgB,EACtC,GAAG,SAAI,QAyDR"}
@@ -0,0 +1,60 @@
1
+ import { useEffect } from "react";
2
+ //#region src/hooks/useOverlayPosition.ts
3
+ /** Positions a non-modal surface at its trigger and keeps it inside the viewport. */
4
+ function useOverlayPosition(surfaceRef, trigger, open, placement = "bottom", gap = 0) {
5
+ useEffect(() => {
6
+ const surface = surfaceRef.current;
7
+ if (!open || surface === null || trigger === null) return void 0;
8
+ let frame;
9
+ function update() {
10
+ if (surface === null || trigger === null) return;
11
+ const anchor = trigger.getBoundingClientRect();
12
+ surface.style.maxWidth = `${window.innerWidth}px`;
13
+ surface.style.maxHeight = `${window.innerHeight}px`;
14
+ const size = surface.getBoundingClientRect();
15
+ const above = anchor.top - gap - size.height;
16
+ const below = anchor.bottom + gap;
17
+ const fitsAbove = above >= 0;
18
+ const fitsBelow = below + size.height <= window.innerHeight;
19
+ let top = below;
20
+ if (placement === "top") {
21
+ if (fitsAbove || !fitsBelow) top = above;
22
+ } else if (!fitsBelow && fitsAbove) top = above;
23
+ const left = placement === "top" ? anchor.left + (anchor.width - size.width) / 2 : anchor.left;
24
+ surface.style.top = `${Math.max(0, Math.min(top, window.innerHeight - size.height))}px`;
25
+ const resolvedLeft = Math.max(0, Math.min(left, window.innerWidth - size.width));
26
+ surface.style.left = `${resolvedLeft}px`;
27
+ surface.style.setProperty("--chayns-overlay-anchor-x", `${anchor.left + anchor.width / 2 - resolvedLeft}px`);
28
+ surface.dataset.placement = top === above ? "top" : "bottom";
29
+ }
30
+ function scheduleUpdate() {
31
+ if (frame !== void 0) return;
32
+ frame = window.requestAnimationFrame(() => {
33
+ frame = void 0;
34
+ update();
35
+ });
36
+ }
37
+ update();
38
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(scheduleUpdate);
39
+ observer?.observe(surface);
40
+ observer?.observe(trigger);
41
+ window.addEventListener("resize", scheduleUpdate);
42
+ window.addEventListener("scroll", scheduleUpdate, true);
43
+ return () => {
44
+ if (frame !== void 0) window.cancelAnimationFrame(frame);
45
+ observer?.disconnect();
46
+ window.removeEventListener("resize", scheduleUpdate);
47
+ window.removeEventListener("scroll", scheduleUpdate, true);
48
+ };
49
+ }, [
50
+ gap,
51
+ open,
52
+ placement,
53
+ surfaceRef,
54
+ trigger
55
+ ]);
56
+ }
57
+ //#endregion
58
+ export { useOverlayPosition };
59
+
60
+ //# sourceMappingURL=useOverlayPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayPosition.js","names":[],"sources":["../../src/hooks/useOverlayPosition.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport type { RefObject } from 'react';\n\n/** Positions a non-modal surface at its trigger and keeps it inside the viewport. */\nexport function useOverlayPosition(\n surfaceRef: RefObject<HTMLElement | null>,\n trigger: HTMLElement | null,\n open: boolean,\n placement: 'bottom' | 'top' = 'bottom',\n gap = 0,\n) {\n useEffect(() => {\n const surface = surfaceRef.current;\n if (!open || surface === null || trigger === null) return undefined;\n\n let frame: number | undefined;\n function update() {\n if (surface === null || trigger === null) return;\n const anchor = trigger.getBoundingClientRect();\n surface.style.maxWidth = `${window.innerWidth}px`;\n surface.style.maxHeight = `${window.innerHeight}px`;\n const size = surface.getBoundingClientRect();\n const above = anchor.top - gap - size.height;\n const below = anchor.bottom + gap;\n const fitsAbove = above >= 0;\n const fitsBelow = below + size.height <= window.innerHeight;\n let top = below;\n if (placement === 'top') {\n if (fitsAbove || !fitsBelow) top = above;\n } else if (!fitsBelow && fitsAbove) {\n top = above;\n }\n const left =\n placement === 'top' ? anchor.left + (anchor.width - size.width) / 2 : anchor.left;\n surface.style.top = `${Math.max(0, Math.min(top, window.innerHeight - size.height))}px`;\n const resolvedLeft = Math.max(0, Math.min(left, window.innerWidth - size.width));\n surface.style.left = `${resolvedLeft}px`;\n surface.style.setProperty(\n '--chayns-overlay-anchor-x',\n `${anchor.left + anchor.width / 2 - resolvedLeft}px`,\n );\n surface.dataset.placement = top === above ? 'top' : 'bottom';\n }\n\n function scheduleUpdate() {\n if (frame !== undefined) return;\n frame = window.requestAnimationFrame(() => {\n frame = undefined;\n update();\n });\n }\n\n update();\n const observer =\n typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(scheduleUpdate);\n observer?.observe(surface);\n observer?.observe(trigger);\n window.addEventListener('resize', scheduleUpdate);\n window.addEventListener('scroll', scheduleUpdate, true);\n return () => {\n if (frame !== undefined) window.cancelAnimationFrame(frame);\n observer?.disconnect();\n window.removeEventListener('resize', scheduleUpdate);\n window.removeEventListener('scroll', scheduleUpdate, true);\n };\n }, [gap, open, placement, surfaceRef, trigger]);\n}\n"],"mappings":";;;AAIA,SAAgB,mBACd,YACA,SACA,MACA,YAA8B,UAC9B,MAAM,GACN;CACA,gBAAgB;EACd,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,QAAQ,YAAY,QAAQ,YAAY,MAAM,OAAO,KAAA;EAE1D,IAAI;EACJ,SAAS,SAAS;GAChB,IAAI,YAAY,QAAQ,YAAY,MAAM;GAC1C,MAAM,SAAS,QAAQ,sBAAsB;GAC7C,QAAQ,MAAM,WAAW,GAAG,OAAO,WAAW;GAC9C,QAAQ,MAAM,YAAY,GAAG,OAAO,YAAY;GAChD,MAAM,OAAO,QAAQ,sBAAsB;GAC3C,MAAM,QAAQ,OAAO,MAAM,MAAM,KAAK;GACtC,MAAM,QAAQ,OAAO,SAAS;GAC9B,MAAM,YAAY,SAAS;GAC3B,MAAM,YAAY,QAAQ,KAAK,UAAU,OAAO;GAChD,IAAI,MAAM;GACV,IAAI,cAAc,OACZ;QAAA,aAAa,CAAC,WAAW,MAAM;GAAA,OAC9B,IAAI,CAAC,aAAa,WACvB,MAAM;GAER,MAAM,OACJ,cAAc,QAAQ,OAAO,QAAQ,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO;GAC/E,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,cAAc,KAAK,MAAM,CAAC,EAAE;GACpF,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,OAAO,aAAa,KAAK,KAAK,CAAC;GAC/E,QAAQ,MAAM,OAAO,GAAG,aAAa;GACrC,QAAQ,MAAM,YACZ,6BACA,GAAG,OAAO,OAAO,OAAO,QAAQ,IAAI,aAAa,GACnD;GACA,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,QAAQ;EACtD;EAEA,SAAS,iBAAiB;GACxB,IAAI,UAAU,KAAA,GAAW;GACzB,QAAQ,OAAO,4BAA4B;IACzC,QAAQ,KAAA;IACR,OAAO;GACT,CAAC;EACH;EAEA,OAAO;EACP,MAAM,WACJ,OAAO,mBAAmB,cAAc,KAAA,IAAY,IAAI,eAAe,cAAc;EACvF,UAAU,QAAQ,OAAO;EACzB,UAAU,QAAQ,OAAO;EACzB,OAAO,iBAAiB,UAAU,cAAc;EAChD,OAAO,iBAAiB,UAAU,gBAAgB,IAAI;EACtD,aAAa;GACX,IAAI,UAAU,KAAA,GAAW,OAAO,qBAAqB,KAAK;GAC1D,UAAU,WAAW;GACrB,OAAO,oBAAoB,UAAU,cAAc;GACnD,OAAO,oBAAoB,UAAU,gBAAgB,IAAI;EAC3D;CACF,GAAG;EAAC;EAAK;EAAM;EAAW;EAAY;CAAO,CAAC;AAChD"}
package/dist/index.d.ts CHANGED
@@ -1,27 +1,27 @@
1
1
  export { default as Button } from './components/button/Button.js';
2
2
  export { default as IconButton } from './components/icon-button/IconButton.js';
3
3
  export type { ButtonContent, ButtonIcon, ButtonProps, ButtonVariant, } from './components/button/Button.types.js';
4
- export { BUTTON_VARIANTS } from './components/button/Button.types.js';
4
+ export { BUTTON_VARIANTS, ButtonVariants } from './components/button/Button.types.js';
5
5
  export type { IconButtonBaseProps, IconButtonProps, } from './components/icon-button/IconButton.types.js';
6
6
  export { default as Badge } from './components/badge/Badge.js';
7
- export { BADGE_SIZES, BADGE_TONES } from './components/badge/Badge.types.js';
7
+ export { BADGE_SIZES, BADGE_TONES, BadgeSizes, BadgeTones, } from './components/badge/Badge.types.js';
8
8
  export type { BadgeProps, BadgeSize, BadgeTone } from './components/badge/Badge.types.js';
9
9
  export { default as Skeleton } from './components/skeleton/Skeleton.js';
10
- export { SKELETON_SHAPES } from './components/skeleton/Skeleton.types.js';
10
+ export { SKELETON_SHAPES, SkeletonShapes } from './components/skeleton/Skeleton.types.js';
11
11
  export type { SkeletonProps, SkeletonShape } from './components/skeleton/Skeleton.types.js';
12
12
  export { default as Spinner } from './components/spinner/Spinner.js';
13
13
  export type { SpinnerProps } from './components/spinner/Spinner.types.js';
14
14
  export { default as Progress } from './components/progress/Progress.js';
15
15
  export type { ProgressProps } from './components/progress/Progress.types.js';
16
16
  export { default as Banner } from './components/banner/Banner.js';
17
- export { BANNER_TONES } from './components/banner/Banner.types.js';
17
+ export { BANNER_TONES, BannerTones } from './components/banner/Banner.types.js';
18
18
  export type { BannerProps, BannerTone, ClosableBannerProps, StaticBannerProps, } from './components/banner/Banner.types.js';
19
19
  export { default as ComboBox } from './components/combo-box/ComboBox.js';
20
20
  export type { ComboBoxMultipleProps, ComboBoxOptionProps, ComboBoxProps, ComboBoxSingleProps, } from './components/combo-box/ComboBox.types.js';
21
21
  export { default as TextField } from './components/text-field/TextField.js';
22
22
  export type { TextFieldProps } from './components/text-field/TextField.types.js';
23
23
  export { default as DateTimePicker } from './components/date-time-picker/DateTimePicker.js';
24
- export { DATE_TIME_PICKER_MODES, DATE_TIME_PICKER_MINUTE_STEPS, type DateTimePickerMinuteStep, type DateTimePickerMode, type DateTimePickerProps, type DateTimePickerWheelLabels, } from './components/date-time-picker/DateTimePicker.types.js';
24
+ export { DATE_TIME_PICKER_MODES, DATE_TIME_PICKER_MINUTE_STEPS, DateTimePickerModes, DateTimePickerMinuteSteps, type DateTimePickerMinuteStep, type DateTimePickerMode, type DateTimePickerProps, type DateTimePickerWheelLabels, } from './components/date-time-picker/DateTimePicker.types.js';
25
25
  export { default as TextArea } from './components/text-area/TextArea.js';
26
26
  export type { TextAreaProps } from './components/text-area/TextArea.types.js';
27
27
  export { default as Checkbox } from './components/checkbox/Checkbox.js';
@@ -41,12 +41,26 @@ export { default as Card } from './components/card/Card.js';
41
41
  export type { CardHeaderProps, CardProps } from './components/card/Card.types.js';
42
42
  export { default as Avatar } from './components/avatar/Avatar.js';
43
43
  export { default as AvatarGroup } from './components/avatar-group/AvatarGroup.js';
44
- export type { AvatarProps } from './components/avatar/Avatar.types.js';
44
+ export { AVATAR_SIZES, AvatarSizes } from './components/avatar/Avatar.types.js';
45
+ export type { AvatarProps, AvatarSize } from './components/avatar/Avatar.types.js';
45
46
  export type { AvatarGroupProps } from './components/avatar-group/AvatarGroup.types.js';
46
47
  export { default as List } from './components/list/List.js';
47
48
  export type { ListItemActionProps, ListItemPartProps, ListItemProps, ListItemStatusProps, ListProps, } from './components/list/List.types.js';
48
49
  export { default as Accordion } from './components/accordion/Accordion.js';
49
50
  export { default as AccordionGroup } from './components/accordion-group/AccordionGroup.js';
50
- export { ACCORDION_APPEARANCES } from './components/accordion/Accordion.types.js';
51
+ export { ACCORDION_APPEARANCES, AccordionAppearances, } from './components/accordion/Accordion.types.js';
51
52
  export type { AccordionAppearance, AccordionContentProps, AccordionHeadContentProps, AccordionHeadProps, AccordionProps, AccordionGroupProps, AccordionPartProps, } from './components/accordion/Accordion.types.js';
53
+ export { default as Breadcrumb } from './components/breadcrumb/Breadcrumb.js';
54
+ export type { BreadcrumbProps } from './components/breadcrumb/Breadcrumb.types.js';
55
+ export type { BreadcrumbItem } from './components/breadcrumb/Breadcrumb.types.js';
56
+ export { default as Pagination } from './components/pagination/Pagination.js';
57
+ export type { PaginationProps } from './components/pagination/Pagination.types.js';
58
+ export type { PaginationLabels } from './components/pagination/Pagination.types.js';
59
+ export { default as Slider } from './components/slider/Slider.js';
60
+ export type { SliderProps } from './components/slider/Slider.types.js';
61
+ export { default as Stepper } from './components/stepper/Stepper.js';
62
+ export { STEPPER_PRECISIONS, StepperPrecisions } from './components/stepper/Stepper.types.js';
63
+ export type { StepperPrecision, StepperProps } from './components/stepper/Stepper.types.js';
64
+ export { default as Tooltip } from './components/tooltip/Tooltip.js';
65
+ export type { TooltipProps, TooltipTriggerProps } from './components/tooltip/Tooltip.types.js';
52
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,YAAY,EACV,mBAAmB,EACnB,eAAe,GAChB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE5F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,YAAY,EACV,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACzE,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,uDAAuD,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAEhG,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,YAAY,GACb,MAAM,0DAA0D,CAAC;AAElE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEnG,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAElF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,SAAS,GACV,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import Button from "./components/button/Button.js";
2
2
  import IconButton from "./components/icon-button/IconButton.js";
3
- import { BUTTON_VARIANTS } from "./components/button/Button.types.js";
3
+ import { BUTTON_VARIANTS, ButtonVariants } from "./components/button/Button.types.js";
4
4
  import Badge from "./components/badge/Badge.js";
5
- import { BADGE_SIZES, BADGE_TONES } from "./components/badge/Badge.types.js";
5
+ import { BADGE_SIZES, BADGE_TONES, BadgeSizes, BadgeTones } from "./components/badge/Badge.types.js";
6
6
  import Skeleton from "./components/skeleton/Skeleton.js";
7
- import { SKELETON_SHAPES } from "./components/skeleton/Skeleton.types.js";
7
+ import { SKELETON_SHAPES, SkeletonShapes } from "./components/skeleton/Skeleton.types.js";
8
8
  import Spinner from "./components/spinner/Spinner.js";
9
9
  import Progress from "./components/progress/Progress.js";
10
10
  import Banner from "./components/banner/Banner.js";
11
- import { BANNER_TONES } from "./components/banner/Banner.types.js";
11
+ import { BANNER_TONES, BannerTones } from "./components/banner/Banner.types.js";
12
12
  import ComboBox from "./components/combo-box/ComboBox.js";
13
13
  import TextField from "./components/text-field/TextField.js";
14
- import { DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES } from "./components/date-time-picker/DateTimePicker.types.js";
14
+ import { DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePickerMinuteSteps, DateTimePickerModes } from "./components/date-time-picker/DateTimePicker.types.js";
15
15
  import DateTimePicker from "./components/date-time-picker/DateTimePicker.js";
16
16
  import TextArea from "./components/text-area/TextArea.js";
17
17
  import Checkbox from "./components/checkbox/Checkbox.js";
@@ -24,8 +24,15 @@ import SplitButton from "./components/split-button/SplitButton.js";
24
24
  import Card from "./components/card/Card.js";
25
25
  import Avatar from "./components/avatar/Avatar.js";
26
26
  import AvatarGroup from "./components/avatar-group/AvatarGroup.js";
27
+ import { AVATAR_SIZES, AvatarSizes } from "./components/avatar/Avatar.types.js";
27
28
  import List from "./components/list/List.js";
28
29
  import Accordion from "./components/accordion/Accordion.js";
29
30
  import AccordionGroup from "./components/accordion-group/AccordionGroup.js";
30
- import { ACCORDION_APPEARANCES } from "./components/accordion/Accordion.types.js";
31
- export { ACCORDION_APPEARANCES, Accordion, AccordionGroup, Avatar, AvatarGroup, BADGE_SIZES, BADGE_TONES, BANNER_TONES, BUTTON_VARIANTS, Badge, Banner, Button, Card, Checkbox, ComboBox, DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePicker, IconButton, List, Popup_default as Popup, PopupList, Progress, RadioGroup, SKELETON_SHAPES, SegmentedControl, Skeleton, Spinner, SplitButton, Switch, TextArea, TextField };
31
+ import { ACCORDION_APPEARANCES, AccordionAppearances } from "./components/accordion/Accordion.types.js";
32
+ import Breadcrumb from "./components/breadcrumb/Breadcrumb.js";
33
+ import Pagination from "./components/pagination/Pagination.js";
34
+ import Slider from "./components/slider/Slider.js";
35
+ import Stepper from "./components/stepper/Stepper.js";
36
+ import { STEPPER_PRECISIONS, StepperPrecisions } from "./components/stepper/Stepper.types.js";
37
+ import Tooltip from "./components/tooltip/Tooltip.js";
38
+ export { ACCORDION_APPEARANCES, AVATAR_SIZES, Accordion, AccordionAppearances, AccordionGroup, Avatar, AvatarGroup, AvatarSizes, BADGE_SIZES, BADGE_TONES, BANNER_TONES, BUTTON_VARIANTS, Badge, BadgeSizes, BadgeTones, Banner, BannerTones, Breadcrumb, Button, ButtonVariants, Card, Checkbox, ComboBox, DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePicker, DateTimePickerMinuteSteps, DateTimePickerModes, IconButton, List, Pagination, Popup_default as Popup, PopupList, Progress, RadioGroup, SKELETON_SHAPES, STEPPER_PRECISIONS, SegmentedControl, Skeleton, SkeletonShapes, Slider, Spinner, SplitButton, Stepper, StepperPrecisions, Switch, TextArea, TextField, Tooltip };
@@ -0,0 +1,54 @@
1
+ @import url('./button.css');
2
+
3
+ @layer chayns.components {
4
+ .chayns-pagination {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: var(--k6);
8
+ min-inline-size: 0;
9
+ overflow-x: auto;
10
+ }
11
+
12
+ .chayns-pagination__page,
13
+ .chayns-pagination__arrow {
14
+ flex: none;
15
+ min-inline-size: var(--k34);
16
+ block-size: var(--k34);
17
+ padding-inline: var(--k6);
18
+ border: 0;
19
+ border-radius: 10px;
20
+ background: transparent;
21
+ color: var(--text);
22
+ font: inherit;
23
+ font-size: var(--fs-body);
24
+ font-weight: 500;
25
+ cursor: pointer;
26
+ }
27
+
28
+ .chayns-pagination__arrow {
29
+ border: 1px solid var(--border);
30
+ color: var(--text-2);
31
+ font-size: var(--fs-caption);
32
+ }
33
+
34
+ .chayns-pagination__page[aria-current='page'] {
35
+ background: var(--accent);
36
+ color: var(--on-accent);
37
+ }
38
+
39
+ .chayns-pagination__arrow:disabled {
40
+ color: var(--disabled-text);
41
+ cursor: not-allowed;
42
+ }
43
+
44
+ .chayns-pagination__page:focus-visible,
45
+ .chayns-pagination__arrow:focus-visible {
46
+ outline: none;
47
+ box-shadow: inset 0 0 0 var(--focus-ring-size)
48
+ rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
49
+ }
50
+
51
+ .chayns-pagination__ellipsis {
52
+ color: var(--text-2);
53
+ }
54
+ }
package/dist/popup.css CHANGED
@@ -1,6 +1,10 @@
1
+ @import url('./button.css');
2
+
1
3
  @layer chayns.components {
2
4
  .chayns-popup {
3
5
  position: fixed;
6
+ box-sizing: border-box;
7
+ overflow: auto;
4
8
  z-index: var(--z-popover);
5
9
  min-inline-size: 14rem;
6
10
  padding: var(--sp-2);
package/dist/progress.css CHANGED
@@ -8,7 +8,7 @@
8
8
  display: flex;
9
9
  justify-content: space-between;
10
10
  margin-bottom: 7px;
11
- color: var(--muted);
11
+ color: var(--text-3);
12
12
  font-size: var(--fs-meta);
13
13
  }
14
14
 
@@ -1,3 +1,5 @@
1
+ @import url('./button.css');
2
+
1
3
  @layer chayns.components {
2
4
  .chayns-segmented-control {
3
5
  display: grid;