@dnanpm/ui-components 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/components/Accordion/Accordion.css +6 -3
  2. package/dist/components/AccordionItem/AccordionItem.css +6 -3
  3. package/dist/components/Breadcrumb/Breadcrumb.css +15 -12
  4. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
  5. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
  6. package/dist/components/Button/Button.css +33 -32
  7. package/dist/components/Button/Button.module.css.cjs +11 -11
  8. package/dist/components/Button/Button.module.css.js +11 -11
  9. package/dist/components/ButtonCard/ButtonCard.cjs +105 -0
  10. package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -0
  11. package/dist/components/ButtonCard/ButtonCard.css +166 -0
  12. package/dist/components/ButtonCard/ButtonCard.d.ts +3 -0
  13. package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -0
  14. package/dist/components/ButtonCard/ButtonCard.js +105 -0
  15. package/dist/components/ButtonCard/ButtonCard.js.map +1 -0
  16. package/dist/components/ButtonCard/ButtonCard.module.css.cjs +18 -0
  17. package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -0
  18. package/dist/components/ButtonCard/ButtonCard.module.css.js +19 -0
  19. package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -0
  20. package/dist/components/ButtonCard/ButtonCard.types.d.ts +103 -0
  21. package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -0
  22. package/dist/components/ButtonCard/index.d.ts +3 -0
  23. package/dist/components/ButtonCard/index.d.ts.map +1 -0
  24. package/dist/components/ContentCard/ContentCard.cjs +96 -0
  25. package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
  26. package/dist/components/ContentCard/ContentCard.css +249 -0
  27. package/dist/components/ContentCard/ContentCard.d.ts +3 -0
  28. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
  29. package/dist/components/ContentCard/ContentCard.js +96 -0
  30. package/dist/components/ContentCard/ContentCard.js.map +1 -0
  31. package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
  32. package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
  33. package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
  34. package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
  35. package/dist/components/ContentCard/ContentCard.types.d.ts +99 -0
  36. package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
  37. package/dist/components/ContentCard/index.d.ts +3 -0
  38. package/dist/components/ContentCard/index.d.ts.map +1 -0
  39. package/dist/components/Drawer/Drawer.cjs +101 -0
  40. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  41. package/dist/components/Drawer/Drawer.css +218 -0
  42. package/dist/components/Drawer/Drawer.d.ts +3 -0
  43. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  44. package/dist/components/Drawer/Drawer.js +101 -0
  45. package/dist/components/Drawer/Drawer.js.map +1 -0
  46. package/dist/components/Drawer/Drawer.module.css.cjs +37 -0
  47. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
  48. package/dist/components/Drawer/Drawer.module.css.js +37 -0
  49. package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
  50. package/dist/components/Drawer/Drawer.types.d.ts +63 -0
  51. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  52. package/dist/components/Drawer/index.d.ts +3 -0
  53. package/dist/components/Drawer/index.d.ts.map +1 -0
  54. package/dist/components/Footer/Footer.css +87 -77
  55. package/dist/components/Footer/Footer.module.css.cjs +39 -39
  56. package/dist/components/Footer/Footer.module.css.js +39 -39
  57. package/dist/components/FunctionButton/FunctionButton.cjs +34 -0
  58. package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -0
  59. package/dist/components/FunctionButton/FunctionButton.css +124 -0
  60. package/dist/components/FunctionButton/FunctionButton.d.ts +3 -0
  61. package/dist/components/FunctionButton/FunctionButton.d.ts.map +1 -0
  62. package/dist/components/FunctionButton/FunctionButton.js +34 -0
  63. package/dist/components/FunctionButton/FunctionButton.js.map +1 -0
  64. package/dist/components/FunctionButton/FunctionButton.module.css.cjs +11 -0
  65. package/dist/components/FunctionButton/FunctionButton.module.css.cjs.map +1 -0
  66. package/dist/components/FunctionButton/FunctionButton.module.css.js +12 -0
  67. package/dist/components/FunctionButton/FunctionButton.module.css.js.map +1 -0
  68. package/dist/components/FunctionButton/FunctionButton.types.d.ts +21 -0
  69. package/dist/components/FunctionButton/FunctionButton.types.d.ts.map +1 -0
  70. package/dist/components/FunctionButton/index.d.ts +3 -0
  71. package/dist/components/FunctionButton/index.d.ts.map +1 -0
  72. package/dist/components/Hero/Hero.cjs +24 -26
  73. package/dist/components/Hero/Hero.cjs.map +1 -1
  74. package/dist/components/Hero/Hero.css +81 -74
  75. package/dist/components/Hero/Hero.js +24 -26
  76. package/dist/components/Hero/Hero.js.map +1 -1
  77. package/dist/components/Hero/Hero.module.css.cjs +20 -17
  78. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  79. package/dist/components/Hero/Hero.module.css.js +20 -17
  80. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  81. package/dist/components/IconButton/IconButton.css +32 -34
  82. package/dist/components/IconButton/IconButton.module.css.cjs +9 -9
  83. package/dist/components/IconButton/IconButton.module.css.js +9 -9
  84. package/dist/components/Label/Label.css +2 -3
  85. package/dist/components/MainNavigation/MainNavigation.cjs +415 -120
  86. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
  87. package/dist/components/MainNavigation/MainNavigation.css +265 -159
  88. package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
  89. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
  90. package/dist/components/MainNavigation/MainNavigation.js +417 -122
  91. package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
  92. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +78 -68
  93. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
  94. package/dist/components/MainNavigation/MainNavigation.module.css.js +78 -68
  95. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
  96. package/dist/components/MainNavigation/MainNavigation.types.d.ts +64 -17
  97. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
  98. package/dist/components/MainNavigation/MainNavigation.utils.cjs +20 -0
  99. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
  100. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +10 -1
  101. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
  102. package/dist/components/MainNavigation/MainNavigation.utils.js +20 -0
  103. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
  104. package/dist/components/MainNavigation/index.d.ts +1 -1
  105. package/dist/components/MainNavigation/index.d.ts.map +1 -1
  106. package/dist/components/Modal/Modal.cjs +101 -0
  107. package/dist/components/Modal/Modal.cjs.map +1 -0
  108. package/dist/components/Modal/Modal.css +204 -0
  109. package/dist/components/Modal/Modal.d.ts +3 -0
  110. package/dist/components/Modal/Modal.d.ts.map +1 -0
  111. package/dist/components/Modal/Modal.js +101 -0
  112. package/dist/components/Modal/Modal.js.map +1 -0
  113. package/dist/components/Modal/Modal.module.css.cjs +39 -0
  114. package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
  115. package/dist/components/Modal/Modal.module.css.js +39 -0
  116. package/dist/components/Modal/Modal.module.css.js.map +1 -0
  117. package/dist/components/Modal/Modal.types.d.ts +62 -0
  118. package/dist/components/Modal/Modal.types.d.ts.map +1 -0
  119. package/dist/components/Modal/index.d.ts +3 -0
  120. package/dist/components/Modal/index.d.ts.map +1 -0
  121. package/dist/components/Modal/useDialogDismissal.cjs +41 -0
  122. package/dist/components/Modal/useDialogDismissal.cjs.map +1 -0
  123. package/dist/components/Modal/useDialogDismissal.d.ts +17 -0
  124. package/dist/components/Modal/useDialogDismissal.d.ts.map +1 -0
  125. package/dist/components/Modal/useDialogDismissal.js +41 -0
  126. package/dist/components/Modal/useDialogDismissal.js.map +1 -0
  127. package/dist/components/Modal/useNativeDialog.cjs +126 -0
  128. package/dist/components/Modal/useNativeDialog.cjs.map +1 -0
  129. package/dist/components/Modal/useNativeDialog.d.ts +14 -0
  130. package/dist/components/Modal/useNativeDialog.d.ts.map +1 -0
  131. package/dist/components/Modal/useNativeDialog.js +126 -0
  132. package/dist/components/Modal/useNativeDialog.js.map +1 -0
  133. package/dist/components/Notification/Notification.css +6 -3
  134. package/dist/components/Pictograph/Pictograph.css +6 -3
  135. package/dist/components/Pictograph/PictographItem.css +6 -3
  136. package/dist/components/Quote/Quote.css +2 -3
  137. package/dist/components/Spinner/Spinner.css +6 -3
  138. package/dist/index.cjs +10 -0
  139. package/dist/index.cjs.map +1 -1
  140. package/dist/index.d.ts +11 -1
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +10 -0
  143. package/dist/index.js.map +1 -1
  144. package/dist/styles/utils/elevation.css +2 -3
  145. package/dist/styles/utils/elevation.module.css.cjs +3 -0
  146. package/dist/styles/utils/elevation.module.css.cjs.map +1 -1
  147. package/dist/styles/utils/elevation.module.css.js +4 -1
  148. package/dist/styles/utils/elevation.module.css.js.map +1 -1
  149. package/dist/styles/utils/focus.css +26 -24
  150. package/dist/styles/utils/focus.module.css.cjs +3 -6
  151. package/dist/styles/utils/focus.module.css.cjs.map +1 -1
  152. package/dist/styles/utils/focus.module.css.js +4 -7
  153. package/dist/styles/utils/focus.module.css.js.map +1 -1
  154. package/dist/styles/utils/overlay.css +2 -3
  155. package/dist/styles/utils/text-decoration.css +4 -4
  156. package/dist/styles/utils/text-decoration.module.css.cjs +2 -2
  157. package/dist/styles/utils/text-decoration.module.css.js +2 -2
  158. package/dist/styles.css +17 -7
  159. package/package.json +3 -3
