@dnanpm/ui-components 0.8.0 → 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 (249) hide show
  1. package/README.md +13 -0
  2. package/dist/components/Accordion/Accordion.css +9 -2
  3. package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
  4. package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
  5. package/dist/components/AccordionItem/AccordionItem.css +8 -2
  6. package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
  7. package/dist/components/AccordionItem/AccordionItem.js +2 -2
  8. package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
  9. package/dist/components/Avatar/Avatar.cjs +83 -0
  10. package/dist/components/Avatar/Avatar.cjs.map +1 -0
  11. package/dist/components/Avatar/Avatar.css +188 -0
  12. package/dist/components/Avatar/Avatar.d.ts +3 -0
  13. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  14. package/dist/components/Avatar/Avatar.js +83 -0
  15. package/dist/components/Avatar/Avatar.js.map +1 -0
  16. package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
  17. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
  18. package/dist/components/Avatar/Avatar.module.css.js +40 -0
  19. package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
  20. package/dist/components/Avatar/Avatar.types.d.ts +66 -0
  21. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  22. package/dist/components/Avatar/Avatar.utils.cjs +17 -0
  23. package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
  24. package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
  25. package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
  26. package/dist/components/Avatar/Avatar.utils.js +17 -0
  27. package/dist/components/Avatar/Avatar.utils.js.map +1 -0
  28. package/dist/components/Avatar/index.d.ts +3 -0
  29. package/dist/components/Avatar/index.d.ts.map +1 -0
  30. package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
  31. package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
  32. package/dist/components/Breadcrumb/Breadcrumb.css +20 -17
  33. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  34. package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
  35. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  36. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
  37. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
  38. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
  39. package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
  40. package/dist/components/Button/Button.cjs +29 -3
  41. package/dist/components/Button/Button.cjs.map +1 -1
  42. package/dist/components/Button/Button.css +76 -30
  43. package/dist/components/Button/Button.d.ts +1 -1
  44. package/dist/components/Button/Button.d.ts.map +1 -1
  45. package/dist/components/Button/Button.js +28 -2
  46. package/dist/components/Button/Button.js.map +1 -1
  47. package/dist/components/Button/Button.module.css.cjs +19 -11
  48. package/dist/components/Button/Button.module.css.cjs.map +1 -1
  49. package/dist/components/Button/Button.module.css.js +19 -11
  50. package/dist/components/Button/Button.module.css.js.map +1 -1
  51. package/dist/components/Button/Button.types.d.ts +20 -3
  52. package/dist/components/Button/Button.types.d.ts.map +1 -1
  53. package/dist/components/Button/index.d.ts +1 -1
  54. package/dist/components/Button/index.d.ts.map +1 -1
  55. package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
  56. package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
  57. package/dist/components/ButtonCard/ButtonCard.css +62 -20
  58. package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
  59. package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
  60. package/dist/components/ButtonCard/ButtonCard.js +17 -12
  61. package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
  62. package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
  63. package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
  64. package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
  65. package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
  66. package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
  67. package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
  68. package/dist/components/Checkbox/Checkbox.cjs +105 -0
  69. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  70. package/dist/components/Checkbox/Checkbox.css +323 -0
  71. package/dist/components/Checkbox/Checkbox.d.ts +3 -0
  72. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  73. package/dist/components/Checkbox/Checkbox.js +105 -0
  74. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  75. package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
  76. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
  77. package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
  78. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
  79. package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
  80. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  81. package/dist/components/Checkbox/index.d.ts +3 -0
  82. package/dist/components/Checkbox/index.d.ts.map +1 -0
  83. package/dist/components/ContentCard/ContentCard.cjs +97 -0
  84. package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
  85. package/dist/components/ContentCard/ContentCard.css +254 -0
  86. package/dist/components/ContentCard/ContentCard.d.ts +3 -0
  87. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
  88. package/dist/components/ContentCard/ContentCard.js +97 -0
  89. package/dist/components/ContentCard/ContentCard.js.map +1 -0
  90. package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
  91. package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
  92. package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
  93. package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
  94. package/dist/components/ContentCard/ContentCard.types.d.ts +100 -0
  95. package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
  96. package/dist/components/ContentCard/index.d.ts +3 -0
  97. package/dist/components/ContentCard/index.d.ts.map +1 -0
  98. package/dist/components/Drawer/Drawer.cjs +15 -7
  99. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  100. package/dist/components/Drawer/Drawer.css +47 -45
  101. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  102. package/dist/components/Drawer/Drawer.js +12 -4
  103. package/dist/components/Drawer/Drawer.js.map +1 -1
  104. package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
  105. package/dist/components/Drawer/Drawer.module.css.js +16 -16
  106. package/dist/components/Footer/Footer.cjs +8 -9
  107. package/dist/components/Footer/Footer.cjs.map +1 -1
  108. package/dist/components/Footer/Footer.css +91 -84
  109. package/dist/components/Footer/Footer.d.ts.map +1 -1
  110. package/dist/components/Footer/Footer.js +1 -2
  111. package/dist/components/Footer/Footer.js.map +1 -1
  112. package/dist/components/Footer/Footer.module.css.cjs +39 -39
  113. package/dist/components/Footer/Footer.module.css.js +39 -39
  114. package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
  115. package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
  116. package/dist/components/FunctionButton/FunctionButton.css +5 -2
  117. package/dist/components/FunctionButton/FunctionButton.js +1 -1
  118. package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
  119. package/dist/components/Hero/Hero.cjs +30 -29
  120. package/dist/components/Hero/Hero.cjs.map +1 -1
  121. package/dist/components/Hero/Hero.css +86 -74
  122. package/dist/components/Hero/Hero.d.ts +1 -1
  123. package/dist/components/Hero/Hero.d.ts.map +1 -1
  124. package/dist/components/Hero/Hero.js +30 -29
  125. package/dist/components/Hero/Hero.js.map +1 -1
  126. package/dist/components/Hero/Hero.module.css.cjs +20 -17
  127. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  128. package/dist/components/Hero/Hero.module.css.js +20 -17
  129. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  130. package/dist/components/Hero/Hero.types.d.ts +2 -6
  131. package/dist/components/Hero/Hero.types.d.ts.map +1 -1
  132. package/dist/components/IconButton/IconButton.cjs +3 -4
  133. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  134. package/dist/components/IconButton/IconButton.css +5 -2
  135. package/dist/components/IconButton/IconButton.d.ts.map +1 -1
  136. package/dist/components/IconButton/IconButton.js +1 -2
  137. package/dist/components/IconButton/IconButton.js.map +1 -1
  138. package/dist/components/Label/Label.css +5 -2
  139. package/dist/components/MainNavigation/MainNavigation.cjs +556 -191
  140. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
  141. package/dist/components/MainNavigation/MainNavigation.css +297 -170
  142. package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
  143. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
  144. package/dist/components/MainNavigation/MainNavigation.js +526 -161
  145. package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
  146. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -68
  147. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
  148. package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -68
  149. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
  150. package/dist/components/MainNavigation/MainNavigation.types.d.ts +55 -21
  151. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
  152. package/dist/components/MainNavigation/MainNavigation.utils.cjs +28 -4
  153. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
  154. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +11 -1
  155. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
  156. package/dist/components/MainNavigation/MainNavigation.utils.js +28 -4
  157. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
  158. package/dist/components/MainNavigation/index.d.ts +1 -1
  159. package/dist/components/MainNavigation/index.d.ts.map +1 -1
  160. package/dist/components/Modal/Modal.cjs +14 -6
  161. package/dist/components/Modal/Modal.cjs.map +1 -1
  162. package/dist/components/Modal/Modal.css +43 -40
  163. package/dist/components/Modal/Modal.d.ts.map +1 -1
  164. package/dist/components/Modal/Modal.js +12 -4
  165. package/dist/components/Modal/Modal.js.map +1 -1
  166. package/dist/components/Modal/Modal.module.css.cjs +18 -18
  167. package/dist/components/Modal/Modal.module.css.js +18 -18
  168. package/dist/components/Notification/Notification.cjs +3 -2
  169. package/dist/components/Notification/Notification.cjs.map +1 -1
  170. package/dist/components/Notification/Notification.css +20 -12
  171. package/dist/components/Notification/Notification.d.ts.map +1 -1
  172. package/dist/components/Notification/Notification.js +2 -1
  173. package/dist/components/Notification/Notification.js.map +1 -1
  174. package/dist/components/Notification/Notification.module.css.cjs +9 -9
  175. package/dist/components/Notification/Notification.module.css.js +9 -9
  176. package/dist/components/Pagination/Pagination.cjs +142 -0
  177. package/dist/components/Pagination/Pagination.cjs.map +1 -0
  178. package/dist/components/Pagination/Pagination.css +256 -0
  179. package/dist/components/Pagination/Pagination.d.ts +3 -0
  180. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  181. package/dist/components/Pagination/Pagination.js +142 -0
  182. package/dist/components/Pagination/Pagination.js.map +1 -0
  183. package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
  184. package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
  185. package/dist/components/Pagination/Pagination.module.css.js +34 -0
  186. package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
  187. package/dist/components/Pagination/Pagination.types.d.ts +20 -0
  188. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  189. package/dist/components/Pagination/Pagination.utils.cjs +76 -0
  190. package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
  191. package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
  192. package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
  193. package/dist/components/Pagination/Pagination.utils.js +76 -0
  194. package/dist/components/Pagination/Pagination.utils.js.map +1 -0
  195. package/dist/components/Pagination/index.d.ts +3 -0
  196. package/dist/components/Pagination/index.d.ts.map +1 -0
  197. package/dist/components/Pictograph/Pictograph.css +9 -2
  198. package/dist/components/Pictograph/PictographItem.css +9 -2
  199. package/dist/components/Quote/Quote.css +5 -2
  200. package/dist/components/Spinner/Spinner.css +9 -2
  201. package/dist/design-tokens/dist/tokens.cjs +5 -0
  202. package/dist/design-tokens/dist/tokens.cjs.map +1 -0
  203. package/dist/design-tokens/dist/tokens.js +5 -0
  204. package/dist/design-tokens/dist/tokens.js.map +1 -0
  205. package/dist/index.cjs +8 -0
  206. package/dist/index.cjs.map +1 -1
  207. package/dist/index.d.ts +10 -2
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +8 -0
  210. package/dist/index.js.map +1 -1
  211. package/dist/styles/utilities.css +6 -0
  212. package/dist/styles/utils/elevation.css +34 -26
  213. package/dist/styles/utils/focus.css +63 -65
  214. package/dist/styles/utils/index.cjs +33 -0
  215. package/dist/styles/utils/index.cjs.map +1 -0
  216. package/dist/styles/utils/index.d.ts +20 -0
  217. package/dist/styles/utils/index.d.ts.map +1 -0
  218. package/dist/styles/utils/index.js +33 -0
  219. package/dist/styles/utils/index.js.map +1 -0
  220. package/dist/styles/utils/overlay.css +35 -28
  221. package/dist/styles/utils/text-decoration.css +19 -12
  222. package/dist/styles.css +46 -12
  223. package/dist/utils/index.d.ts +1 -0
  224. package/dist/utils/index.d.ts.map +1 -1
  225. package/dist/utils/isRenderable/index.d.ts +2 -0
  226. package/dist/utils/isRenderable/index.d.ts.map +1 -0
  227. package/dist/utils/isRenderable/isRenderable.cjs +5 -0
  228. package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
  229. package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
  230. package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
  231. package/dist/utils/isRenderable/isRenderable.js +5 -0
  232. package/dist/utils/isRenderable/isRenderable.js.map +1 -0
  233. package/package.json +12 -4
  234. package/dist/styles/utils/elevation.module.css.cjs +0 -16
  235. package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
  236. package/dist/styles/utils/elevation.module.css.js +0 -16
  237. package/dist/styles/utils/elevation.module.css.js.map +0 -1
  238. package/dist/styles/utils/focus.module.css.cjs +0 -16
  239. package/dist/styles/utils/focus.module.css.cjs.map +0 -1
  240. package/dist/styles/utils/focus.module.css.js +0 -16
  241. package/dist/styles/utils/focus.module.css.js.map +0 -1
  242. package/dist/styles/utils/overlay.module.css.cjs +0 -13
  243. package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
  244. package/dist/styles/utils/overlay.module.css.js +0 -13
  245. package/dist/styles/utils/overlay.module.css.js.map +0 -1
  246. package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
  247. package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
  248. package/dist/styles/utils/text-decoration.module.css.js +0 -13
  249. package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
