@cloudscape-design/components 3.0.1048 → 3.0.1050

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 (84) hide show
  1. package/alert/interfaces.d.ts +8 -8
  2. package/alert/interfaces.js.map +1 -1
  3. package/attribute-editor/styles.css.js +15 -15
  4. package/attribute-editor/styles.scoped.css +28 -28
  5. package/attribute-editor/styles.selectors.js +15 -15
  6. package/breadcrumb-group/item/styles.css.js +7 -7
  7. package/breadcrumb-group/item/styles.scoped.css +28 -28
  8. package/breadcrumb-group/item/styles.selectors.js +7 -7
  9. package/button-dropdown/category-elements/category-element.d.ts.map +1 -1
  10. package/button-dropdown/category-elements/category-element.js +6 -1
  11. package/button-dropdown/category-elements/category-element.js.map +1 -1
  12. package/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
  13. package/button-dropdown/category-elements/expandable-category-element.js +2 -0
  14. package/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  15. package/button-dropdown/category-elements/mobile-expandable-category-element.d.ts.map +1 -1
  16. package/button-dropdown/category-elements/mobile-expandable-category-element.js +2 -0
  17. package/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  18. package/button-dropdown/category-elements/styles.css.js +17 -15
  19. package/button-dropdown/category-elements/styles.scoped.css +36 -25
  20. package/button-dropdown/category-elements/styles.selectors.js +17 -15
  21. package/button-dropdown/item-element/styles.css.js +16 -16
  22. package/button-dropdown/item-element/styles.scoped.css +27 -27
  23. package/button-dropdown/item-element/styles.selectors.js +16 -16
  24. package/date-input/index.d.ts +1 -1
  25. package/date-input/index.d.ts.map +1 -1
  26. package/date-input/index.js.map +1 -1
  27. package/date-input/interfaces.d.ts +29 -0
  28. package/date-input/interfaces.d.ts.map +1 -1
  29. package/date-input/interfaces.js.map +1 -1
  30. package/date-input/internal.d.ts +1 -4
  31. package/date-input/internal.d.ts.map +1 -1
  32. package/date-input/internal.js +39 -4
  33. package/date-input/internal.js.map +1 -1
  34. package/date-input/utils.d.ts +9 -1
  35. package/date-input/utils.d.ts.map +1 -1
  36. package/date-input/utils.js +32 -7
  37. package/date-input/utils.js.map +1 -1
  38. package/help-panel/styles.css.js +6 -6
  39. package/help-panel/styles.scoped.css +73 -73
  40. package/help-panel/styles.selectors.js +6 -6
  41. package/internal/base-component/styles.scoped.css +1 -1
  42. package/internal/components/masked-input/index.d.ts.map +1 -1
  43. package/internal/components/masked-input/index.js +2 -2
  44. package/internal/components/masked-input/index.js.map +1 -1
  45. package/internal/components/masked-input/interfaces.d.ts +6 -1
  46. package/internal/components/masked-input/interfaces.d.ts.map +1 -1
  47. package/internal/components/masked-input/interfaces.js.map +1 -1
  48. package/internal/components/token-list/styles.css.js +10 -10
  49. package/internal/components/token-list/styles.scoped.css +25 -25
  50. package/internal/components/token-list/styles.selectors.js +10 -10
  51. package/internal/environment.js +2 -2
  52. package/internal/environment.json +2 -2
  53. package/internal/manifest.json +1 -1
  54. package/internal/utils/date-time/format-date-iso.d.ts.map +1 -1
  55. package/internal/utils/date-time/format-date-iso.js.map +1 -1
  56. package/internal/utils/date-time/interfaces.d.ts +16 -0
  57. package/internal/utils/date-time/interfaces.d.ts.map +1 -0
  58. package/internal/utils/date-time/interfaces.js +4 -0
  59. package/internal/utils/date-time/interfaces.js.map +1 -0
  60. package/link/index.d.ts.map +1 -1
  61. package/link/index.js +11 -27
  62. package/link/interfaces.d.ts +23 -0
  63. package/link/interfaces.d.ts.map +1 -1
  64. package/link/interfaces.js.map +1 -1
  65. package/link/internal-do-not-use-core.js +34 -0
  66. package/link/internal-do-not-use-core.js.map +1 -0
  67. package/link/internal.d.ts.map +1 -1
  68. package/link/internal.js +3 -2
  69. package/link/internal.js.map +1 -1
  70. package/link/style.d.ts +2 -0
  71. package/link/style.d.ts.map +1 -0
  72. package/link/style.js +21 -0
  73. package/link/style.js.map +1 -0
  74. package/link/styles.css.js +20 -20
  75. package/link/styles.scoped.css +103 -102
  76. package/link/styles.selectors.js +20 -20
  77. package/package.json +1 -1
  78. package/tag-editor/styles.css.js +3 -3
  79. package/tag-editor/styles.scoped.css +13 -13
  80. package/tag-editor/styles.selectors.js +3 -3
  81. package/text-content/styles.css.js +1 -1
  82. package/text-content/styles.scoped.css +66 -66
  83. package/text-content/styles.selectors.js +1 -1
  84. package/link/index.js.map +0 -1
@@ -5,7 +5,7 @@ import { FormFieldValidationControlProps } from '../../context/form-field-contex
5
5
  import { MaskArgs } from './utils/mask-format';
6
6
  export interface MaskedInputProps extends InternalInputProps, FormFieldValidationControlProps, BaseComponentProps {
7
7
  /**
8
- * Mask config definition to describe segments and seperators
8
+ * Mask config definition to describe segments and separators
9
9
  */
10
10
  mask: MaskArgs;
11
11
  /**
@@ -16,6 +16,11 @@ export interface MaskedInputProps extends InternalInputProps, FormFieldValidatio
16
16
  * Disable value autocompletion when input is blurred
17
17
  */
18
18
  disableAutocompleteOnBlur?: boolean;
19
+ /**
20
+ * When true, the provided value is shown as is, ignoring masking.
21
+ * This is useful when rendering an alternative value when the input is not focused or disabled.
22
+ */
23
+ showUnmaskedValue?: boolean;
19
24
  }