@@ -1,4 +1,8 @@
1
- @layer dds-components {/**
1
+ @layer dds-base, dds-components;
2
+
3
+ @layer dds-components { @layer fallback, components; }
4
+
5
+ @layer dds-components.components{/**
2
6
  * Accordion Component Styles
3
7
  *
4
8
  * Layout wrapper that spaces AccordionItem children evenly.
@@ -15,5 +19,4 @@
15
19
 
16
20
  ._accordion--panel_18qm2_16 {
17
21
  gap: 0;
18
- }
19
- }
22
+ } }
@@ -1,4 +1,8 @@
1
- @layer dds-components {/**
1
+ @layer dds-base, dds-components;
2
+
3
+ @layer dds-components { @layer fallback, components; }
4
+
5
+ @layer dds-components.components{/**
2
6
  * AccordionItem Component Styles
3
7
  *
4
8
  * Uses native <details> element for expand/collapse behavior.
@@ -124,5 +128,4 @@
124
128
  /* calc-size() function allows transition to height: auto; */
125
129
  block-size: calc-size(auto, size);
126
130
  }
127
- }
128
- }
131
+ } }
@@ -1,4 +1,8 @@
1
- @layer dds-components {/**
1
+ @layer dds-base, dds-components;
2
+
3
+ @layer dds-components { @layer fallback, components; }
4
+
5
+ @layer dds-components.components{/**
2
6
  * Breadcrumb Component Styles
3
7
  *
4
8
  * Design tokens are consumed via CSS custom properties (variables).
@@ -7,14 +11,14 @@
7
11
  * Uses a container query (ch units) to switch between default and collapsed mode.
8
12
  */
9
13
 
10
- ._breadcrumb_1q2qc_10 {
14
+ ._breadcrumb_1c8nk_10 {
11
15
  container-name: breadcrumb;
12
16
  container-type: inline-size;
13
17
  width: 100%;
14
18
  overflow: hidden;
15
19
  }
16
20
 
17
- ._breadcrumb__list_1q2qc_17 {
21
+ ._breadcrumb__list_1c8nk_17 {
18
22
  display: flex;
19
23
  align-items: center;
20
24
  gap: var(--spacing-space-4);
@@ -23,7 +27,7 @@
23
27
  list-style: none;
24
28
  }
25
29
 
26
- ._breadcrumb__item_1q2qc_26 {
30
+ ._breadcrumb__item_1c8nk_26 {
27
31
  flex: 0 0 auto;
28
32
  margin: 0;
29
33
  padding: 0;
@@ -42,21 +46,21 @@
42
46
  }
43
47
  }
44
48
 
45
- ._breadcrumb__link_1q2qc_45 {
49
+ ._breadcrumb__link_1c8nk_45 {
46
50
  color: var(--color-semantic-interactive-primary-default);
47
- border-radius: var(--radius-semantic-sm);
48
51
  }
49
52
 
50
- ._breadcrumb__link_1q2qc_45:hover {
53
+ ._breadcrumb__link_1c8nk_45:hover,
54
+ ._breadcrumb__link_1c8nk_45:focus-visible {
51
55
  color: var(--color-semantic-interactive-primary-hover);
52
56
  }
53
57
 
54
- ._breadcrumb__current_1q2qc_54 {
58
+ ._breadcrumb__current_1c8nk_54 {
55
59
  overflow: hidden;
56
60
  text-overflow: ellipsis;
57
61
  }
58
62
 
59
- ._breadcrumb__separator_1q2qc_59 {
63
+ ._breadcrumb__separator_1c8nk_59 {
60
64
  flex: 0 0 auto;
61
65
  width: 0.875rem;
62
66
  height: 0.875rem;
@@ -65,8 +69,7 @@
65
69
 
66
70
  /* Collapsed mode: hide all items except the last two */
67
71
  @container breadcrumb (max-width: 75ch) {
68
- ._breadcrumb__item_1q2qc_26:not(:nth-last-child(-n + 2)) {
72
+ ._breadcrumb__item_1c8nk_26:not(:nth-last-child(-n + 2)) {
69
73
  display: none;
70
74
  }
71
- }
72
- }
75
+ } }
@@ -1,12 +1,12 @@
1
1
  require('./Breadcrumb.css');
2
2
  "use strict";
3
3
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
- const breadcrumb = "_breadcrumb_1q2qc_10";
5
- const breadcrumb__list = "_breadcrumb__list_1q2qc_17";
6
- const breadcrumb__item = "_breadcrumb__item_1q2qc_26";
7
- const breadcrumb__link = "_breadcrumb__link_1q2qc_45";
8
- const breadcrumb__current = "_breadcrumb__current_1q2qc_54";
9
- const breadcrumb__separator = "_breadcrumb__separator_1q2qc_59";
4
+ const breadcrumb = "_breadcrumb_1c8nk_10";
5
+ const breadcrumb__list = "_breadcrumb__list_1c8nk_17";
6
+ const breadcrumb__item = "_breadcrumb__item_1c8nk_26";
7
+ const breadcrumb__link = "_breadcrumb__link_1c8nk_45";
8
+ const breadcrumb__current = "_breadcrumb__current_1c8nk_54";
9
+ const breadcrumb__separator = "_breadcrumb__separator_1c8nk_59";
10
10
  const styles = {
11
11
  breadcrumb,
12
12
  breadcrumb__list,
@@ -1,10 +1,10 @@
1
1
  import './Breadcrumb.css';
2
- const breadcrumb = "_breadcrumb_1q2qc_10";
3
- const breadcrumb__list = "_breadcrumb__list_1q2qc_17";
4
- const breadcrumb__item = "_breadcrumb__item_1q2qc_26";
5
- const breadcrumb__link = "_breadcrumb__link_1q2qc_45";
6
- const breadcrumb__current = "_breadcrumb__current_1q2qc_54";
7
- const breadcrumb__separator = "_breadcrumb__separator_1q2qc_59";
2
+ const breadcrumb = "_breadcrumb_1c8nk_10";
3
+ const breadcrumb__list = "_breadcrumb__list_1c8nk_17";
4
+ const breadcrumb__item = "_breadcrumb__item_1c8nk_26";
5
+ const breadcrumb__link = "_breadcrumb__link_1c8nk_45";
6
+ const breadcrumb__current = "_breadcrumb__current_1c8nk_54";
7
+ const breadcrumb__separator = "_breadcrumb__separator_1c8nk_59";
8
8
  const styles = {
9
9
  breadcrumb,
10
10
  breadcrumb__list,
@@ -1,4 +1,4 @@
1
- @layer dds-components {._button_tpbgh_1 {
1
+ @layer dds-base, dds-components;@layer dds-components { @layer fallback, components; }@layer dds-components.components{._button_1utks_1 {
2
2
  display: inline-flex;
3
3
  align-items: center;
4
4
  justify-content: center;
@@ -15,21 +15,21 @@
15
15
  border-color 0.2s ease-in-out;
16
16
  }
17
17
 
18
- ._button--full-width_tpbgh_18 {
18
+ ._button--full-width_1utks_18 {
19
19
  width: 100%;
20
20
  min-width: 0;
21
21
  }
22
22
 
23
23
  /* ─── Sizes ─── */
24
24
 
25
- ._button--normal_tpbgh_25 {
25
+ ._button--normal_1utks_25 {
26
26
  font: var(--typography-label-lg-bold);
27
27
  height: 40px;
28
28
  min-width: 128px;
29
29
  padding: var(--spacing-space-8) var(--spacing-space-20);
30
30
  }
31
31
 
32
- ._button--small_tpbgh_32 {
32
+ ._button--small_1utks_32 {
33
33
  font: var(--typography-label-md-bold);
34
34
  height: 32px;
35
35
  min-width: 100px;
@@ -38,91 +38,92 @@
38
38
 
39
39
  /* ─── Primary variant ─── */
40
40
 
41
- ._button--primary_tpbgh_41 {
41
+ ._button--primary_1utks_41 {
42
42
  background-color: var(--color-semantic-interactive-primary-default);
43
43
  color: var(--color-semantic-foreground-inverse);
44
44
  }
45
45
 
46
- ._button--primary_tpbgh_41:hover {
46
+ ._button--primary_1utks_41:hover {
47
47
  background-color: var(--color-semantic-interactive-primary-hover);
48
48
  color: var(--color-semantic-foreground-inverse);
49
49
  }
50
50
 
51
- ._button--primary_tpbgh_41:active {
51
+ ._button--primary_1utks_41:active {
52
52
  background-color: var(--color-semantic-interactive-primary-active);
53
53
  color: var(--color-semantic-foreground-inverse);
54
54
  }
55
55
 
56
- ._button--primary_tpbgh_41:focus-visible {
56
+ ._button--primary_1utks_41:focus-visible {
57
57
  background-color: var(--color-semantic-interactive-primary-focus);
58
58
  color: var(--color-semantic-foreground-inverse);
59
59
  }
60
60
 
61
61
  /* ─── Secondary variant ─── */
62
62
 
63
- ._button--secondary_tpbgh_63 {
63
+ ._button--secondary_1utks_63 {
64
64
  background-color: transparent;
65
65
  border: var(--borderwidth-semantic-sm) solid var(--color-semantic-interactive-secondary-default);
66
66
  color: var(--color-semantic-foreground-secondary-strong);
67
67
  }
68
68
 
69
- ._button--secondary_tpbgh_63:hover {
69
+ ._button--secondary_1utks_63:hover {
70
70
  background-color: var(--color-semantic-interactive-secondary-hover);
71
71
  border-color: var(--color-semantic-interactive-secondary-hover);
72
72
  color: var(--color-semantic-foreground-inverse);
73
73
  }
74
74
 
75
- ._button--secondary_tpbgh_63:active {
75
+ ._button--secondary_1utks_63:active {
76
76
  background-color: var(--color-semantic-interactive-secondary-active);
77
77
  border-color: var(--color-semantic-interactive-secondary-active);
78
78
  color: var(--color-semantic-foreground-inverse);
79
79
  }
80
80
 
81
- ._button--secondary_tpbgh_63:focus-visible {
81
+ ._button--secondary_1utks_63:focus-visible {
82
82
  background-color: var(--color-semantic-interactive-secondary-focus);
83
+ border-color: var(--color-semantic-interactive-secondary-focus);
83
84
  color: var(--color-semantic-foreground-inverse);
84
85
  }
85
86
 
86
87
  /* ─── Tertiary variant ─── */
87
88
 
88
- ._button--tertiary_tpbgh_88 {
89
+ ._button--tertiary_1utks_89 {
89
90
  background-color: var(--color-semantic-interactive-neutral-default);
90
91
  border: var(--borderwidth-semantic-sm) solid var(--color-semantic-border-neutral-mid);
91
92
  color: var(--color-semantic-foreground-secondary-strong);
92
93
  }
93
94
 
94
- ._button--tertiary_tpbgh_88:hover {
95
+ ._button--tertiary_1utks_89:hover {
95
96
  background-color: var(--color-semantic-interactive-neutral-hover);
96
97
  color: var(--color-semantic-foreground-secondary-strong);
97
98
  }
98
99
 
99
- ._button--tertiary_tpbgh_88:active {
100
+ ._button--tertiary_1utks_89:active {
100
101
  background-color: var(--color-semantic-interactive-neutral-active);
101
102
  color: var(--color-semantic-foreground-secondary-strong);
102
103
  }
103
104
 
104
- ._button--tertiary_tpbgh_88:focus-visible {
105
+ ._button--tertiary_1utks_89:focus-visible {
105
106
  background-color: var(--color-semantic-interactive-neutral-focus);
106
107
  color: var(--color-semantic-foreground-secondary-strong);
107
108
  }
108
109
 
109
110
  /* ─── Disabled state ─── */
110
111
 
111
- ._button--disabled_tpbgh_111 {
112
+ ._button--disabled_1utks_112 {
112
113
  pointer-events: none;
113
114
  }
114
115
 
115
- ._button--primary_tpbgh_41._button--disabled_tpbgh_111 {
116
+ ._button--primary_1utks_41._button--disabled_1utks_112 {
116
117
  background-color: var(--color-semantic-interactive-primary-disabled);
117
118
  color: var(--color-semantic-foreground-muted);
118
119
  }
119
120
 
120
- ._button--secondary_tpbgh_63._button--disabled_tpbgh_111 {
121
+ ._button--secondary_1utks_63._button--disabled_1utks_112 {
121
122
  border-color: var(--color-semantic-interactive-secondary-disabled);
122
123
  color: var(--color-semantic-foreground-muted);
123
124
  }
124
125
 
125
- ._button--tertiary_tpbgh_88._button--disabled_tpbgh_111 {
126
+ ._button--tertiary_1utks_89._button--disabled_1utks_112 {
126
127
  background-color: var(--color-semantic-interactive-neutral-disabled);
127
128
  color: var(--color-semantic-foreground-muted);
128
129
  }
@@ -131,38 +132,39 @@
131
132
  /* Styles apply from [data-color-scheme="dark"] down to (but not into) [data-color-scheme="light"]. */
132
133
 
133
134
  @scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
134
- ._button--primary_tpbgh_41._button--disabled_tpbgh_111 {
135
+ ._button--primary_1utks_41._button--disabled_1utks_112 {
135
136
  color: var(--color-semantic-foreground-inverse-muted);
136
137
  }
137
138
 
138
- ._button--secondary_tpbgh_63 {
139
+ ._button--secondary_1utks_63 {
139
140
  border-color: var(--color-semantic-interactive-inverse-default);
140
141
  color: var(--color-semantic-foreground-inverse);
141
142
  }
142
143
 
143
- ._button--secondary_tpbgh_63:hover {
144
+ ._button--secondary_1utks_63:hover {
144
145
  background-color: var(--color-semantic-interactive-inverse-hover);
145
146
  border-color: var(--color-semantic-interactive-inverse-hover);
146
147
  color: var(--color-semantic-foreground-secondary-strong);
147
148
  }
148
149
 
149
- ._button--secondary_tpbgh_63:active {
150
+ ._button--secondary_1utks_63:active {
150
151
  background-color: var(--color-semantic-interactive-inverse-active);
151
152
  border-color: var(--color-semantic-interactive-inverse-active);
152
153
  color: var(--color-semantic-foreground-secondary-strong);
153
154
  }
154
155
 
155
- ._button--secondary_tpbgh_63:focus-visible {
156
+ ._button--secondary_1utks_63:focus-visible {
156
157
  background-color: var(--color-semantic-interactive-inverse-focus);
158
+ border-color: var(--color-semantic-interactive-inverse-focus);
157
159
  color: var(--color-semantic-foreground-secondary-strong);
158
160
  }
159
161
 
160
- ._button--secondary_tpbgh_63._button--disabled_tpbgh_111 {
162
+ ._button--secondary_1utks_63._button--disabled_1utks_112 {
161
163
  border-color: var(--color-semantic-interactive-inverse-disabled);
162
164
  color: var(--color-semantic-foreground-inverse-muted);
163
165
  }
164
166
 
165
- ._button--tertiary_tpbgh_88._button--disabled_tpbgh_111 {
167
+ ._button--tertiary_1utks_89._button--disabled_1utks_112 {
166
168
  border-color: var(--color-semantic-interactive-neutral-disabled);
167
169
  color: var(--color-semantic-foreground-inverse-muted);
168
170
  }
@@ -170,11 +172,11 @@
170
172
 
171
173
  /* ─── Loading state ─── */
172
174
 
173
- ._button--loading_tpbgh_173 {
175
+ ._button--loading_1utks_175 {
174
176
  pointer-events: none;
175
177
  }
176
178
 
177
- ._button__content_tpbgh_177 {
179
+ ._button__content_1utks_179 {
178
180
  flex: 0 1 auto;
179
181
  min-width: 0;
180
182
  overflow: hidden;
@@ -182,7 +184,6 @@
182
184
  white-space: nowrap;
183
185
  }
184
186
 
185
- ._button__spinner_tpbgh_185 {
187
+ ._button__spinner_1utks_187 {
186
188
  flex: 0 0 auto;
187
- }
188
- }
189
+ } }
@@ -1,19 +1,19 @@
1
1
  require('./Button.css');
2
2
  "use strict";
3
3
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
- const button = "_button_tpbgh_1";
5
- const button__content = "_button__content_tpbgh_177";
6
- const button__spinner = "_button__spinner_tpbgh_185";
4
+ const button = "_button_1utks_1";
5
+ const button__content = "_button__content_1utks_179";
6
+ const button__spinner = "_button__spinner_1utks_187";
7
7
  const styles = {
8
8
  button,
9
- "button--full-width": "_button--full-width_tpbgh_18",
10
- "button--normal": "_button--normal_tpbgh_25",
11
- "button--small": "_button--small_tpbgh_32",
12
- "button--primary": "_button--primary_tpbgh_41",
13
- "button--secondary": "_button--secondary_tpbgh_63",
14
- "button--tertiary": "_button--tertiary_tpbgh_88",
15
- "button--disabled": "_button--disabled_tpbgh_111",
16
- "button--loading": "_button--loading_tpbgh_173",
9
+ "button--full-width": "_button--full-width_1utks_18",
10
+ "button--normal": "_button--normal_1utks_25",
11
+ "button--small": "_button--small_1utks_32",
12
+ "button--primary": "_button--primary_1utks_41",
13
+ "button--secondary": "_button--secondary_1utks_63",
14
+ "button--tertiary": "_button--tertiary_1utks_89",
15
+ "button--disabled": "_button--disabled_1utks_112",
16
+ "button--loading": "_button--loading_1utks_175",
17
17
  button__content,
18
18
  button__spinner
19
19
  };
@@ -1,17 +1,17 @@
1
1
  import './Button.css';
2
- const button = "_button_tpbgh_1";
3
- const button__content = "_button__content_tpbgh_177";
4
- const button__spinner = "_button__spinner_tpbgh_185";
2
+ const button = "_button_1utks_1";
3
+ const button__content = "_button__content_1utks_179";
4
+ const button__spinner = "_button__spinner_1utks_187";
5
5
  const styles = {
6
6
  button,
7
- "button--full-width": "_button--full-width_tpbgh_18",
8
- "button--normal": "_button--normal_tpbgh_25",
9
- "button--small": "_button--small_tpbgh_32",
10
- "button--primary": "_button--primary_tpbgh_41",
11
- "button--secondary": "_button--secondary_tpbgh_63",
12
- "button--tertiary": "_button--tertiary_tpbgh_88",
13
- "button--disabled": "_button--disabled_tpbgh_111",
14
- "button--loading": "_button--loading_tpbgh_173",
7
+ "button--full-width": "_button--full-width_1utks_18",
8
+ "button--normal": "_button--normal_1utks_25",
9
+ "button--small": "_button--small_1utks_32",
10
+ "button--primary": "_button--primary_1utks_41",
11
+ "button--secondary": "_button--secondary_1utks_63",
12
+ "button--tertiary": "_button--tertiary_1utks_89",
13
+ "button--disabled": "_button--disabled_1utks_112",
14
+ "button--loading": "_button--loading_1utks_175",
15
15
  button__content,
16
16
  button__spinner
17
17
  };
@@ -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 focus_module = require("../../styles/utils/focus.module.css.cjs");
6
+ const elevation_module = require("../../styles/utils/elevation.module.css.cjs");
7
+ const ButtonCard_module = require("./ButtonCard.module.css.cjs");
8
+ const cn = require("../../utils/cn/cn.cjs");
9
+ const ButtonCard = ({
10
+ title,
11
+ subtitle,
12
+ size = "medium",
13
+ icon,
14
+ image,
15
+ isExternal = false,
16
+ externalLinkAriaLabel = "avautuu uuteen välilehteen",
17
+ className,
18
+ ref,
19
+ ...props
20
+ }) => {
21
+ const isAnchor = "href" in props && props.href != null;
22
+ const classes = cn.cn(
23
+ ButtonCard_module["button-card"],
24
+ ButtonCard_module[`button-card--${size}`],
25
+ focus_module.default.focusable,
26
+ elevation_module.default.elevationLow,
27
+ className
28
+ );
29
+ const IconComponent = icon;
30
+ const media = IconComponent != null ? /* @__PURE__ */ jsxRuntime.jsx(
31
+ "span",
32
+ {
33
+ className: cn.cn(ButtonCard_module["button-card__media"], ButtonCard_module["button-card__media--icon"]),
34
+ "aria-hidden": "true",
35
+ children: /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { "aria-hidden": "true" })
36
+ }
37
+ ) : image ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn.cn(ButtonCard_module["button-card__media"], ButtonCard_module["button-card__media--image"]), children: image }) : null;
38
+ const explicitTarget = isAnchor ? props.target?.toLowerCase() : void 0;
39
+ const opensInNewTab = isExternal || explicitTarget === "_blank";
40
+ const Indicator = opensInNewTab ? icons.Open : icons.ChevronRight;
41
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
42
+ media,
43
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: ButtonCard_module["button-card__content"], children: [
44
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: ButtonCard_module["button-card__text"], children: [
45
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ButtonCard_module["button-card__title"], children: title }),
46
+ subtitle != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ButtonCard_module["button-card__subtitle"], children: subtitle })
47
+ ] }),
48
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ButtonCard_module["button-card__indicator"], "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(Indicator, { "aria-hidden": "true" }) })
49
+ ] }),
50
+ opensInNewTab && externalLinkAriaLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ButtonCard_module["button-card__sr-only"], children: ` (${externalLinkAriaLabel})` })
51
+ ] });
52
+ if (isAnchor) {
53
+ const {
54
+ href,
55
+ renderLink,
56
+ target: targetProp,
57
+ rel,
58
+ disabled: _disabled,
59
+ ...safeAnchorProps
60
+ } = props;
61
+ const target = isExternal ? "_blank" : targetProp;
62
+ const shouldHardenRel = target?.toLowerCase() === "_blank";
63
+ const relTokens = new Set(
64
+ (rel ?? "").split(/\s+/).filter(Boolean).map((token) => token.toLowerCase())
65
+ );
66
+ if (shouldHardenRel) {
67
+ relTokens.add("noopener");
68
+ relTokens.add("noreferrer");
69
+ }
70
+ const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(" ") : void 0;
71
+ const linkProps = {
72
+ ...safeAnchorProps,
73
+ ref,
74
+ href,
75
+ target,
76
+ rel: hardenedRel,
77
+ className: classes,
78
+ children: content
79
+ };
80
+ if (renderLink) {
81
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderLink(linkProps) });
82
+ }
83
+ return /* @__PURE__ */ jsxRuntime.jsx("a", { ...linkProps });
84
+ }
85
+ const {
86
+ type = "button",
87
+ href: _href,
88
+ target: _target,
89
+ rel: _rel,
90
+ renderLink: _renderLink,
91
+ ...buttonProps
92
+ } = props;
93
+ return /* @__PURE__ */ jsxRuntime.jsx(
94
+ "button",
95
+ {
96
+ ref,
97
+ type,
98
+ className: classes,
99
+ ...buttonProps,
100
+ children: content
101
+ }
102
+ );
103
+ };
104
+ exports.ButtonCard = ButtonCard;
105
+ //# sourceMappingURL=ButtonCard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonCard.cjs","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":["cn","styles","focusStyles","elevationStyles","jsx","Open","ChevronRight","jsxs","Fragment"],"mappings":"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"}