@@ -1,4 +1,11 @@
1
- @layer dds-components {._button-card_14hpp_1 {
1
+ @layer dds-base, dds-components;@layer dds-components { @layer fallback, components; }@layer dds-components.components{._button-card-container_je3cs_1 {
2
+ display: block;
3
+ width: 100%;
4
+ container-name: button-card;
5
+ container-type: inline-size;
6
+ }
7
+
8
+ ._button-card_je3cs_1 {
2
9
  --_button-card-padding: var(--spacing-space-16);
3
10
  --_button-card-gap: var(--spacing-space-16);
4
11
  --_button-card-content-gap: var(--spacing-space-16);
@@ -28,18 +35,19 @@
28
35
  appearance: none;
29
36
  }
30
37
 
31
- ._button-card_14hpp_1:where(:hover, :focus-visible) {
38
+ ._button-card_je3cs_1:where(:hover, :focus-visible) {
32
39
  border-color: var(--color-semantic-border-neutral-mid);
33
40
  }
34
41
 
35
42
  /* === Size variants (base holds the medium/default values) === */
36
43
 
37
- ._button-card--large_14hpp_37 {
44
+ ._button-card--large_je3cs_44 {
38
45
  --_button-card-title-font: var(--typography-heading-xs);
39
46
  --_button-card-subtitle-font: var(--typography-label-lg);
40
47
  }
41
48
 
42
- ._button-card--small_14hpp_42 {
49
+ ._button-card--small_je3cs_49,
50
+ ._button-card--dynamic_je3cs_50 {
43
51
  flex-direction: column;
44
52
  align-items: stretch;
45
53
  --_button-card-padding: var(--spacing-space-8);
@@ -54,9 +62,33 @@
54
62
  --_button-card-subtitle-font: var(--typography-label-sm);
55
63
  }
56
64
 
65
+ @container button-card (min-width: 16rem) {
66
+ ._button-card--dynamic_je3cs_50 {
67
+ flex-direction: row;
68
+ align-items: center;
69
+ --_button-card-padding: var(--spacing-space-16);
70
+ --_button-card-gap: var(--spacing-space-16);
71
+ --_button-card-content-gap: var(--spacing-space-16);
72
+ --_button-card-text-gap: var(--spacing-space-4);
73
+ --_button-card-line-clamp: 2;
74
+ --_button-card-media-box: 56px;
75
+ --_button-card-media-icon: 40px;
76
+ --_button-card-indicator: 24px;
77
+ --_button-card-title-font: var(--typography-label-lg-bold);
78
+ --_button-card-subtitle-font: var(--typography-label-md);
79
+ }
80
+ }
81
+
82
+ @container button-card (min-width: 23rem) {
83
+ ._button-card--dynamic_je3cs_50 {
84
+ --_button-card-title-font: var(--typography-heading-xs);
85
+ --_button-card-subtitle-font: var(--typography-label-lg);
86
+ }
87
+ }
88
+
57
89
  /* === Media === */
58
90
 
59
- ._button-card__media_14hpp_59 {
91
+ ._button-card__media_je3cs_91 {
60
92
  display: inline-flex;
61
93
  flex-shrink: 0;
62
94
  align-self: center;
@@ -65,30 +97,37 @@
65
97
  overflow: hidden;
66
98
  }
67
99
 
68
- ._button-card--small_14hpp_42 ._button-card__media_14hpp_59 {
100
+ ._button-card--small_je3cs_49 ._button-card__media_je3cs_91,
101
+ ._button-card--dynamic_je3cs_50 ._button-card__media_je3cs_91 {
69
102
  align-self: flex-start;
70
103
  }
71
104
 
72
- ._button-card__media--icon_14hpp_72 {
105
+ @container button-card (min-width: 16rem) {
106
+ ._button-card--dynamic_je3cs_50 ._button-card__media_je3cs_91 {
107
+ align-self: center;
108
+ }
109
+ }
110
+
111
+ ._button-card__media--icon_je3cs_111 {
73
112
  width: var(--_button-card-media-box);
74
113
  height: var(--_button-card-media-box);
75
114
  background-color: var(--color-semantic-surface-neutral-mid);
76
115
  border-radius: var(--radius-semantic-md);
77
116
  }
78
117
 
79
- ._button-card__media--icon_14hpp_72 svg {
118
+ ._button-card__media--icon_je3cs_111 svg {
80
119
  display: block;
81
120
  width: var(--_button-card-media-icon);
82
121
  height: var(--_button-card-media-icon);
83
122
  }
84
123
 
85
- ._button-card__media--image_14hpp_85 {
124
+ ._button-card__media--image_je3cs_124 {
86
125
  position: relative;
87
126
  width: var(--_button-card-media-box);
88
127
  height: var(--_button-card-media-box);
89
128
  }
90
129
 
91
- ._button-card__media--image_14hpp_85 :where(img, picture, video, svg, canvas) {
130
+ ._button-card__media--image_je3cs_124 :where(img, picture, video, svg, canvas) {
92
131
  display: block;
93
132
  width: 100%;
94
133
  height: 100%;
@@ -97,7 +136,7 @@
97
136
 
98
137
  /* === Text === */
99
138
 
100
- ._button-card__content_14hpp_100 {
139
+ ._button-card__content_je3cs_139 {
101
140
  display: flex;
102
141
  flex: 1 1 0;
103
142
  min-width: 0;
@@ -105,7 +144,7 @@
105
144
  gap: var(--_button-card-content-gap);
106
145
  }
107
146
 
108
- ._button-card__text_14hpp_108 {
147
+ ._button-card__text_je3cs_147 {
109
148
  display: flex;
110
149
  flex: 1 1 0;
111
150
  min-width: 0;
@@ -114,8 +153,8 @@
114
153
  gap: var(--_button-card-text-gap);
115
154
  }
116
155
 
117
- ._button-card__title_14hpp_117,
118
- ._button-card__subtitle_14hpp_118 {
156
+ ._button-card__title_je3cs_156,
157
+ ._button-card__subtitle_je3cs_157 {
119
158
  display: -webkit-box;
120
159
  margin: 0;
121
160
  overflow: hidden;
@@ -125,19 +164,19 @@
125
164
  line-clamp: var(--_button-card-line-clamp);
126
165
  }
127
166
 
128
- ._button-card__title_14hpp_117 {
167
+ ._button-card__title_je3cs_156 {
129
168
  color: var(--color-semantic-foreground-default);
130
169
  font: var(--_button-card-title-font);
131
170
  }
132
171
 
133
- ._button-card__subtitle_14hpp_118 {
172
+ ._button-card__subtitle_je3cs_157 {
134
173
  color: var(--color-semantic-foreground-muted);
135
174
  font: var(--_button-card-subtitle-font);
136
175
  }
137
176
 
138
177
  /* === Indicator === */
139
178
 
140
- ._button-card__indicator_14hpp_140 {
179
+ ._button-card__indicator_je3cs_179 {
141
180
  display: inline-flex;
142
181
  flex-shrink: 0;
143
182
  align-items: center;
@@ -145,7 +184,7 @@
145
184
  color: var(--color-semantic-foreground-primary-strong);
146
185
  }
147
186
 
148
- ._button-card__indicator_14hpp_140 svg {
187
+ ._button-card__indicator_je3cs_179 svg {
149
188
  display: block;
150
189
  width: var(--_button-card-indicator);
151
190
  height: var(--_button-card-indicator);
@@ -153,7 +192,7 @@
153
192
 
154
193
  /* === Visually hidden === */
155
194
 
156
- ._button-card__sr-only_14hpp_156 {
195
+ ._button-card__sr-only_je3cs_195 {
157
196
  position: absolute;
158
197
  width: 1px;
159
198
  height: 1px;
@@ -164,4 +203,7 @@
164
203
  border: 0;
165
204
  clip: rect(0, 0, 0, 0);
166
205
  }
167
- }
206
+
207
+ /**
208
+ * Do not edit directly, this file was auto-generated.
209
+ */ }
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import { ButtonCardProps } from './ButtonCard.types';
2
- export declare const ButtonCard: ({ title, subtitle, size, icon, image, isExternal, externalLinkAriaLabel, className, ref, ...props }: ButtonCardProps) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const ButtonCard: ({ title, subtitle, size, icon, image, isExternal, externalLinkAriaLabel, className, ref, ...props }: ButtonCardProps) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
3
4
  //# sourceMappingURL=ButtonCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCard.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/E,eAAO,MAAM,UAAU,GAAI,qGAWxB,eAAe,4CAgIjB,CAAC"}
1
+ {"version":3,"file":"ButtonCard.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,SAAS,EAAO,MAAM,OAAO,CAAC;AAKnE,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/E,eAAO,MAAM,UAAU,GAAI,qGAWxB,eAAe,4UA4IjB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
2
  import { Open, ChevronRight } from "@dnanpm/icons";
3
- import focusStyles from "../../styles/utils/focus.module.css.js";
4
- import elevationStyles from "../../styles/utils/elevation.module.css.js";
3
+ import { elevationStyles, focusStyles } from "../../styles/utils/index.js";
5
4
  import styles from "./ButtonCard.module.css.js";
6
5
  import { cn } from "../../utils/cn/cn.js";
7
6
  const ButtonCard = ({
@@ -24,6 +23,7 @@ const ButtonCard = ({
24
23
  elevationStyles.elevationLow,
25
24
  className
26
25
  );
26
+ const withContainer = (element) => size === "dynamic" ? /* @__PURE__ */ jsx("span", { className: styles["button-card-container"], children: element }) : element;
27
27
  const IconComponent = icon;
28
28
  const media = IconComponent != null ? /* @__PURE__ */ jsx(
29
29
  "span",
@@ -76,9 +76,12 @@ const ButtonCard = ({
76
76
  children: content
77
77
  };
78
78
  if (renderLink) {
79
+ if (size === "dynamic") {
80
+ return /* @__PURE__ */ jsx("span", { className: styles["button-card-container"], children: renderLink(linkProps) });
81
+ }
79
82
  return /* @__PURE__ */ jsx(Fragment, { children: renderLink(linkProps) });
80
83
  }
81
- return /* @__PURE__ */ jsx("a", { ...linkProps });
84
+ return withContainer(/* @__PURE__ */ jsx("a", { ...linkProps }));
82
85
  }
83
86
  const {
84
87
  type = "button",
@@ -88,15 +91,17 @@ const ButtonCard = ({
88
91
  renderLink: _renderLink,
89
92
  ...buttonProps
90
93
  } = props;
91
- return /* @__PURE__ */ jsx(
92
- "button",
93
- {
94
- ref,
95
- type,
96
- className: classes,
97
- ...buttonProps,
98
- children: content
99
- }
94
+ return withContainer(
95
+ /* @__PURE__ */ jsx(
96
+ "button",
97
+ {
98
+ ref,
99
+ type,
100
+ className: classes,
101
+ ...buttonProps,
102
+ children: content
103
+ }
104
+ )
100
105
  );
101
106
  };
102
107
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCard.js","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { ChevronRight, Open } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport elevationStyles from '../../styles/utils/elevation.module.css';\nimport styles from './ButtonCard.module.css';\nimport type { ButtonCardLinkProps, ButtonCardProps } from './ButtonCard.types';\n\nexport const ButtonCard = ({\n title,\n subtitle,\n size = 'medium',\n icon,\n image,\n isExternal = false,\n externalLinkAriaLabel = 'avautuu uuteen välilehteen',\n className,\n ref,\n ...props\n}: ButtonCardProps) => {\n const isAnchor = 'href' in props && (props as { href?: string }).href != null;\n\n const classes = cn(\n styles['button-card'],\n styles[`button-card--${size}`],\n focusStyles.focusable,\n elevationStyles.elevationLow,\n className,\n );\n\n const IconComponent = icon;\n\n const media =\n IconComponent != null ? (\n <span\n className={cn(styles['button-card__media'], styles['button-card__media--icon'])}\n aria-hidden=\"true\"\n >\n <IconComponent aria-hidden=\"true\" />\n </span>\n ) : image ? (\n <span className={cn(styles['button-card__media'], styles['button-card__media--image'])}>\n {image}\n </span>\n ) : null;\n\n const explicitTarget = isAnchor\n ? (props as { target?: string }).target?.toLowerCase()\n : undefined;\n // The link opens a new tab when isExternal is set or the target is _blank.\n const opensInNewTab = isExternal || explicitTarget === '_blank';\n const Indicator = opensInNewTab ? Open : ChevronRight;\n\n const content = (\n <>\n {media}\n <span className={styles['button-card__content']}>\n <span className={styles['button-card__text']}>\n <span className={styles['button-card__title']}>{title}</span>\n {subtitle != null && (\n <span className={styles['button-card__subtitle']}>{subtitle}</span>\n )}\n </span>\n <span className={styles['button-card__indicator']} aria-hidden=\"true\">\n <Indicator aria-hidden=\"true\" />\n </span>\n </span>\n {opensInNewTab && externalLinkAriaLabel && (\n <span className={styles['button-card__sr-only']}>\n {` (${externalLinkAriaLabel})`}\n </span>\n )}\n </>\n );\n\n if (isAnchor) {\n const {\n href,\n renderLink,\n target: targetProp,\n rel,\n disabled: _disabled,\n ...safeAnchorProps\n } = props as unknown as ComponentPropsWithRef<'a'> & {\n href: string;\n renderLink?: (props: ButtonCardLinkProps) => ReactNode;\n disabled?: boolean;\n };\n\n // isExternal is authoritative and forces a new tab; an explicit _blank is preserved.\n const target = isExternal ? '_blank' : targetProp;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n target,\n rel: hardenedRel,\n className: classes,\n children: content,\n };\n\n if (renderLink) {\n return <>{renderLink(linkProps)}</>;\n }\n\n return <a {...linkProps} />;\n }\n\n const {\n type = 'button',\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as unknown as ComponentPropsWithRef<'button'> & {\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n className={classes}\n {...buttonProps}\n >\n {content}\n </button>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ButtonCard.js","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { ChevronRight, Open } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport { elevationStyles, focusStyles } from '../../styles/utils';\nimport styles from './ButtonCard.module.css';\nimport type { ButtonCardLinkProps, ButtonCardProps } from './ButtonCard.types';\n\nexport const ButtonCard = ({\n title,\n subtitle,\n size = 'medium',\n icon,\n image,\n isExternal = false,\n externalLinkAriaLabel = 'avautuu uuteen välilehteen',\n className,\n ref,\n ...props\n}: ButtonCardProps) => {\n const isAnchor = 'href' in props && (props as { href?: string }).href != null;\n\n const classes = cn(\n styles['button-card'],\n styles[`button-card--${size}`],\n focusStyles.focusable,\n elevationStyles.elevationLow,\n className,\n );\n const withContainer = (element: ReactNode) =>\n size === 'dynamic' ? (\n <span className={styles['button-card-container']}>{element}</span>\n ) : (\n element\n );\n\n const IconComponent = icon;\n\n const media =\n IconComponent != null ? (\n <span\n className={cn(styles['button-card__media'], styles['button-card__media--icon'])}\n aria-hidden=\"true\"\n >\n <IconComponent aria-hidden=\"true\" />\n </span>\n ) : image ? (\n <span className={cn(styles['button-card__media'], styles['button-card__media--image'])}>\n {image}\n </span>\n ) : null;\n\n const explicitTarget = isAnchor\n ? (props as { target?: string }).target?.toLowerCase()\n : undefined;\n // The link opens a new tab when isExternal is set or the target is _blank.\n const opensInNewTab = isExternal || explicitTarget === '_blank';\n const Indicator = opensInNewTab ? Open : ChevronRight;\n\n const content = (\n <>\n {media}\n <span className={styles['button-card__content']}>\n <span className={styles['button-card__text']}>\n <span className={styles['button-card__title']}>{title}</span>\n {subtitle != null && (\n <span className={styles['button-card__subtitle']}>{subtitle}</span>\n )}\n </span>\n <span className={styles['button-card__indicator']} aria-hidden=\"true\">\n <Indicator aria-hidden=\"true\" />\n </span>\n </span>\n {opensInNewTab && externalLinkAriaLabel && (\n <span className={styles['button-card__sr-only']}>\n {` (${externalLinkAriaLabel})`}\n </span>\n )}\n </>\n );\n\n if (isAnchor) {\n const {\n href,\n renderLink,\n target: targetProp,\n rel,\n disabled: _disabled,\n ...safeAnchorProps\n } = props as unknown as ComponentPropsWithRef<'a'> & {\n href: string;\n renderLink?: (props: ButtonCardLinkProps) => ReactNode;\n disabled?: boolean;\n };\n\n // isExternal is authoritative and forces a new tab; an explicit _blank is preserved.\n const target = isExternal ? '_blank' : targetProp;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n target,\n rel: hardenedRel,\n className: classes,\n children: content,\n };\n\n if (renderLink) {\n if (size === 'dynamic') {\n return (\n <span className={styles['button-card-container']}>{renderLink(linkProps)}</span>\n );\n }\n\n return <>{renderLink(linkProps)}</>;\n }\n\n return withContainer(<a {...linkProps} />);\n }\n\n const {\n type = 'button',\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as unknown as ComponentPropsWithRef<'button'> & {\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return withContainer(\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n className={classes}\n {...buttonProps}\n >\n {content}\n </button>,\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,18 +1,20 @@
1
1
  require('./ButtonCard.css');
2
2
  "use strict";
3
3
  const styles = {
4
- "button-card": "_button-card_14hpp_1",
5
- "button-card--large": "_button-card--large_14hpp_37",
6
- "button-card--small": "_button-card--small_14hpp_42",
7
- "button-card__media": "_button-card__media_14hpp_59",
8
- "button-card__media--icon": "_button-card__media--icon_14hpp_72",
9
- "button-card__media--image": "_button-card__media--image_14hpp_85",
10
- "button-card__content": "_button-card__content_14hpp_100",
11
- "button-card__text": "_button-card__text_14hpp_108",
12
- "button-card__title": "_button-card__title_14hpp_117",
13
- "button-card__subtitle": "_button-card__subtitle_14hpp_118",
14
- "button-card__indicator": "_button-card__indicator_14hpp_140",
15
- "button-card__sr-only": "_button-card__sr-only_14hpp_156"
4
+ "button-card-container": "_button-card-container_je3cs_1",
5
+ "button-card": "_button-card_je3cs_1",
6
+ "button-card--large": "_button-card--large_je3cs_44",
7
+ "button-card--small": "_button-card--small_je3cs_49",
8
+ "button-card--dynamic": "_button-card--dynamic_je3cs_50",
9
+ "button-card__media": "_button-card__media_je3cs_91",
10
+ "button-card__media--icon": "_button-card__media--icon_je3cs_111",
11
+ "button-card__media--image": "_button-card__media--image_je3cs_124",
12
+ "button-card__content": "_button-card__content_je3cs_139",
13
+ "button-card__text": "_button-card__text_je3cs_147",
14
+ "button-card__title": "_button-card__title_je3cs_156",
15
+ "button-card__subtitle": "_button-card__subtitle_je3cs_157",
16
+ "button-card__indicator": "_button-card__indicator_je3cs_179",
17
+ "button-card__sr-only": "_button-card__sr-only_je3cs_195"
16
18
  };
17
19
  module.exports = styles;
18
20
  //# sourceMappingURL=ButtonCard.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCard.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ButtonCard.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -1,17 +1,19 @@
1
1
  import './ButtonCard.css';
2
2
  const styles = {
3
- "button-card": "_button-card_14hpp_1",
4
- "button-card--large": "_button-card--large_14hpp_37",
5
- "button-card--small": "_button-card--small_14hpp_42",
6
- "button-card__media": "_button-card__media_14hpp_59",
7
- "button-card__media--icon": "_button-card__media--icon_14hpp_72",
8
- "button-card__media--image": "_button-card__media--image_14hpp_85",
9
- "button-card__content": "_button-card__content_14hpp_100",
10
- "button-card__text": "_button-card__text_14hpp_108",
11
- "button-card__title": "_button-card__title_14hpp_117",
12
- "button-card__subtitle": "_button-card__subtitle_14hpp_118",
13
- "button-card__indicator": "_button-card__indicator_14hpp_140",
14
- "button-card__sr-only": "_button-card__sr-only_14hpp_156"
3
+ "button-card-container": "_button-card-container_je3cs_1",
4
+ "button-card": "_button-card_je3cs_1",
5
+ "button-card--large": "_button-card--large_je3cs_44",
6
+ "button-card--small": "_button-card--small_je3cs_49",
7
+ "button-card--dynamic": "_button-card--dynamic_je3cs_50",
8
+ "button-card__media": "_button-card__media_je3cs_91",
9
+ "button-card__media--icon": "_button-card__media--icon_je3cs_111",
10
+ "button-card__media--image": "_button-card__media--image_je3cs_124",
11
+ "button-card__content": "_button-card__content_je3cs_139",
12
+ "button-card__text": "_button-card__text_je3cs_147",
13
+ "button-card__title": "_button-card__title_je3cs_156",
14
+ "button-card__subtitle": "_button-card__subtitle_je3cs_157",
15
+ "button-card__indicator": "_button-card__indicator_je3cs_179",
16
+ "button-card__sr-only": "_button-card__sr-only_je3cs_195"
15
17
  };
16
18
  export {
17
19
  styles as default
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ButtonCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -5,8 +5,9 @@ import { ComponentPropsWithRef, ComponentType, ReactNode, SVGProps } from 'react
5
5
  * - `large` — Large text title (Heading XS).
6
6
  * - `medium` — Default title (Label LG Bold).
7
7
  * - `small` — Compact vertical layout (Label MD title).
8
+ * - `dynamic` — Size changes between small, medium, and large based on the container width.
8
9
  */
9
- export type ButtonCardSize = 'large' | 'medium' | 'small';
10
+ export type ButtonCardSize = 'large' | 'medium' | 'small' | 'dynamic';
10
11
  /** SVG icon component, for example `ChevronRight` from `@dnanpm/icons`. */
11
12
  export type ButtonCardIcon = ComponentType<SVGProps<SVGSVGElement>>;
12
13
  export interface ButtonCardLinkProps extends ComponentPropsWithRef<'a'> {
@@ -27,7 +28,7 @@ interface ButtonCardBaseProps {
27
28
  */
28
29
  readonly subtitle?: ReactNode;
29
30
  /**
30
- * Size variant controlling layout and typography.
31
+ * Size variant controlling layout and typography. `dynamic` responds to the available container width.
31
32
  * @default 'medium'
32
33
  */
33
34
  readonly size?: ButtonCardSize;
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,GAAG,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,mBAAmB;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;GAGG;AACH,KAAK,oBAAoB,GACnB;IACI,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CAC1B,GACD;IACI,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAER,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACzF,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG;IACvE,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;CACnE,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ButtonCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,GAAG,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,mBAAmB;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;GAGG;AACH,KAAK,oBAAoB,GACnB;IACI,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CAC1B,GACD;IACI,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAER,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACzF,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG;IACvE,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;CACnE,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const icons = require("@dnanpm/icons");
5
+ const react = require("react");
6
+ const index = require("../../styles/utils/index.cjs");
7
+ const Checkbox_module = require("./Checkbox.module.css.cjs");
8
+ const isRenderable = require("../../utils/isRenderable/isRenderable.cjs");
9
+ const cn = require("../../utils/cn/cn.cjs");
10
+ const Checkbox = ({
11
+ label,
12
+ showLabel = true,
13
+ description,
14
+ indeterminate = false,
15
+ error = false,
16
+ errorMessage,
17
+ onCheckedChange,
18
+ onChange,
19
+ id,
20
+ className,
21
+ style,
22
+ disabled,
23
+ required,
24
+ ref,
25
+ "aria-describedby": ariaDescribedBy,
26
+ "aria-invalid": ariaInvalid,
27
+ ...props
28
+ }) => {
29
+ const generatedId = react.useId();
30
+ const descriptionId = react.useId();
31
+ const errorId = react.useId();
32
+ const inputId = id ?? generatedId;
33
+ const hasDescription = isRenderable.isRenderable(description);
34
+ const hasErrorMessage = error && isRenderable.isRenderable(errorMessage);
35
+ const describedBy = [
36
+ hasDescription ? descriptionId : void 0,
37
+ hasErrorMessage ? errorId : void 0,
38
+ ariaDescribedBy
39
+ ].filter(Boolean).join(" ") || void 0;
40
+ const handleChange = (event) => {
41
+ onChange?.(event);
42
+ onCheckedChange?.(event.target.checked);
43
+ event.target.indeterminate = indeterminate;
44
+ };
45
+ return /* @__PURE__ */ jsxRuntime.jsxs(
46
+ "div",
47
+ {
48
+ className: cn.cn(Checkbox_module.default["checkbox"], error && Checkbox_module.default["checkbox--error"], className),
49
+ style,
50
+ children: [
51
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: Checkbox_module.default["checkbox__control"], children: [
52
+ /* @__PURE__ */ jsxRuntime.jsx(
53
+ "input",
54
+ {
55
+ ...props,
56
+ ref: (node) => {
57
+ if (node) node.indeterminate = indeterminate;
58
+ if (typeof ref === "function") return ref(node);
59
+ if (ref) ref.current = node;
60
+ return void 0;
61
+ },
62
+ type: "checkbox",
63
+ id: inputId,
64
+ className: cn.cn(Checkbox_module.default["checkbox__input"], index.focusStyles.focusable),
65
+ disabled,
66
+ required,
67
+ "aria-describedby": describedBy,
68
+ "aria-invalid": ariaInvalid ?? (error || void 0),
69
+ onChange: handleChange
70
+ }
71
+ ),
72
+ /* @__PURE__ */ jsxRuntime.jsx(
73
+ icons.CheckFilled,
74
+ {
75
+ "aria-hidden": "true",
76
+ className: cn.cn(Checkbox_module.default["checkbox__icon"], Checkbox_module.default["checkbox__icon--check"])
77
+ }
78
+ ),
79
+ /* @__PURE__ */ jsxRuntime.jsx(
80
+ icons.MinusFilled,
81
+ {
82
+ "aria-hidden": "true",
83
+ className: cn.cn(Checkbox_module.default["checkbox__icon"], Checkbox_module.default["checkbox__icon--minus"])
84
+ }
85
+ )
86
+ ] }),
87
+ /* @__PURE__ */ jsxRuntime.jsxs(
88
+ "label",
89
+ {
90
+ htmlFor: inputId,
91
+ className: cn.cn(Checkbox_module.default["checkbox__label"], !showLabel && Checkbox_module.default["checkbox__sr-only"]),
92
+ children: [
93
+ label,
94
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Checkbox_module.default["checkbox__required"], "aria-hidden": "true", children: "*" })
95
+ ]
96
+ }
97
+ ),
98
+ hasDescription && /* @__PURE__ */ jsxRuntime.jsx("div", { id: descriptionId, className: Checkbox_module.default["checkbox__description"], children: description }),
99
+ hasErrorMessage && /* @__PURE__ */ jsxRuntime.jsx("div", { id: errorId, className: Checkbox_module.default["checkbox__error"], children: errorMessage })
100
+ ]
101
+ }
102
+ );
103
+ };
104
+ exports.Checkbox = Checkbox;
105
+ //# sourceMappingURL=Checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.cjs","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { CheckFilled, MinusFilled } from '@dnanpm/icons';\nimport { useId } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { focusStyles } from '../../styles/utils';\nimport { cn } from '../../utils/cn';\nimport { isRenderable } from '../../utils/isRenderable';\nimport type { CheckboxProps } from './Checkbox.types';\nimport styles from './Checkbox.module.css';\n\nexport const Checkbox = ({\n label,\n showLabel = true,\n description,\n indeterminate = false,\n error = false,\n errorMessage,\n onCheckedChange,\n onChange,\n id,\n className,\n style,\n disabled,\n required,\n ref,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}: CheckboxProps) => {\n const generatedId = useId();\n const descriptionId = useId();\n const errorId = useId();\n const inputId = id ?? generatedId;\n\n const hasDescription = isRenderable(description);\n const hasErrorMessage = error && isRenderable(errorMessage);\n\n const describedBy =\n [\n hasDescription ? descriptionId : undefined,\n hasErrorMessage ? errorId : undefined,\n ariaDescribedBy,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n onCheckedChange?.(event.target.checked);\n // The browser clears `indeterminate` on click. Restore it from the prop, so it stays\n // until the consumer sets the prop to false, even when nothing re-renders.\n event.target.indeterminate = indeterminate;\n };\n\n return (\n <div\n className={cn(styles['checkbox'], error && styles['checkbox--error'], className)}\n style={style}\n >\n <span className={styles['checkbox__control']}>\n <input\n {...props}\n ref={(node) => {\n // `indeterminate` has no HTML attribute, so it is set on the DOM node.\n // The inline callback runs on every render, so a changed prop is applied.\n // A cleanup function returned by a callback ref is passed on to React.\n if (node) node.indeterminate = indeterminate;\n if (typeof ref === 'function') return ref(node);\n if (ref) ref.current = node;\n return undefined;\n }}\n type=\"checkbox\"\n id={inputId}\n className={cn(styles['checkbox__input'], focusStyles.focusable)}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={ariaInvalid ?? (error || undefined)}\n onChange={handleChange}\n />\n <CheckFilled\n aria-hidden=\"true\"\n className={cn(styles['checkbox__icon'], styles['checkbox__icon--check'])}\n />\n <MinusFilled\n aria-hidden=\"true\"\n className={cn(styles['checkbox__icon'], styles['checkbox__icon--minus'])}\n />\n </span>\n <label\n htmlFor={inputId}\n className={cn(styles['checkbox__label'], !showLabel && styles['checkbox__sr-only'])}\n >\n {label}\n {required && (\n <span className={styles['checkbox__required']} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n {hasDescription && (\n <div id={descriptionId} className={styles['checkbox__description']}>\n {description}\n </div>\n )}\n {hasErrorMessage && (\n <div id={errorId} className={styles['checkbox__error']}>\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n"],"names":["useId","isRenderable","jsxs","cn","styles","jsx","focusStyles","CheckFilled","MinusFilled"],"mappings":"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"}