20
25
  export declare namespace MaskedInputProps {
21
26
  type ChangeDetail = BaseChangeDetail;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/masked-input/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,+BAA+B,EAAE,kBAAkB;IAC/G;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,YAAY,GAAG,gBAAgB,CAAC;IAC5C,UAAiB,GAAG;QAClB;;WAEG;QACH,KAAK,IAAI,IAAI,CAAC;KACf;CACF"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/masked-input/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,+BAA+B,EAAE,kBAAkB;IAC/G;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,YAAY,GAAG,gBAAgB,CAAC;IAC5C,UAAiB,GAAG;QAClB;;WAEG;QACH,KAAK,IAAI,IAAI,CAAC;KACf;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/masked-input/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseChangeDetail } from '../../../input/interfaces';\nimport { InternalInputProps } from '../../../input/internal';\nimport { BaseComponentProps } from '../../base-component';\nimport { FormFieldValidationControlProps } from '../../context/form-field-context';\nimport { MaskArgs } from './utils/mask-format';\n\nexport interface MaskedInputProps extends InternalInputProps, FormFieldValidationControlProps, BaseComponentProps {\n /**\n * Mask config definition to describe segments and seperators\n */\n mask: MaskArgs;\n\n /**\n * Autofixes values provided to the Mask based on the minValue/maxValue specified in the mask.\n */\n autofix?: boolean;\n\n /**\n * Disable value autocompletion when input is blurred\n */\n disableAutocompleteOnBlur?: boolean;\n}\n\nexport namespace MaskedInputProps {\n export type ChangeDetail = BaseChangeDetail;\n export interface Ref {\n /**\n * Sets input focus onto the UI control.\n */\n focus(): void;\n }\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/masked-input/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseChangeDetail } from '../../../input/interfaces';\nimport { InternalInputProps } from '../../../input/internal';\nimport { BaseComponentProps } from '../../base-component';\nimport { FormFieldValidationControlProps } from '../../context/form-field-context';\nimport { MaskArgs } from './utils/mask-format';\n\nexport interface MaskedInputProps extends InternalInputProps, FormFieldValidationControlProps, BaseComponentProps {\n /**\n * Mask config definition to describe segments and separators\n */\n mask: MaskArgs;\n\n /**\n * Autofixes values provided to the Mask based on the minValue/maxValue specified in the mask.\n */\n autofix?: boolean;\n\n /**\n * Disable value autocompletion when input is blurred\n */\n disableAutocompleteOnBlur?: boolean;\n\n /**\n * When true, the provided value is shown as is, ignoring masking.\n * This is useful when rendering an alternative value when the input is not focused or disabled.\n */\n showUnmaskedValue?: boolean;\n}\n\nexport namespace MaskedInputProps {\n export type ChangeDetail = BaseChangeDetail;\n export interface Ref {\n /**\n * Sets input focus onto the UI control.\n */\n focus(): void;\n }\n}\n"]}
@@ -1,15 +1,15 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_gfwv3_nqa8o_193",
5
- "horizontal": "awsui_horizontal_gfwv3_nqa8o_196",
6
- "vertical": "awsui_vertical_gfwv3_nqa8o_202",
7
- "list": "awsui_list_gfwv3_nqa8o_207",
8
- "grid": "awsui_grid_gfwv3_nqa8o_226",
9
- "list-item": "awsui_list-item_gfwv3_nqa8o_238",
10
- "toggle-container-inline": "awsui_toggle-container-inline_gfwv3_nqa8o_245",
11
- "toggle": "awsui_toggle_gfwv3_nqa8o_245",
12
- "description": "awsui_description_gfwv3_nqa8o_337",
13
- "separator": "awsui_separator_gfwv3_nqa8o_341"
4
+ "root": "awsui_root_gfwv3_1p5dx_193",
5
+ "horizontal": "awsui_horizontal_gfwv3_1p5dx_196",
6
+ "vertical": "awsui_vertical_gfwv3_1p5dx_202",
7
+ "list": "awsui_list_gfwv3_1p5dx_207",
8
+ "grid": "awsui_grid_gfwv3_1p5dx_226",
9
+ "list-item": "awsui_list-item_gfwv3_1p5dx_238",
10
+ "toggle-container-inline": "awsui_toggle-container-inline_gfwv3_1p5dx_245",
11
+ "toggle": "awsui_toggle_gfwv3_1p5dx_245",
12
+ "description": "awsui_description_gfwv3_1p5dx_337",
13
+ "separator": "awsui_separator_gfwv3_1p5dx_341"
14
14
  };
15
15
 
@@ -190,21 +190,21 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
190
190
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
191
191
  SPDX-License-Identifier: Apache-2.0
192
192
  */
