@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
@@ -0,0 +1,109 @@
1
+ @layer chayns.components {
2
+ .chayns-slider {
3
+ min-inline-size: 0;
4
+ }
5
+
6
+ .chayns-slider__label-row {
7
+ display: flex;
8
+ align-items: baseline;
9
+ justify-content: space-between;
10
+ gap: var(--k8);
11
+ margin-block-end: var(--k10);
12
+ color: var(--text);
13
+ font-size: var(--fs-body);
14
+ font-weight: 500;
15
+ }
16
+
17
+ .chayns-slider__value {
18
+ flex: none;
19
+ font-family: 'Roboto Mono', monospace;
20
+ color: var(--accent);
21
+ font-size: var(--fs-meta);
22
+ font-weight: 600;
23
+ }
24
+
25
+ .chayns-slider__input {
26
+ appearance: none;
27
+ inline-size: 100%;
28
+ min-block-size: max(24px, var(--k24));
29
+ block-size: var(--k20);
30
+ margin: 0;
31
+ background: transparent;
32
+ cursor: pointer;
33
+ }
34
+
35
+ .chayns-slider__input::-webkit-slider-runnable-track {
36
+ block-size: 4px;
37
+ border-radius: 999px;
38
+ background: var(--input-border);
39
+ }
40
+
41
+ .chayns-slider__input::-moz-range-track {
42
+ block-size: 4px;
43
+ border-radius: 999px;
44
+ background: var(--input-border);
45
+ }
46
+
47
+ .chayns-slider__input::-moz-range-progress {
48
+ block-size: 4px;
49
+ border-radius: 999px;
50
+ background: var(--accent);
51
+ }
52
+
53
+ .chayns-slider__input::-webkit-slider-thumb {
54
+ appearance: none;
55
+ inline-size: var(--k18);
56
+ block-size: var(--k18);
57
+ margin-block-start: calc((4px - var(--k18)) / 2);
58
+ border: 2px solid var(--accent);
59
+ border-radius: 50%;
60
+ background: var(--surface);
61
+ box-shadow: var(--shadow-card);
62
+ transition: transform 0.15s ease;
63
+ }
64
+
65
+ .chayns-slider__input::-moz-range-thumb {
66
+ inline-size: var(--k18);
67
+ block-size: var(--k18);
68
+ border: 2px solid var(--accent);
69
+ border-radius: 50%;
70
+ background: var(--surface);
71
+ box-shadow: var(--shadow-card);
72
+ transition: transform 0.15s ease;
73
+ }
74
+
75
+ .chayns-slider__input:focus-visible {
76
+ outline: none;
77
+ }
78
+
79
+ .chayns-slider__input:focus-visible::-webkit-slider-thumb {
80
+ box-shadow: 0 0 0 var(--focus-ring-size)
81
+ rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
82
+ }
83
+
84
+ .chayns-slider__input:focus-visible::-moz-range-thumb {
85
+ box-shadow: 0 0 0 var(--focus-ring-size)
86
+ rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
87
+ }
88
+
89
+ .chayns-slider__input:hover:not(:disabled)::-webkit-slider-thumb,
90
+ .chayns-slider__input:active:not(:disabled)::-webkit-slider-thumb {
91
+ transform: scale(1.12);
92
+ }
93
+
94
+ .chayns-slider__input:hover:not(:disabled)::-moz-range-thumb,
95
+ .chayns-slider__input:active:not(:disabled)::-moz-range-thumb {
96
+ transform: scale(1.12);
97
+ }
98
+
99
+ .chayns-slider__input:disabled {
100
+ cursor: not-allowed;
101
+ }
102
+
103
+ @media (prefers-reduced-motion: reduce) {
104
+ .chayns-slider__input::-webkit-slider-thumb,
105
+ .chayns-slider__input::-moz-range-thumb {
106
+ transition: none;
107
+ }
108
+ }
109
+ }
@@ -1,3 +1,5 @@
1
+ @import url('./button.css');
2
+
1
3
  @layer chayns.components {
2
4
  .chayns-split-button {
3
5
  display: inline-flex;
@@ -24,26 +26,9 @@
24
26
  cursor: pointer;
25
27
  }
26
28
 
27
- .chayns-split-button__trigger.chayns-button--primary {
28
- background: var(--accent);
29
- color: var(--on-accent);
30
- }
31
-
32
29
  .chayns-split-button__trigger.chayns-button--outline {
33
30
  border-block: 1.5px solid var(--accent);
34
31
  border-inline-end: 1.5px solid var(--accent);
35
- background: var(--surface);
36
- color: var(--accent);
37
- }
38
-
39
- .chayns-split-button__trigger.chayns-button--ghost {
40
- background: transparent;
41
- color: var(--text-2);
42
- }
43
-
44
- .chayns-split-button__trigger.chayns-button--danger {
45
- background: var(--danger-bg);
46
- color: var(--danger);
47
32
  }
48
33
 
49
34
  .chayns-split-button__trigger:disabled {
@@ -59,68 +44,6 @@
59
44
  background: var(--surface);
60
45
  }
61
46
 
62
- .chayns-split-button__trigger:focus-visible {
63
- outline: none;
64
- box-shadow: 0 0 0 var(--focus-ring-size)
65
- rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
66
- }
67
-
68
- .chayns-split-button__trigger:active:not(:disabled) {
69
- transform: scale(0.96);
70
- }
71
-
72
- .chayns-split-button__trigger.chayns-button--primary:active:not(:disabled) {
73
- background: var(--accent-active);
74
- }
75
-
76
- .chayns-split-button__trigger.chayns-button--outline:active:not(:disabled) {
77
- background: var(--accent);
78
- color: var(--on-accent);
79
- }
80
-
81
- .chayns-split-button__trigger.chayns-button--ghost:active:not(:disabled) {
82
- background: var(--surface-alt);
83
- color: var(--accent);
84
- }
85
-
86
- .chayns-split-button__trigger.chayns-button--danger:active:not(:disabled) {
87
- background: var(--danger-bg-hover);
88
- }
89
-
90
- .chayns-split-button__trigger:active:not(:disabled)
91
- .chayns-button-icon__weight:not(.chayns-button-icon__weight--active),
92
- .chayns-split-button__trigger:hover:not(:disabled)
93
- .chayns-button-icon__weight:not(.chayns-button-icon__weight--active) {
94
- display: none;
95
- }
96
-
97
- .chayns-split-button__trigger:active:not(:disabled) .chayns-button-icon__weight--active,
98
- .chayns-split-button__trigger:hover:not(:disabled) .chayns-button-icon__weight--active {
99
- display: inline-flex;
100
- }
101
-
102
- @media (hover: hover) {
103
- .chayns-split-button__trigger.chayns-button--primary:hover:not(:disabled) {
104
- background: var(--accent-hover);
105
- box-shadow: var(--shadow-btn-hover);
106
- }
107
-
108
- .chayns-split-button__trigger.chayns-button--outline:hover:not(:disabled) {
109
- background: var(--accent);
110
- color: var(--on-accent);
111
- box-shadow: var(--shadow-btn-hover);
112
- }
113
-
114
- .chayns-split-button__trigger.chayns-button--ghost:hover:not(:disabled) {
115
- background: var(--surface-alt);
116
- color: var(--accent);
117
- }
118
-
119
- .chayns-split-button__trigger.chayns-button--danger:hover:not(:disabled) {
120
- background: var(--danger-bg-hover);
121
- }
122
- }
123
-
124
47
  .chayns-split-button__chevron .chayns-button-icon {
125
48
  inline-size: 1em;
126
49
  block-size: 1em;
@@ -0,0 +1,77 @@
1
+ @import url('./button.css');
2
+
3
+ @layer chayns.components {
4
+ .chayns-stepper {
5
+ min-inline-size: 0;
6
+ }
7
+
8
+ .chayns-stepper__label {
9
+ display: block;
10
+ margin-block-end: var(--k10);
11
+ color: var(--text);
12
+ font-size: var(--fs-body);
13
+ font-weight: 500;
14
+ }
15
+
16
+ .chayns-stepper__control {
17
+ display: flex;
18
+ align-items: center;
19
+ inline-size: fit-content;
20
+ max-inline-size: 100%;
21
+ overflow: hidden;
22
+ border: 1.5px solid var(--input-border);
23
+ border-radius: 10px;
24
+ background: var(--surface);
25
+ }
26
+
27
+ .chayns-stepper__button {
28
+ flex: none;
29
+ inline-size: var(--k40);
30
+ block-size: var(--k40);
31
+ padding: 0;
32
+ border: 0;
33
+ border-inline-end: 1.5px solid var(--input-border);
34
+ background: var(--surface);
35
+ color: var(--text-2);
36
+ font: inherit;
37
+ font-size: var(--fs-bodyl);
38
+ cursor: pointer;
39
+ transition:
40
+ background 0.2s ease,
41
+ color 0.2s ease,
42
+ border-color 0.2s ease,
43
+ box-shadow 0.2s ease,
44
+ transform 0.15s ease,
45
+ filter 0.2s ease;
46
+ }
47
+
48
+ .chayns-stepper__button--increase {
49
+ border-inline-start: 1.5px solid var(--input-border);
50
+ border-inline-end: 0;
51
+ color: var(--accent);
52
+ }
53
+
54
+ .chayns-stepper__button:disabled {
55
+ color: var(--disabled-text);
56
+ cursor: not-allowed;
57
+ }
58
+
59
+ .chayns-stepper__button:focus-visible {
60
+ outline-offset: calc(-1 * var(--focus-ring-size));
61
+ }
62
+
63
+ .chayns-stepper__value {
64
+ min-inline-size: var(--k52);
65
+ overflow-wrap: anywhere;
66
+ text-align: center;
67
+ color: var(--text);
68
+ font-size: var(--fs-body);
69
+ font-weight: 600;
70
+ }
71
+
72
+ @media (prefers-reduced-motion: reduce) {
73
+ .chayns-stepper__button {
74
+ transition: none;
75
+ }
76
+ }
77
+ }
package/dist/styles.css CHANGED
@@ -18,3 +18,8 @@
18
18
  @import url('./switch.css');
19
19
  @import url('./radio-group.css');
20
20
  @import url('./segmented-control.css');
21
+ @import url('./breadcrumb.css');
22
+ @import url('./pagination.css');
23
+ @import url('./slider.css');
24
+ @import url('./stepper.css');
25
+ @import url('./tooltip.css');
@@ -0,0 +1,68 @@
1
+ @layer chayns.components {
2
+ .chayns-tooltip {
3
+ position: fixed;
4
+ inline-size: max-content;
5
+ box-sizing: border-box;
6
+ overflow-wrap: anywhere;
7
+ background: var(--text);
8
+ color: var(--surface);
9
+ font-size: var(--fs-caption);
10
+ font-weight: 500;
11
+ padding: var(--k6) var(--k10);
12
+ border-radius: 8px;
13
+ white-space: normal;
14
+ opacity: 0;
15
+ visibility: hidden;
16
+ transform: translateY(4px);
17
+ transition:
18
+ opacity 0.15s ease,
19
+ transform 0.15s ease;
20
+ pointer-events: none;
21
+ z-index: var(--z-tooltip);
22
+ box-shadow: 0 6px 16px -6px rgb(0 0 0 / 40%);
23
+ }
24
+
25
+ .chayns-tooltip::before {
26
+ content: '';
27
+ position: absolute;
28
+ top: 100%;
29
+ left: 0;
30
+ right: 0;
31
+ height: 9px;
32
+ }
33
+
34
+ .chayns-tooltip::after {
35
+ content: '';
36
+ position: absolute;
37
+ top: 100%;
38
+ left: clamp(5px, var(--chayns-overlay-anchor-x, 50%), calc(100% - 5px));
39
+ transform: translateX(-50%);
40
+ border: 5px solid transparent;
41
+ border-top-color: var(--text);
42
+ }
43
+
44
+ .chayns-tooltip[data-placement='bottom']::before {
45
+ top: auto;
46
+ bottom: 100%;
47
+ }
48
+
49
+ .chayns-tooltip[data-placement='bottom']::after {
50
+ top: auto;
51
+ bottom: 100%;
52
+ border-top-color: transparent;
53
+ border-bottom-color: var(--text);
54
+ }
55
+
56
+ .chayns-tooltip--open {
57
+ opacity: 1;
58
+ visibility: visible;
59
+ transform: translateY(0);
60
+ pointer-events: auto;
61
+ }
62
+
63
+ @media (prefers-reduced-motion: reduce) {
64
+ .chayns-tooltip {
65
+ transition: none;
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,4 @@
1
+ import type { Ref, RefCallback } from 'react';
2
+ /** Composes native refs, including React 19 cleanup callbacks, without requiring React 19. */
3
+ export declare function composeNativeRefs<T>(...refs: (Ref<T> | undefined)[]): RefCallback<T>;
4
+ //# sourceMappingURL=native-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-ref.d.ts","sourceRoot":"","sources":["../../src/utils/native-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAmBpF"}
@@ -0,0 +1,24 @@
1
+ //#region src/utils/native-ref.ts
2
+ /** Composes native refs, including React 19 cleanup callbacks, without requiring React 19. */
3
+ function composeNativeRefs(...refs) {
4
+ const cleanups = /* @__PURE__ */ new Map();
5
+ return (element) => {
6
+ for (const ref of refs) {
7
+ if (!ref) continue;
8
+ if (typeof ref === "function") {
9
+ const cleanup = cleanups.get(ref);
10
+ if (element === null && cleanup) {
11
+ cleanup();
12
+ cleanups.delete(ref);
13
+ } else {
14
+ const nextCleanup = ref(element);
15
+ if (typeof nextCleanup === "function") cleanups.set(ref, nextCleanup);
16
+ }
17
+ } else ref.current = element;
18
+ }
19
+ };
20
+ }
21
+ //#endregion
22
+ export { composeNativeRefs };
23
+
24
+ //# sourceMappingURL=native-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-ref.js","names":[],"sources":["../../src/utils/native-ref.ts"],"sourcesContent":["import type { Ref, RefCallback } from 'react';\n\n/** Composes native refs, including React 19 cleanup callbacks, without requiring React 19. */\nexport function composeNativeRefs<T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> {\n const cleanups = new Map<Ref<T>, () => void>();\n return (element) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === 'function') {\n const cleanup = cleanups.get(ref);\n if (element === null && cleanup) {\n cleanup();\n cleanups.delete(ref);\n } else {\n const nextCleanup = ref(element);\n if (typeof nextCleanup === 'function') cleanups.set(ref, nextCleanup);\n }\n } else {\n ref.current = element;\n }\n }\n };\n}\n"],"mappings":";;AAGA,SAAgB,kBAAqB,GAAG,MAA8C;CACpF,MAAM,2BAAW,IAAI,IAAwB;CAC7C,QAAQ,YAAY;EAClB,KAAK,MAAM,OAAO,MAAM;GACtB,IAAI,CAAC,KAAK;GACV,IAAI,OAAO,QAAQ,YAAY;IAC7B,MAAM,UAAU,SAAS,IAAI,GAAG;IAChC,IAAI,YAAY,QAAQ,SAAS;KAC/B,QAAQ;KACR,SAAS,OAAO,GAAG;IACrB,OAAO;KACL,MAAM,cAAc,IAAI,OAAO;KAC/B,IAAI,OAAO,gBAAgB,YAAY,SAAS,IAAI,KAAK,WAAW;IACtE;GACF,OACE,IAAI,UAAU;EAElB;CACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-ui/core",
3
- "version": "0.9.2",
3
+ "version": "0.10.0",
4
4
  "description": "Accessible React core components for chayns UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,7 +43,12 @@
43
43
  "./radio-group.css": "./dist/radio-group.css",
44
44
  "./segmented-control.css": "./dist/segmented-control.css",
45
45
  "./styles.css": "./dist/styles.css",
46
- "./package.json": "./package.json"
46
+ "./breadcrumb.css": "./dist/breadcrumb.css",
47
+ "./pagination.css": "./dist/pagination.css",
48
+ "./slider.css": "./dist/slider.css",
49
+ "./package.json": "./package.json",
50
+ "./stepper.css": "./dist/stepper.css",
51
+ "./tooltip.css": "./dist/tooltip.css"
47
52
  },
48
53
  "peerDependencies": {
49
54
  "react": ">=18 <20"