193
- .awsui_root_gfwv3_nqa8o_193:not(#\9) {
193
+ .awsui_root_gfwv3_1p5dx_193:not(#\9) {
194
194
  gap: var(--space-scaled-xs-xwoogq, 8px);
195
195
  }
196
- .awsui_root_gfwv3_nqa8o_193.awsui_horizontal_gfwv3_nqa8o_196:not(#\9) {
196
+ .awsui_root_gfwv3_1p5dx_193.awsui_horizontal_gfwv3_1p5dx_196:not(#\9) {
197
197
  display: flex;
198
198
  gap: var(--space-xs-ymlm0b, 8px);
199
199
  flex-direction: row;
200
200
  flex-wrap: wrap;
201
201
  }
202
- .awsui_root_gfwv3_nqa8o_193.awsui_vertical_gfwv3_nqa8o_202:not(#\9) {
202
+ .awsui_root_gfwv3_1p5dx_193.awsui_vertical_gfwv3_1p5dx_202:not(#\9) {
203
203
  display: flex;
204
204
  flex-direction: column;
205
205
  }
206
206
 
207
- .awsui_list_gfwv3_nqa8o_207:not(#\9) {
207
+ .awsui_list_gfwv3_1p5dx_207:not(#\9) {
208
208
  display: contents;
209
209
  list-style: none;
210
210
  padding-block: 0;
@@ -212,43 +212,43 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
212
212
  margin-block: 0;
213
213
  margin-inline: 0;
214
214
  }
215
- .awsui_list_gfwv3_nqa8o_207.awsui_horizontal_gfwv3_nqa8o_196:not(#\9), .awsui_list_gfwv3_nqa8o_207.awsui_vertical_gfwv3_nqa8o_202:not(#\9) {
215
+ .awsui_list_gfwv3_1p5dx_207.awsui_horizontal_gfwv3_1p5dx_196:not(#\9), .awsui_list_gfwv3_1p5dx_207.awsui_vertical_gfwv3_1p5dx_202:not(#\9) {
216
216
  display: flex;
217
217
  gap: var(--space-xs-ymlm0b, 8px);
218
218
  }
219
- .awsui_list_gfwv3_nqa8o_207.awsui_horizontal_gfwv3_nqa8o_196:not(#\9) {
219
+ .awsui_list_gfwv3_1p5dx_207.awsui_horizontal_gfwv3_1p5dx_196:not(#\9) {
220
220
  flex-direction: row;
221
221
  flex-wrap: wrap;
222
222
  }
223
- .awsui_list_gfwv3_nqa8o_207.awsui_vertical_gfwv3_nqa8o_202:not(#\9) {
223
+ .awsui_list_gfwv3_1p5dx_207.awsui_vertical_gfwv3_1p5dx_202:not(#\9) {
224
224
  flex-direction: column;
225
225
  }
226
- .awsui_list_gfwv3_nqa8o_207.awsui_grid_gfwv3_nqa8o_226:not(#\9) {
226
+ .awsui_list_gfwv3_1p5dx_207.awsui_grid_gfwv3_1p5dx_226:not(#\9) {
227
227
  display: grid;
228
228
  gap: var(--space-xs-ymlm0b, 8px);
229
229
  grid-template-columns: repeat(auto-fill, 230px);
230
230
  }
231
231
  @media (max-width: 688px) {
232
- .awsui_list_gfwv3_nqa8o_207.awsui_grid_gfwv3_nqa8o_226:not(#\9) {
232
+ .awsui_list_gfwv3_1p5dx_207.awsui_grid_gfwv3_1p5dx_226:not(#\9) {
233
233
  display: flex;
234
234
  flex-direction: column;
235
235
  }
236
236
  }
237
237
 
238
- .awsui_list-item_gfwv3_nqa8o_238:not(#\9) {
238
+ .awsui_list-item_gfwv3_1p5dx_238:not(#\9) {
239
239
  padding-block: 0;
240
240
  padding-inline: 0;
241
241
  margin-block: 0;
242
242
  margin-inline: 0;
243
243
  }
244
244
 
245
- .awsui_toggle-container-inline_gfwv3_nqa8o_245:not(#\9) {
245
+ .awsui_toggle-container-inline_gfwv3_1p5dx_245:not(#\9) {
246
246
  padding-inline-start: var(--space-xs-ymlm0b, 8px);
247
247
  display: flex;
248
248
  align-items: center;
249
249
  }
250
250
 
251
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9) {
251
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9) {
252
252
  border-collapse: separate;
253
253
  border-spacing: 0;
254
254
  box-sizing: border-box;
@@ -288,7 +288,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
288
288
  margin-inline-start: -1px;
289
289
  text-underline-offset: 0.25em;
290
290
  text-decoration-thickness: 1px;
291
- color: var(--color-text-link-default-1dmm7z, #006ce0);
291
+ color: var(--awsui-style-color-default-kcc2gu, var(--color-text-link-default-1dmm7z, #006ce0));
292
292
  font-weight: inherit;
293
293
  letter-spacing: normal;
294
294
  text-decoration-line: none;
@@ -299,34 +299,34 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
299
299
  transition-duration: var(--motion-duration-refresh-only-medium-5rbn3k, 165ms);
300
300
  }
301
301
  @media (prefers-reduced-motion: reduce) {
302
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9) {
302
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9) {
303
303
  animation: none;
304
304
  transition: none;
305
305
  }
306
306
  }
307
- .awsui-motion-disabled .awsui_toggle_gfwv3_nqa8o_245:not(#\9), .awsui-mode-entering .awsui_toggle_gfwv3_nqa8o_245:not(#\9) {
307
+ .awsui-motion-disabled .awsui_toggle_gfwv3_1p5dx_245:not(#\9), .awsui-mode-entering .awsui_toggle_gfwv3_1p5dx_245:not(#\9) {
308
308
  animation: none;
309
309
  transition: none;
310
310
  }
311
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9):hover {
311
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9):hover {
312
312
  cursor: pointer;
313
- color: var(--color-text-link-hover-sq1gxg, #002b66);
313
+ color: var(--awsui-style-color-hover-kcc2gu, var(--color-text-link-hover-sq1gxg, #002b66));
314
314
  }
315
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9):focus {
315
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9):focus {
316
316
  outline: none;
317
317
  }
318
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9):active {
319
- color: var(--color-text-link-hover-sq1gxg, #002b66);
318
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9):active {
319
+ color: var(--awsui-style-color-active-kcc2gu, var(--color-text-link-hover-sq1gxg, #002b66));
320
320
  }
321
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9):active, .awsui_toggle_gfwv3_nqa8o_245:not(#\9):focus, .awsui_toggle_gfwv3_nqa8o_245:not(#\9):hover {
321
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9):active, .awsui_toggle_gfwv3_1p5dx_245:not(#\9):focus, .awsui_toggle_gfwv3_1p5dx_245:not(#\9):hover {
322
322
  text-decoration-line: underline;
323
323
  text-decoration-color: currentColor;
324
324
  }
325
- .awsui_toggle_gfwv3_nqa8o_245:not(#\9):active, .awsui_toggle_gfwv3_nqa8o_245:not(#\9):focus, .awsui_toggle_gfwv3_nqa8o_245:not(#\9):hover {
325
+ .awsui_toggle_gfwv3_1p5dx_245:not(#\9):active, .awsui_toggle_gfwv3_1p5dx_245:not(#\9):focus, .awsui_toggle_gfwv3_1p5dx_245:not(#\9):hover {
326
326
  text-decoration: none;
327
327
  text-decoration-color: transparent;
328
328
  }
329
- body[data-awsui-focus-visible=true] .awsui_toggle_gfwv3_nqa8o_245:not(#\9):focus {
329
+ body[data-awsui-focus-visible=true] .awsui_toggle_gfwv3_1p5dx_245:not(#\9):focus {
330
330
  outline: 2px dotted transparent;
331
331
  border-block: var(--border-width-button-jm0qg7, 2px) solid var(--color-border-item-focused-uk47pl, #006ce0);
332
332
  border-inline: var(--border-width-button-jm0qg7, 2px) solid var(--color-border-item-focused-uk47pl, #006ce0);
@@ -336,11 +336,11 @@ body[data-awsui-focus-visible=true] .awsui_toggle_gfwv3_nqa8o_245:not(#\9):focus
336
336
  border-end-end-radius: var(--border-radius-control-default-focus-ring-1uabki, 4px);
337
337
  box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-9mjajk, 1px) var(--color-border-item-focused-uk47pl, #006ce0);
338
338
  }
339
- .awsui_toggle_gfwv3_nqa8o_245 > .awsui_description_gfwv3_nqa8o_337:not(#\9) {
339
+ .awsui_toggle_gfwv3_1p5dx_245 > .awsui_description_gfwv3_1p5dx_337:not(#\9) {
340
340
  margin-inline-start: var(--space-xxs-hwfkai, 4px);
341
341
  }
342
342
 
343
- .awsui_separator_gfwv3_nqa8o_341:not(#\9) {
343
+ .awsui_separator_gfwv3_1p5dx_341:not(#\9) {
344
344
  margin-block: 0;
345
345
  margin-inline: var(--space-scaled-m-m892r9, 16px);
346
346
  inline-size: var(--border-divider-section-width-uwo8my, 1px);
@@ -2,15 +2,15 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_gfwv3_nqa8o_193",
6
- "horizontal": "awsui_horizontal_gfwv3_nqa8o_196",
7
- "vertical": "awsui_vertical_gfwv3_nqa8o_202",
8
- "list": "awsui_list_gfwv3_nqa8o_207",
9
- "grid": "awsui_grid_gfwv3_nqa8o_226",
10
- "list-item": "awsui_list-item_gfwv3_nqa8o_238",
11
- "toggle-container-inline": "awsui_toggle-container-inline_gfwv3_nqa8o_245",
12
- "toggle": "awsui_toggle_gfwv3_nqa8o_245",
13
- "description": "awsui_description_gfwv3_nqa8o_337",
14
- "separator": "awsui_separator_gfwv3_nqa8o_341"
5
+ "root": "awsui_root_gfwv3_1p5dx_193",
6
+ "horizontal": "awsui_horizontal_gfwv3_1p5dx_196",
7
+ "vertical": "awsui_vertical_gfwv3_1p5dx_202",
8
+ "list": "awsui_list_gfwv3_1p5dx_207",
9
+ "grid": "awsui_grid_gfwv3_1p5dx_226",
10
+ "list-item": "awsui_list-item_gfwv3_1p5dx_238",
11
+ "toggle-container-inline": "awsui_toggle-container-inline_gfwv3_1p5dx_245",
12
+ "toggle": "awsui_toggle_gfwv3_1p5dx_245",
13
+ "description": "awsui_description_gfwv3_1p5dx_337",
14
+ "separator": "awsui_separator_gfwv3_1p5dx_341"
15
15
  };
16
16
 
@@ -1,6 +1,6 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (da6e1999)";
3
- export var GIT_SHA = "da6e1999";
2
+ export var PACKAGE_VERSION = "3.0.0 (ad43d71d)";
3
+ export var GIT_SHA = "ad43d71d";
4
4
  export var THEME = "open-source-visual-refresh";
5
5
  export var SYSTEM = "console";
6
6
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (da6e1999)",
4
- "GIT_SHA": "da6e1999",
3
+ "PACKAGE_VERSION": "3.0.0 (ad43d71d)",
4
+ "GIT_SHA": "ad43d71d",
5
5
  "THEME": "open-source-visual-refresh",
6
6
  "SYSTEM": "console",
7
7
  "ALWAYS_VISUAL_REFRESH": true
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "da6e19990cd4efb45cc221495b2c5f58906117ef"
2
+ "commit": "ad43d71dd96f961ff149e47aa5a95a330911cf4b"
3
3
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-iso.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-iso.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,WAAW,EACvB,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,UAMA"}
1
+ {"version":3,"file":"format-date-iso.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-iso.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,WAAW,EACvB,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,UAMA"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-iso.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-iso.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,OAAO,WAAW,EACvB,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,GAOZ;IACC,MAAM,eAAe,GAAG,cAAc,IAAI,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpH,IAAI,WAAW,EAAE;QACf,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;KAC7C;IACD,OAAO,OAAO,GAAG,eAAe,CAAC;AACnC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { format, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetISO } from './format-time-offset';\n\nexport default function ({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n timeOffset,\n isMonthOnly,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isDateOnly: boolean;\n isMonthOnly: boolean;\n timeOffset?: number;\n}) {\n const formattedOffset = hideTimeOffset || isDateOnly || isMonthOnly ? '' : formatTimeOffsetISO(isoDate, timeOffset);\n if (isMonthOnly) {\n return format(parseISO(isoDate), 'yyyy-MM');\n }\n return isoDate + formattedOffset;\n}\n"]}
1
+ {"version":3,"file":"format-date-iso.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-iso.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,OAAO,WAAW,EACvB,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,GAOZ;IACC,MAAM,eAAe,GAAG,cAAc,IAAI,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpH,IAAI,WAAW,EAAE;QACf,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;KAC7C;IACD,OAAO,OAAO,GAAG,eAAe,CAAC;AACnC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { format, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetISO } from './format-time-offset';\n\nexport default function ({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n timeOffset,\n isMonthOnly,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isDateOnly: boolean;\n isMonthOnly: boolean;\n timeOffset?: number;\n}) {\n const formattedOffset = hideTimeOffset || isDateOnly || isMonthOnly ? '' : formatTimeOffsetISO(isoDate, timeOffset);\n if (isMonthOnly) {\n return format(parseISO(isoDate), 'yyyy-MM');\n }\n return isoDate + formattedOffset;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Specifies the granularity at which a date will be displayed.
3
+ **/
4
+ export type DateGranularity = 'day' | 'month';
5
+ /**
6
+ * The formats that allow for an editable value:
7
+ * * `iso`: ISO 8601 format without time, e.g.: 2024-01-30 (or 2024-01).
8
+ * * `slashed`: similar to ISO 8601 but with '/' in place of '-'. e.g.: 2024/01/30 (or 2024/01).
9
+ **/
10
+ export type EditableDateFormat = 'iso' | 'slashed';
11
+ /**
12
+ * The format that does note allow for an editable value
13
+ * * `long-localized`: a more human-readable, localized format, e.g.: January 30, 2024 (or January, 2024).
14
+ **/
15
+ export type StaticDateFormat = 'long-localized';
16
+ export type DateFormat = EditableDateFormat | StaticDateFormat;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/interfaces.ts"],"names":[],"mappings":"AAGA;;IAEI;AACJ,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,CAAC;AAE9C;;;;IAII;AACJ,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,SAAS,CAAC;AAEnD;;;IAGI;AACJ,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export {};
4
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Specifies the granularity at which a date will be displayed.\n **/\nexport type DateGranularity = 'day' | 'month';\n\n/**\n * The formats that allow for an editable value:\n * * `iso`: ISO 8601 format without time, e.g.: 2024-01-30 (or 2024-01).\n * * `slashed`: similar to ISO 8601 but with '/' in place of '-'. e.g.: 2024/01/30 (or 2024/01).\n **/\nexport type EditableDateFormat = 'iso' | 'slashed';\n\n/**\n * The format that does note allow for an editable value\n * * `long-localized`: a more human-readable, localized format, e.g.: January 30, 2024 (or January, 2024).\n **/\nexport type StaticDateFormat = 'long-localized';\n\nexport type DateFormat = EditableDateFormat | StaticDateFormat;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,QAAA,MAAM,IAAI,iFAmCT,CAAC;AAGF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,QAAA,MAAM,IAAI,iFAuCT,CAAC;AAGF,eAAe,IAAI,CAAC"}
package/link/index.js CHANGED
@@ -1,34 +1,18 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- 'use client';
4
- import { __rest } from "tslib";
5
3
  import React from 'react';
6
- import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
7
- import useBaseComponent from '../internal/hooks/use-base-component';
4
+
5
+ import CoreComponent from './internal-do-not-use-core';
8
6
  import { applyDisplayName } from '../internal/utils/apply-display-name';
9
- import InternalLink from './internal';
10
- const Link = React.forwardRef((_a, ref) => {
11
- var { fontSize = 'body-m', color = 'normal', external = false } = _a, props = __rest(_a, ["fontSize", "color", "external"]);
12
- const baseComponentProps = useBaseComponent('Link', {
13
- props: { color, external, fontSize, rel: props.rel, target: props.target, variant: props.variant },
14
- });
15
- const analyticsMetadata = {
16
- action: 'click',
17
- detail: {
18
- label: { root: 'self' },
19
- external: `${external}`,
20
- },
21
- component: {
22
- name: 'awsui.Link',
23
- label: { root: 'self' },
24
- properties: { variant: props.variant || 'secondary' },
25
- },
26
- };
27
- if (props.href) {
28
- analyticsMetadata.detail.href = props.href;
29
- }
30
- return (React.createElement(InternalLink, Object.assign({ fontSize: fontSize, color: color, external: external }, props, baseComponentProps, { ref: ref }, getAnalyticsMetadataAttribute(analyticsMetadata))));
7
+ import { validateProps } from '../internal/base-component';
8
+
9
+
10
+
11
+ const Link = React.forwardRef((props, ref) => {
12
+ validateProps('Link', props, ["style"], {});
13
+ return React.createElement(CoreComponent, {ref,...props});
31
14
  });
15
+
16
+
32
17
  applyDisplayName(Link, 'Link');
33
18
  export default Link;
34
- //# sourceMappingURL=index.js.map
@@ -86,6 +86,15 @@ export interface LinkProps extends BaseComponentProps {
86
86
  * By default, the component sets the `rel` attribute to "noopener noreferrer" when `external` is `true` or `target` is `"_blank"`.
87
87
  */
88
88
  rel?: string;
89
+ /**
90
+ * Specifies an object of selectors and properties that are used to apply custom styles.
91
+ *
92
+ * - `root.color` {active, default, hover} (string) - (Optional) Text color for link.
93
+ * - `root.focusRing.borderColor` (string) - (Optional) Focus ring border color.
94
+ * - `root.focusRing.borderRadius` (string) - (Optional) Focus ring border radius.
95
+ * - `root.focusRing.borderWidth` (string) - (Optional) Focus ring border width.
96
+ * @awsuiSystem core
97
+ */
89
98
  }
90
99
  export declare namespace LinkProps {
91
100
  type Variant = 'primary' | 'secondary' | 'info' | 'awsui-value-large';
@@ -99,4 +108,18 @@ export declare namespace LinkProps {
99
108
  focus(): void;
100
109
  }
101
110
  type ClickDetail = _ClickDetail;
111
+ interface Style {
112
+ root?: {
113
+ color?: {
114
+ active?: string;
115
+ default?: string;
116
+ hover?: string;
117
+ };
118
+ focusRing?: {
119
+ borderColor?: string;
120
+ borderRadius?: string;
121
+ borderWidth?: string;
122
+ };
123
+ };
124
+ }
102
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/link/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,IAAI,YAAY,EAC3B,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,SAAU,SAAQ,kBAAkB;IACnD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;IAE9B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAE1D;;OAEG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE3D;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yBAAiB,SAAS,CAAC;IACzB,KAAY,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAC;IAC7E,KAAY,QAAQ,GAChB,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;IACd,KAAY,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE1C,KAAY,YAAY,GAAG,oBAAoB,CAAC;IAEhD,UAAiB,GAAG;QAClB;;WAEG;QACH,KAAK,IAAI,IAAI,CAAC;KACf;IAED,KAAY,WAAW,GAAG,YAAY,CAAC;CACxC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/link/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,IAAI,YAAY,EAC3B,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,SAAU,SAAQ,kBAAkB;IACnD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;IAE9B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAE1D;;OAEG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE3D;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;CACzB;AAED,yBAAiB,SAAS,CAAC;IACzB,KAAY,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAC;IAC7E,KAAY,QAAQ,GAChB,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;IACd,KAAY,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE1C,KAAY,YAAY,GAAG,oBAAoB,CAAC;IAEhD,UAAiB,GAAG;QAClB;;WAEG;QACH,KAAK,IAAI,IAAI,CAAC;KACf;IAED,KAAY,WAAW,GAAG,YAAY,CAAC;IACvC,UAAiB,KAAK;QACpB,IAAI,CAAC,EAAE;YACL,KAAK,CAAC,EAAE;gBACN,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,KAAK,CAAC,EAAE,MAAM,CAAC;aAChB,CAAC;YACF,SAAS,CAAC,EAAE;gBACV,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,WAAW,CAAC,EAAE,MAAM,CAAC;aACtB,CAAC;SACH,CAAC;KACH;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/link/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { BaseComponentProps } from '../internal/base-component';\nimport {\n BaseNavigationDetail,\n CancelableEventHandler,\n ClickDetail as _ClickDetail,\n NonCancelableEventHandler,\n} from '../internal/events';\n\nexport interface LinkProps extends BaseComponentProps {\n /**\n * Determines the visual style of the link as follows:\n *\n * - `primary` - Displays the link text with bold styling for sufficient contrast with surrounding text.\n * Use this for links where the context doesn't imply interactivity such as\n * \"Learn more\" links and links within paragraphs.\n * - `secondary` - Does not provide any additional indicators for interactivity (except for an underline when the user hovers over or focuses the link).\n * This can be used in cases where the interactivity is strongly implied by its context,\n * such as in a table or a list of external links.\n * - `info` - Use for \"info\" links that link to content in a help panel.\n *\n * The default is `secondary`, except inside the following components where it defaults to `primary`:\n * - Table\n * - Cards\n * - Alert\n * - Popover\n * - Help Panel (main `content` only)\n */\n variant?: LinkProps.Variant;\n\n /**\n * Determines the font size and line height.\n * This property is overridden if the variant is `info`.\n */\n fontSize?: LinkProps.FontSize;\n\n /**\n * Determines the text color of the link and its icon.\n *\n * - `normal`: Use in most cases where a link is required.\n * - `inverted`: Use to style links inside Flashbars.\n *\n * This property is overridden if the variant is `info`.\n */\n color?: LinkProps.Color;\n\n /**\n * Marks the link as external by adding an icon after the text. If `href`\n * is provided, opens the link in a new tab when clicked.\n */\n external?: boolean;\n\n /**\n * Specifies where to open the linked URL. Set this to `_blank` to open the URL\n * in a new tab. If you set this property to `_blank`, the component\n * automatically adds `rel=\"noopener noreferrer\"` to avoid performance\n * and security issues.\n *\n * For other options see the documentation for <a> tag's\n * [target attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target).\n */\n target?: string;\n\n /**\n * The URL that the link points to.\n * If an `href` is not provided, the component will render using a\n * \"button\" role and `target` will not be used.\n */\n href?: string;\n\n /**\n * The text to render inside the link.\n */\n children?: React.ReactNode;\n\n /**\n * Adds an aria-label to the HTML element.\n */\n ariaLabel?: string;\n\n /**\n * Adds an aria-label to the external icon.\n * @i18n\n */\n externalIconAriaLabel?: string;\n\n /**\n * Called when a link is clicked without any modifier keys. If the link has no `href` provided, it will be called on\n * all clicks.\n *\n * If you want to implement client-side routing yourself, use this event and prevent default browser navigation\n * (by calling `preventDefault`).\n */\n onFollow?: CancelableEventHandler<LinkProps.FollowDetail>;\n\n /**\n * Called when the user clicks on the link. Do not use this handler for navigation, use the `onFollow` event instead.\n */\n onClick?: NonCancelableEventHandler<LinkProps.ClickDetail>;\n\n /**\n * Adds a `rel` attribute to the link. If the `rel` property is provided, it overrides the default behaviour.\n * By default, the component sets the `rel` attribute to \"noopener noreferrer\" when `external` is `true` or `target` is `\"_blank\"`.\n */\n rel?: string;\n}\n\nexport namespace LinkProps {\n export type Variant = 'primary' | 'secondary' | 'info' | 'awsui-value-large';\n export type FontSize =\n | 'body-s'\n | 'body-m'\n | 'heading-xs'\n | 'heading-s'\n | 'heading-m'\n | 'heading-l'\n | 'heading-xl'\n | 'display-l'\n | 'inherit';\n export type Color = 'normal' | 'inverted';\n\n export type FollowDetail = BaseNavigationDetail;\n\n export interface Ref {\n /**\n * Sets the browser focus on the anchor element.\n */\n focus(): void;\n }\n\n export type ClickDetail = _ClickDetail;\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/link/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { BaseComponentProps } from '../internal/base-component';\nimport {\n BaseNavigationDetail,\n CancelableEventHandler,\n ClickDetail as _ClickDetail,\n NonCancelableEventHandler,\n} from '../internal/events';\n\nexport interface LinkProps extends BaseComponentProps {\n /**\n * Determines the visual style of the link as follows:\n *\n * - `primary` - Displays the link text with bold styling for sufficient contrast with surrounding text.\n * Use this for links where the context doesn't imply interactivity such as\n * \"Learn more\" links and links within paragraphs.\n * - `secondary` - Does not provide any additional indicators for interactivity (except for an underline when the user hovers over or focuses the link).\n * This can be used in cases where the interactivity is strongly implied by its context,\n * such as in a table or a list of external links.\n * - `info` - Use for \"info\" links that link to content in a help panel.\n *\n * The default is `secondary`, except inside the following components where it defaults to `primary`:\n * - Table\n * - Cards\n * - Alert\n * - Popover\n * - Help Panel (main `content` only)\n */\n variant?: LinkProps.Variant;\n\n /**\n * Determines the font size and line height.\n * This property is overridden if the variant is `info`.\n */\n fontSize?: LinkProps.FontSize;\n\n /**\n * Determines the text color of the link and its icon.\n *\n * - `normal`: Use in most cases where a link is required.\n * - `inverted`: Use to style links inside Flashbars.\n *\n * This property is overridden if the variant is `info`.\n */\n color?: LinkProps.Color;\n\n /**\n * Marks the link as external by adding an icon after the text. If `href`\n * is provided, opens the link in a new tab when clicked.\n */\n external?: boolean;\n\n /**\n * Specifies where to open the linked URL. Set this to `_blank` to open the URL\n * in a new tab. If you set this property to `_blank`, the component\n * automatically adds `rel=\"noopener noreferrer\"` to avoid performance\n * and security issues.\n *\n * For other options see the documentation for <a> tag's\n * [target attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target).\n */\n target?: string;\n\n /**\n * The URL that the link points to.\n * If an `href` is not provided, the component will render using a\n * \"button\" role and `target` will not be used.\n */\n href?: string;\n\n /**\n * The text to render inside the link.\n */\n children?: React.ReactNode;\n\n /**\n * Adds an aria-label to the HTML element.\n */\n ariaLabel?: string;\n\n /**\n * Adds an aria-label to the external icon.\n * @i18n\n */\n externalIconAriaLabel?: string;\n\n /**\n * Called when a link is clicked without any modifier keys. If the link has no `href` provided, it will be called on\n * all clicks.\n *\n * If you want to implement client-side routing yourself, use this event and prevent default browser navigation\n * (by calling `preventDefault`).\n */\n onFollow?: CancelableEventHandler<LinkProps.FollowDetail>;\n\n /**\n * Called when the user clicks on the link. Do not use this handler for navigation, use the `onFollow` event instead.\n */\n onClick?: NonCancelableEventHandler<LinkProps.ClickDetail>;\n\n /**\n * Adds a `rel` attribute to the link. If the `rel` property is provided, it overrides the default behaviour.\n * By default, the component sets the `rel` attribute to \"noopener noreferrer\" when `external` is `true` or `target` is `\"_blank\"`.\n */\n rel?: string;\n\n /**\n * Specifies an object of selectors and properties that are used to apply custom styles.\n *\n * - `root.color` {active, default, hover} (string) - (Optional) Text color for link.\n * - `root.focusRing.borderColor` (string) - (Optional) Focus ring border color.\n * - `root.focusRing.borderRadius` (string) - (Optional) Focus ring border radius.\n * - `root.focusRing.borderWidth` (string) - (Optional) Focus ring border width.\n * @awsuiSystem core\n */\n style?: LinkProps.Style;\n}\n\nexport namespace LinkProps {\n export type Variant = 'primary' | 'secondary' | 'info' | 'awsui-value-large';\n export type FontSize =\n | 'body-s'\n | 'body-m'\n | 'heading-xs'\n | 'heading-s'\n | 'heading-m'\n | 'heading-l'\n | 'heading-xl'\n | 'display-l'\n | 'inherit';\n export type Color = 'normal' | 'inverted';\n\n export type FollowDetail = BaseNavigationDetail;\n\n export interface Ref {\n /**\n * Sets the browser focus on the anchor element.\n */\n focus(): void;\n }\n\n export type ClickDetail = _ClickDetail;\n export interface Style {\n root?: {\n color?: {\n active?: string;\n default?: string;\n hover?: string;\n };\n focusRing?: {\n borderColor?: string;\n borderRadius?: string;\n borderWidth?: string;\n };\n };\n }\n}\n"]}
@@ -0,0 +1,34 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ 'use client';
4
+ import { __rest } from "tslib";
5
+ import React from 'react';
6
+ import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
7
+ import useBaseComponent from '../internal/hooks/use-base-component';
8
+ import { applyDisplayName } from '../internal/utils/apply-display-name';
9
+ import InternalLink from './internal';
10
+ const Link = React.forwardRef((_a, ref) => {
11
+ var { fontSize = 'body-m', color = 'normal', external = false, style } = _a, props = __rest(_a, ["fontSize", "color", "external", "style"]);
12
+ const baseComponentProps = useBaseComponent('Link', {
13
+ props: { color, external, fontSize, rel: props.rel, target: props.target, variant: props.variant },
14
+ });
15
+ const analyticsMetadata = {
16
+ action: 'click',
17
+ detail: {
18
+ label: { root: 'self' },
19
+ external: `${external}`,
20
+ },
21
+ component: {
22
+ name: 'awsui.Link',
23
+ label: { root: 'self' },
24
+ properties: { variant: props.variant || 'secondary' },
25
+ },
26
+ };
27
+ if (props.href) {
28
+ analyticsMetadata.detail.href = props.href;
29
+ }
30
+ return (React.createElement(InternalLink, Object.assign({ fontSize: fontSize, color: color, external: external }, props, baseComponentProps, { ref: ref }, getAnalyticsMetadataAttribute(analyticsMetadata), { style: style })));
31
+ });
32
+ applyDisplayName(Link, 'Link');
33
+ export default Link;
34
+ //# sourceMappingURL=internal-do-not-use-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,YAAY,CAAC;;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,YAAY,MAAM,YAAY,CAAC;AAItC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CACE,EAAuF,EACvF,GAA6B,EAC7B,EAAE;QAFF,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,GAAG,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,OAAuB,EAAlB,KAAK,cAA1E,0CAA4E,CAAF;IAG1E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,EAAE;QAClD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;KACnG,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAA2C;QAChE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,QAAQ,EAAE,GAAG,QAAQ,EAAE;SACxB;QACD,SAAS,EAAE;YACT,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,WAAW,EAAE;SACtD;KACF,CAAC;IAEF,IAAI,KAAK,CAAC,IAAI,EAAE;QACd,iBAAiB,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KAC5C;IAED,OAAO,CACL,oBAAC,YAAY,kBACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,IACd,KAAK,EACL,kBAAkB,IACtB,GAAG,EAAE,GAAG,IACJ,6BAA6B,CAAC,iBAAiB,CAAC,IACpD,KAAK,EAAE,KAAK,IACZ,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,eAAe,IAAI,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n'use client';\nimport React from 'react';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { GeneratedAnalyticsMetadataLinkFragment } from './analytics-metadata/interfaces';\nimport { LinkProps } from './interfaces';\nimport InternalLink from './internal';\n\nexport { LinkProps };\n\nconst Link = React.forwardRef(\n (\n { fontSize = 'body-m', color = 'normal', external = false, style, ...props }: LinkProps,\n ref: React.Ref<LinkProps.Ref>\n ) => {\n const baseComponentProps = useBaseComponent('Link', {\n props: { color, external, fontSize, rel: props.rel, target: props.target, variant: props.variant },\n });\n\n const analyticsMetadata: GeneratedAnalyticsMetadataLinkFragment = {\n action: 'click',\n detail: {\n label: { root: 'self' },\n external: `${external}`,\n },\n component: {\n name: 'awsui.Link',\n label: { root: 'self' },\n properties: { variant: props.variant || 'secondary' },\n },\n };\n\n if (props.href) {\n analyticsMetadata.detail.href = props.href;\n }\n\n return (\n <InternalLink\n fontSize={fontSize}\n color={color}\n external={external}\n {...props}\n {...baseComponentProps}\n ref={ref}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n style={style}\n />\n );\n }\n);\n\napplyDisplayName(Link, 'Link');\nexport default Link;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAqBlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAIlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC,QAAA,MAAM,YAAY;cAHJ,SAAS,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,MAAM,GAAG,UAAU;uCA0M1E,CAAC;AAqBF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAqBlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAIlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,QAAA,MAAM,YAAY;cAHJ,SAAS,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,MAAM,GAAG,UAAU;uCA4M1E,CAAC;AAqBF,eAAe,YAAY,CAAC"}
package/link/internal.js CHANGED
@@ -18,9 +18,10 @@ import useForwardFocus from '../internal/hooks/forward-focus';
18
18
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
19
19
  import { KeyCode } from '../internal/keycode';
20
20
  import { checkSafeUrl } from '../internal/utils/check-safe-url';
21
+ import { getLinkStyles } from './style';
21
22
  import styles from './styles.css.js';
22
23
  const InternalLink = React.forwardRef((_a, ref) => {
23
- var { variant: providedVariant, fontSize = 'body-m', color = 'normal', external = false, target, href, rel, ariaLabel, externalIconAriaLabel, onFollow, onClick, children, __internalRootRef = null } = _a, props = __rest(_a, ["variant", "fontSize", "color", "external", "target", "href", "rel", "ariaLabel", "externalIconAriaLabel", "onFollow", "onClick", "children", "__internalRootRef"]);
24
+ var { variant: providedVariant, fontSize = 'body-m', color = 'normal', external = false, target, href, rel, ariaLabel, externalIconAriaLabel, onFollow, onClick, children, __internalRootRef = null, style } = _a, props = __rest(_a, ["variant", "fontSize", "color", "external", "target", "href", "rel", "ariaLabel", "externalIconAriaLabel", "onFollow", "onClick", "children", "__internalRootRef", "style"]);
24
25
  checkSafeUrl('Link', href);
25
26
  const isButton = !href;
26
27
  const { defaultVariant } = useContext(LinkDefaultVariantContext);
@@ -113,7 +114,7 @@ const InternalLink = React.forwardRef((_a, ref) => {
113
114
  const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;
114
115
  const sharedProps = Object.assign(Object.assign({ id: linkId }, baseProps), {
115
116
  // https://github.com/microsoft/TypeScript/issues/36659
116
- ref: useMergeRefs(linkRef, __internalRootRef), className: clsx(styles.link, baseProps.className, applyButtonStyles ? styles.button : null, styles[getVariantStyle(variant)], styles[getFontSizeStyle(variant, fontSize)], styles[getColorStyle(variant, color)]), 'aria-label': ariaLabel, 'aria-labelledby': undefined, [DATA_ATTR_FUNNEL_VALUE]: uniqueId });
117
+ ref: useMergeRefs(linkRef, __internalRootRef), className: clsx(styles.link, baseProps.className, applyButtonStyles ? styles.button : null, styles[getVariantStyle(variant)], styles[getFontSizeStyle(variant, fontSize)], styles[getColorStyle(variant, color)]), style: getLinkStyles(style), 'aria-label': ariaLabel, 'aria-labelledby': undefined, [DATA_ATTR_FUNNEL_VALUE]: uniqueId });
117
118
  if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {
118
119
  sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;
119
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnel, useFunnelStep, useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport {\n DATA_ATTR_FUNNEL_VALUE,\n getFunnelValueSelector,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../internal/analytics/selectors';\nimport { getBaseProps } from '../internal/base-component';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { useSingleTabStopNavigation } from '../internal/context/single-tab-stop-navigation-context';\nimport { fireCancelableEvent, fireNonCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport { LinkProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype InternalLinkProps = InternalBaseComponentProps<HTMLAnchorElement> &\n Omit<LinkProps, 'variant'> & {\n variant?: LinkProps['variant'] | 'top-navigation' | 'link' | 'recovery';\n };\n\nconst InternalLink = React.forwardRef(\n (\n {\n variant: providedVariant,\n fontSize = 'body-m',\n color = 'normal',\n external = false,\n target,\n href,\n rel,\n ariaLabel,\n externalIconAriaLabel,\n onFollow,\n onClick,\n children,\n __internalRootRef = null,\n ...props\n }: InternalLinkProps,\n ref: React.Ref<LinkProps.Ref>\n ) => {\n checkSafeUrl('Link', href);\n const isButton = !href;\n const { defaultVariant } = useContext(LinkDefaultVariantContext);\n const variant = providedVariant || defaultVariant;\n const specialStyles = ['top-navigation', 'link', 'recovery'];\n const hasSpecialStyle = specialStyles.indexOf(variant) > -1;\n\n const i18n = useInternalI18n('link');\n const baseProps = getBaseProps(props);\n const anchorTarget = target ?? (external ? '_blank' : undefined);\n const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n const uniqueId = useUniqueId('link');\n const linkId = useUniqueId('link-self');\n const infoId = useUniqueId('link-info');\n\n const infoLinkLabelFromContext = useContext(InfoLinkLabelContext);\n\n const { funnelIdentifier, funnelInteractionId } = useFunnel();\n const { stepIdentifier, stepNumber, stepNameSelector } = useFunnelStep();\n const { subStepIdentifier, subStepSelector, subStepNameSelector } = useFunnelSubStep();\n\n const fireFunnelEvent = (funnelInteractionId: string) => {\n if (variant === 'info') {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.helpPanelInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n subStepIdentifier,\n stepNameSelector,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n } else if (external) {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.externalLinkInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepIdentifier,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const fireFollowEvent = (event: React.SyntheticEvent) => {\n if (funnelInteractionId) {\n fireFunnelEvent(funnelInteractionId);\n }\n\n fireCancelableEvent(onFollow, { href, external, target: anchorTarget }, event);\n };\n\n const fireClickEvent = (event: React.MouseEvent | React.KeyboardEvent) => {\n const { altKey, ctrlKey, metaKey, shiftKey } = event;\n const button = 'button' in event ? event.button : 0;\n // make onClick non-cancelable to prevent it from being used to block full page reload\n // for navigation use `onFollow` event instead\n fireNonCancelableEvent(onClick, { altKey, button, ctrlKey, metaKey, shiftKey });\n };\n\n const handleLinkClick = (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollowEvent(event);\n }\n fireClickEvent(event);\n };\n\n const handleButtonClick = (event: React.MouseEvent) => {\n fireFollowEvent(event);\n fireClickEvent(event);\n };\n\n const handleButtonKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.space || event.keyCode === KeyCode.enter) {\n event.preventDefault();\n fireFollowEvent(event);\n fireClickEvent(event);\n }\n };\n\n const linkRef = useRef<HTMLElement>(null);\n const isVisualRefresh = useVisualRefresh();\n useForwardFocus(ref, linkRef);\n\n // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)\n const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;\n\n const sharedProps = {\n id: linkId,\n ...baseProps,\n // https://github.com/microsoft/TypeScript/issues/36659\n ref: useMergeRefs(linkRef, __internalRootRef),\n className: clsx(\n styles.link,\n baseProps.className,\n applyButtonStyles ? styles.button : null,\n styles[getVariantStyle(variant)],\n styles[getFontSizeStyle(variant, fontSize)],\n styles[getColorStyle(variant, color)]\n ),\n 'aria-label': ariaLabel,\n 'aria-labelledby': undefined as string | undefined,\n [DATA_ATTR_FUNNEL_VALUE]: uniqueId,\n };\n\n if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {\n sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;\n }\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', externalIconAriaLabel);\n const content = (\n <>\n {children}\n {external && (\n <span className={styles['icon-wrapper']}>\n &nbsp;\n <span\n className={styles.icon}\n aria-label={renderedExternalIconAriaLabel}\n role={renderedExternalIconAriaLabel ? 'img' : undefined}\n >\n <InternalIcon name=\"external\" size=\"inherit\" />\n </span>\n </span>\n )}\n {variant === 'info' && (\n <span hidden={true} id={infoId}>\n :\n </span>\n )}\n </>\n );\n\n const { tabIndex } = useSingleTabStopNavigation(linkRef, { tabIndex: isButton ? 0 : undefined });\n\n if (isButton) {\n return (\n <a\n {...sharedProps}\n role=\"button\"\n tabIndex={tabIndex}\n onKeyDown={handleButtonKeyDown}\n onClick={handleButtonClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <a\n {...sharedProps}\n tabIndex={tabIndex}\n target={anchorTarget}\n rel={anchorRel}\n href={href}\n onClick={handleLinkClick}\n >\n {content}\n </a>\n );\n }\n);\n\nfunction getVariantStyle(variant: Exclude<InternalLinkProps['variant'], undefined>) {\n return `variant-${variant.replace(/^awsui-/, '')}`;\n}\n\nfunction getFontSizeStyle(variant: InternalLinkProps['variant'], fontSize: InternalLinkProps['fontSize']) {\n switch (variant) {\n case 'info':\n return 'font-size-body-s';\n case 'awsui-value-large':\n return 'font-size-display-l';\n default:\n return `font-size-${fontSize}`;\n }\n}\n\nfunction getColorStyle(variant: InternalLinkProps['variant'], color: InternalLinkProps['color']) {\n return `color-${variant === 'info' ? 'normal' : color}`;\n}\n\nexport default InternalLink;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnel, useFunnelStep, useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport {\n DATA_ATTR_FUNNEL_VALUE,\n getFunnelValueSelector,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../internal/analytics/selectors';\nimport { getBaseProps } from '../internal/base-component';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { useSingleTabStopNavigation } from '../internal/context/single-tab-stop-navigation-context';\nimport { fireCancelableEvent, fireNonCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport { LinkProps } from './interfaces';\nimport { getLinkStyles } from './style';\n\nimport styles from './styles.css.js';\n\ntype InternalLinkProps = InternalBaseComponentProps<HTMLAnchorElement> &\n Omit<LinkProps, 'variant'> & {\n variant?: LinkProps['variant'] | 'top-navigation' | 'link' | 'recovery';\n };\n\nconst InternalLink = React.forwardRef(\n (\n {\n variant: providedVariant,\n fontSize = 'body-m',\n color = 'normal',\n external = false,\n target,\n href,\n rel,\n ariaLabel,\n externalIconAriaLabel,\n onFollow,\n onClick,\n children,\n __internalRootRef = null,\n style,\n ...props\n }: InternalLinkProps,\n ref: React.Ref<LinkProps.Ref>\n ) => {\n checkSafeUrl('Link', href);\n const isButton = !href;\n const { defaultVariant } = useContext(LinkDefaultVariantContext);\n const variant = providedVariant || defaultVariant;\n const specialStyles = ['top-navigation', 'link', 'recovery'];\n const hasSpecialStyle = specialStyles.indexOf(variant) > -1;\n\n const i18n = useInternalI18n('link');\n const baseProps = getBaseProps(props);\n const anchorTarget = target ?? (external ? '_blank' : undefined);\n const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n const uniqueId = useUniqueId('link');\n const linkId = useUniqueId('link-self');\n const infoId = useUniqueId('link-info');\n\n const infoLinkLabelFromContext = useContext(InfoLinkLabelContext);\n\n const { funnelIdentifier, funnelInteractionId } = useFunnel();\n const { stepIdentifier, stepNumber, stepNameSelector } = useFunnelStep();\n const { subStepIdentifier, subStepSelector, subStepNameSelector } = useFunnelSubStep();\n\n const fireFunnelEvent = (funnelInteractionId: string) => {\n if (variant === 'info') {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.helpPanelInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n subStepIdentifier,\n stepNameSelector,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n } else if (external) {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.externalLinkInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepIdentifier,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const fireFollowEvent = (event: React.SyntheticEvent) => {\n if (funnelInteractionId) {\n fireFunnelEvent(funnelInteractionId);\n }\n\n fireCancelableEvent(onFollow, { href, external, target: anchorTarget }, event);\n };\n\n const fireClickEvent = (event: React.MouseEvent | React.KeyboardEvent) => {\n const { altKey, ctrlKey, metaKey, shiftKey } = event;\n const button = 'button' in event ? event.button : 0;\n // make onClick non-cancelable to prevent it from being used to block full page reload\n // for navigation use `onFollow` event instead\n fireNonCancelableEvent(onClick, { altKey, button, ctrlKey, metaKey, shiftKey });\n };\n\n const handleLinkClick = (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollowEvent(event);\n }\n fireClickEvent(event);\n };\n\n const handleButtonClick = (event: React.MouseEvent) => {\n fireFollowEvent(event);\n fireClickEvent(event);\n };\n\n const handleButtonKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.space || event.keyCode === KeyCode.enter) {\n event.preventDefault();\n fireFollowEvent(event);\n fireClickEvent(event);\n }\n };\n\n const linkRef = useRef<HTMLElement>(null);\n const isVisualRefresh = useVisualRefresh();\n useForwardFocus(ref, linkRef);\n\n // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)\n const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;\n\n const sharedProps = {\n id: linkId,\n ...baseProps,\n // https://github.com/microsoft/TypeScript/issues/36659\n ref: useMergeRefs(linkRef, __internalRootRef),\n className: clsx(\n styles.link,\n baseProps.className,\n applyButtonStyles ? styles.button : null,\n styles[getVariantStyle(variant)],\n styles[getFontSizeStyle(variant, fontSize)],\n styles[getColorStyle(variant, color)]\n ),\n style: getLinkStyles(style),\n 'aria-label': ariaLabel,\n 'aria-labelledby': undefined as string | undefined,\n [DATA_ATTR_FUNNEL_VALUE]: uniqueId,\n };\n\n if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {\n sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;\n }\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', externalIconAriaLabel);\n const content = (\n <>\n {children}\n {external && (\n <span className={styles['icon-wrapper']}>\n &nbsp;\n <span\n className={styles.icon}\n aria-label={renderedExternalIconAriaLabel}\n role={renderedExternalIconAriaLabel ? 'img' : undefined}\n >\n <InternalIcon name=\"external\" size=\"inherit\" />\n </span>\n </span>\n )}\n {variant === 'info' && (\n <span hidden={true} id={infoId}>\n :\n </span>\n )}\n </>\n );\n\n const { tabIndex } = useSingleTabStopNavigation(linkRef, { tabIndex: isButton ? 0 : undefined });\n\n if (isButton) {\n return (\n <a\n {...sharedProps}\n role=\"button\"\n tabIndex={tabIndex}\n onKeyDown={handleButtonKeyDown}\n onClick={handleButtonClick}\n >\n {content}\n </a>\n );\n }\n\n return (\n <a\n {...sharedProps}\n tabIndex={tabIndex}\n target={anchorTarget}\n rel={anchorRel}\n href={href}\n onClick={handleLinkClick}\n >\n {content}\n </a>\n );\n }\n);\n\nfunction getVariantStyle(variant: Exclude<InternalLinkProps['variant'], undefined>) {\n return `variant-${variant.replace(/^awsui-/, '')}`;\n}\n\nfunction getFontSizeStyle(variant: InternalLinkProps['variant'], fontSize: InternalLinkProps['fontSize']) {\n switch (variant) {\n case 'info':\n return 'font-size-body-s';\n case 'awsui-value-large':\n return 'font-size-display-l';\n default:\n return `font-size-${fontSize}`;\n }\n}\n\nfunction getColorStyle(variant: InternalLinkProps['variant'], color: InternalLinkProps['color']) {\n return `color-${variant === 'info' ? 'normal' : color}`;\n}\n\nexport default InternalLink;\n"]}
@@ -0,0 +1,2 @@
1
+ import { LinkProps } from './interfaces';
2
+ export declare function getLinkStyles(style: LinkProps['style']): {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/link/style.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,MAmBtD"}