@haiilo/catalyst 0.8.6 → 0.10.1

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 (103) hide show
  1. package/dist/catalyst/catalyst.css +1 -1
  2. package/dist/catalyst/catalyst.esm.js +1 -1
  3. package/dist/catalyst/catalyst.esm.js.map +1 -1
  4. package/dist/catalyst/index.esm.js +1 -1
  5. package/dist/catalyst/{p-6a8a4dc0.js → p-8121572a.js} +3 -3
  6. package/dist/catalyst/p-8121572a.js.map +1 -0
  7. package/dist/catalyst/{p-74fbe829.entry.js → p-b58ac55c.entry.js} +5 -5
  8. package/dist/catalyst/p-b58ac55c.entry.js.map +1 -0
  9. package/dist/catalyst/scss/_variables.scss +1 -0
  10. package/dist/catalyst/scss/core/_typography.scss +7 -7
  11. package/dist/catalyst/scss/index.scss +1 -5
  12. package/dist/cjs/{cat-alert_20.cjs.entry.js → cat-alert_21.cjs.entry.js} +153 -26
  13. package/dist/cjs/cat-alert_21.cjs.entry.js.map +1 -0
  14. package/dist/cjs/{cat-notification-fe237312.js → cat-notification-c2859ed7.js} +121 -1
  15. package/dist/cjs/cat-notification-c2859ed7.js.map +1 -0
  16. package/dist/cjs/catalyst.cjs.js +1 -5
  17. package/dist/cjs/catalyst.cjs.js.map +1 -1
  18. package/dist/cjs/index.cjs.js +3 -4
  19. package/dist/cjs/index.cjs.js.map +1 -1
  20. package/dist/cjs/loader.cjs.js +1 -5
  21. package/dist/cjs/loader.cjs.js.map +1 -1
  22. package/dist/collection/collection-manifest.json +2 -2
  23. package/dist/collection/components/cat-button/cat-button.css +2 -1
  24. package/dist/collection/components/cat-card/cat-card.css +34 -0
  25. package/dist/collection/components/cat-checkbox/cat-checkbox.css +4 -0
  26. package/dist/collection/components/cat-checkbox/cat-checkbox.js +23 -1
  27. package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
  28. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +3 -2
  29. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  30. package/dist/collection/components/cat-radio/cat-radio.css +7 -0
  31. package/dist/collection/components/cat-radio/cat-radio.js +25 -2
  32. package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
  33. package/dist/collection/components/cat-radio-group/cat-radio-group.css +12 -0
  34. package/dist/collection/components/cat-radio-group/cat-radio-group.js +179 -0
  35. package/dist/collection/components/cat-radio-group/cat-radio-group.js.map +1 -0
  36. package/dist/collection/components/cat-select/cat-select.js +57 -10
  37. package/dist/collection/components/cat-select/cat-select.js.map +1 -1
  38. package/dist/collection/components/cat-toggle/cat-toggle.css +4 -0
  39. package/dist/collection/components/cat-toggle/cat-toggle.js +25 -3
  40. package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
  41. package/dist/collection/index.js.map +1 -1
  42. package/dist/collection/scss/_variables.scss +1 -0
  43. package/dist/collection/scss/core/_typography.scss +7 -7
  44. package/dist/collection/scss/index.scss +1 -5
  45. package/dist/components/cat-button2.js +1 -1
  46. package/dist/components/cat-button2.js.map +1 -1
  47. package/dist/components/cat-card.js +1 -1
  48. package/dist/components/cat-card.js.map +1 -1
  49. package/dist/components/cat-checkbox.js +7 -2
  50. package/dist/components/cat-checkbox.js.map +1 -1
  51. package/dist/components/cat-i18n-registry.js +3 -2
  52. package/dist/components/cat-i18n-registry.js.map +1 -1
  53. package/dist/components/cat-radio-group.d.ts +11 -0
  54. package/dist/components/cat-radio-group.js +111 -0
  55. package/dist/components/cat-radio-group.js.map +1 -0
  56. package/dist/components/cat-radio.js +9 -3
  57. package/dist/components/cat-radio.js.map +1 -1
  58. package/dist/components/cat-select.js +42 -11
  59. package/dist/components/cat-select.js.map +1 -1
  60. package/dist/components/cat-toggle.js +8 -3
  61. package/dist/components/cat-toggle.js.map +1 -1
  62. package/dist/components/index.d.ts +1 -0
  63. package/dist/components/index.js +1 -253
  64. package/dist/components/index.js.map +1 -1
  65. package/dist/esm/{cat-alert_20.entry.js → cat-alert_21.entry.js} +150 -24
  66. package/dist/esm/cat-alert_21.entry.js.map +1 -0
  67. package/dist/esm/{cat-notification-a9655c00.js → cat-notification-3da6ddb1.js} +121 -3
  68. package/dist/esm/cat-notification-3da6ddb1.js.map +1 -0
  69. package/dist/esm/catalyst.js +1 -5
  70. package/dist/esm/catalyst.js.map +1 -1
  71. package/dist/esm/index.js +1 -2
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/loader.js +1 -5
  74. package/dist/esm/loader.js.map +1 -1
  75. package/dist/types/components/cat-checkbox/cat-checkbox.d.ts +4 -0
  76. package/dist/types/components/cat-radio/cat-radio.d.ts +4 -0
  77. package/dist/types/components/cat-radio-group/cat-radio-group.d.ts +29 -0
  78. package/dist/types/components/cat-select/cat-select.d.ts +7 -0
  79. package/dist/types/components/cat-toggle/cat-toggle.d.ts +5 -1
  80. package/dist/types/components.d.ts +75 -2
  81. package/dist/types/index.d.ts +1 -0
  82. package/package.json +2 -2
  83. package/dist/catalyst/p-6a8a4dc0.js.map +0 -1
  84. package/dist/catalyst/p-74fbe829.entry.js.map +0 -1
  85. package/dist/catalyst/p-decdc6f1.js +0 -2
  86. package/dist/catalyst/p-decdc6f1.js.map +0 -1
  87. package/dist/catalyst/p-f45bcfd6.js +0 -2
  88. package/dist/catalyst/p-f45bcfd6.js.map +0 -1
  89. package/dist/cjs/app-globals-79765026.js +0 -256
  90. package/dist/cjs/app-globals-79765026.js.map +0 -1
  91. package/dist/cjs/cat-alert_20.cjs.entry.js.map +0 -1
  92. package/dist/cjs/cat-icon-registry-b015a65f.js +0 -125
  93. package/dist/cjs/cat-icon-registry-b015a65f.js.map +0 -1
  94. package/dist/cjs/cat-notification-fe237312.js.map +0 -1
  95. package/dist/collection/init.js +0 -17
  96. package/dist/collection/init.js.map +0 -1
  97. package/dist/esm/app-globals-7d163b94.js +0 -254
  98. package/dist/esm/app-globals-7d163b94.js.map +0 -1
  99. package/dist/esm/cat-alert_20.entry.js.map +0 -1
  100. package/dist/esm/cat-icon-registry-dc1ef79a.js +0 -122
  101. package/dist/esm/cat-icon-registry-dc1ef79a.js.map +0 -1
  102. package/dist/esm/cat-notification-a9655c00.js.map +0 -1
  103. package/dist/types/init.d.ts +0 -1
@@ -28,6 +28,7 @@ $font-fallback-sans-serif: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvet
28
28
  $font-fallback-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace !default;
29
29
  $cat-link-text-decoration: none;
30
30
  $cat-link-text-decoration-hover: underline;
31
+ $cat-button-text-decoration-hover: none;
31
32
  $cat-mark-color: cat-token('color.theme.primary.bg', 0.2);
32
33
  /* stylelint-enable value-keyword-case */
33
34
 
@@ -132,13 +132,13 @@ dl {
132
132
  }
133
133
  }
134
134
 
135
- nav {
136
- ol,
137
- ul {
138
- list-style-type: none;
139
- margin: 0;
140
- padding: 0;
141
- }
135
+ nav ol,
136
+ nav ul,
137
+ ol.cat-plain,
138
+ ul.cat-plain {
139
+ list-style: none;
140
+ margin: 0;
141
+ padding: 0;
142
142
  }
143
143
 
144
144
  dt {
@@ -1,26 +1,21 @@
1
1
  // -- Reset
2
-
3
2
  @import '~sanitize.css/sanitize.css';
4
3
  @import '~sanitize.css/assets.css';
5
4
  @import '~sanitize.css/reduce-motion.css';
6
5
 
7
6
  // -- Vendor
8
-
9
7
  @import '~toastify-js/src/toastify.css';
10
8
 
11
9
  // -- Fonts
12
-
13
10
  @import 'fonts/fonts-mixins';
14
11
 
15
12
  // -- Core
16
-
17
13
  @import 'core/base';
18
14
  @import 'core/nav';
19
15
  @import 'core/toast';
20
16
  @import 'core/typography';
21
17
 
22
18
  // -- Utils
23
-
24
19
  @import 'utils/color';
25
20
  @import 'utils/display';
26
21
  @import 'utils/elevation';
@@ -31,5 +26,6 @@
31
26
  @import 'utils/visibility';
32
27
  @import 'utils/ratio';
33
28
 
29
+ // -- Includes
34
30
  $cat-font-path: 'assets/fonts' !default;
35
31
  @include cat-fonts($cat-font-path);
@@ -5,8 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-936b777e.js');
6
6
  const loglevel = require('./loglevel-b5d158ad.js');
7
7
  const catFormHint = require('./cat-form-hint-25fdfed5.js');
8
- const catIconRegistry = require('./cat-icon-registry-b015a65f.js');
9
- const catNotification = require('./cat-notification-fe237312.js');
8
+ const catNotification = require('./cat-notification-c2859ed7.js');
10
9
 
11
10
  const catAlertCss = ":host{display:block;margin-bottom:1rem}:host(:focus-visible){outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}:host([hidden]){display:none}.alert{font:inherit;color:rgb(var(--text));background-color:rgba(var(--bg), 0.1);box-shadow:inset 0 0 0 1px rgba(var(--border), 0.2);border-radius:0.25rem;padding:0.75rem 1rem}::slotted(:last-child){margin-bottom:0 !important}.alert-primary{--bg:var(--cat-primary-bg, 32, 127, 138);--text:var(--cat-primary-text, 32, 127, 138);--border:var(--cat-primary-text, 32, 127, 138)}.alert-secondary{--bg:105, 118, 135;--text:0, 0, 0;--border:105, 118, 135}.alert-success{--bg:0, 132, 88;--text:0, 132, 88;--border:0, 132, 88}.alert-warning{--bg:255, 206, 128;--text:159, 97, 0;--border:159, 97, 0}.alert-danger{--bg:217, 52, 13;--text:217, 52, 13;--border:217, 52, 13}";
12
11
 
@@ -275,7 +274,7 @@ function createEmptyStyleRule(query) {
275
274
  }
276
275
  }
277
276
 
278
- const catButtonCss = ":host{display:inline-block;max-width:100%;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;user-select:none;}:host([hidden]){display:none}.cat-button{position:relative;font:inherit;display:flex;align-items:center;justify-content:center;border:none;border-radius:0.25rem;text-decoration:none;width:100%;box-sizing:border-box;cursor:pointer;transition:color 0.13s linear, border-color 0.13s linear, background-color 0.13s linear, box-shadow 0.13s linear}.cat-button:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.cat-button-ellipsed .cat-button-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.cat-button-disabled{cursor:not-allowed;opacity:0.65;filter:grayscale(100%)}.cat-button-round{border-radius:10rem}.cat-button-loading{cursor:default}.cat-button-loading cat-spinner{position:absolute}.cat-button-loading>*:not(cat-spinner){visibility:hidden}.cat-button-filled{background-color:rgb(var(--bg));color:rgb(var(--fill));font-weight:600;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:greyscale}.cat-button-outlined{background-color:white;box-shadow:inset 0 0 0 1px rgba(var(--base), 0.2);color:rgb(var(--text))}.cat-button-outlined:hover:not(.cat-button-disabled):not(.cat-button-loading){background-color:rgba(var(--base), 0.05)}.cat-button-outlined:active:not(.cat-button-disabled):not(.cat-button-loading){background-color:rgba(var(--base), 0.1)}.cat-button-text{background-color:transparent;color:rgb(var(--text));text-decoration:none}.cat-button-text:hover:not(.cat-button-disabled):not(.cat-button-loading){text-decoration:underline}.cat-button-primary{--bg:var(--cat-primary-bg, 32, 127, 138);--fill:var(--cat-primary-fill, 255, 255, 255);--text:var(--cat-primary-text, 32, 127, 138);--base:var(--cat-primary-text, 32, 127, 138)}.cat-button-primary:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:var(--cat-primary-bg-hover, 28, 112, 122);--fill:var(--cat-primary-fill-hover, 255, 255, 255);--text:var(--cat-primary-text-hover, 28, 112, 122)}.cat-button-primary:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:var(--cat-primary-bg-active, 25, 101, 110);--fill:var(--cat-primary-fill-active, 255, 255, 255);--text:var(--cat-primary-text-active, 25, 101, 110)}.cat-button-secondary{--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0;--base:105, 118, 135}.cat-button-secondary:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0}.cat-button-secondary:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0}.cat-button-success{--bg:0, 132, 88;--fill:255, 255, 255;--text:0, 132, 88;--base:0, 132, 88}.cat-button-success:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:0, 117, 78;--fill:255, 255, 255;--text:0, 117, 78}.cat-button-success:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:0, 105, 70;--fill:255, 255, 255;--text:0, 105, 70}.cat-button-warning{--bg:255, 206, 128;--fill:0, 0, 0;--text:159, 97, 0;--base:159, 97, 0}.cat-button-warning:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:255, 214, 148;--fill:0, 0, 0;--text:159, 97, 0}.cat-button-warning:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:255, 222, 168;--fill:0, 0, 0;--text:159, 97, 0}.cat-button-danger{--bg:217, 52, 13;--fill:255, 255, 255;--text:217, 52, 13;--base:217, 52, 13}.cat-button-danger:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:194, 46, 11;--fill:255, 255, 255;--text:194, 46, 11}.cat-button-danger:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:174, 42, 10;--fill:255, 255, 255;--text:174, 42, 10}.cat-button-xs{min-width:1.5rem;padding:0.25rem 0.25rem;font-size:0.875rem;line-height:1rem}.cat-button-xs .cat-button-prefix{margin-right:0.25rem}.cat-button-xs .cat-button-suffix{margin-left:0.25rem}.cat-button-xs.cat-button-icon{width:1.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-xs{padding-left:1rem;padding-right:1rem}.cat-button-s{min-width:2rem;padding:0.375rem 0.5rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-s .cat-button-prefix{margin-right:0.25rem}.cat-button-s .cat-button-suffix{margin-left:0.25rem}.cat-button-s cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-s.cat-button-icon{width:2rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-s{padding-left:1rem;padding-right:1rem}.cat-button-m{min-width:2.5rem;padding:0.625rem 0.75rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-m .cat-button-prefix{margin-right:0.25rem}.cat-button-m .cat-button-suffix{margin-left:0.25rem}.cat-button-m cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-m.cat-button-icon{width:2.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-m{padding-left:1rem;padding-right:1rem}.cat-button-l{min-width:3rem;padding:0.875rem 1rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-l .cat-button-prefix{margin-right:0.25rem}.cat-button-l .cat-button-suffix{margin-left:0.25rem}.cat-button-l cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-l.cat-button-icon{width:3rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-l{padding-left:1rem;padding-right:1rem}.cat-button-xl{min-width:3.5rem;padding:1rem 1.25rem;font-size:1.125rem;line-height:1.5rem}.cat-button-xl .cat-button-prefix{margin-right:0.25rem}.cat-button-xl .cat-button-suffix{margin-left:0.25rem}.cat-button-xl.cat-button-icon{width:3.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-xl{padding-left:1rem;padding-right:1rem}.cat-button-active::before{content:\"\";display:block;position:absolute;top:0;left:0;width:0.25rem;height:100%;background:rgb(var(--base))}:host-context(nav){width:100%}:host-context(nav) .cat-button{box-shadow:none;border-radius:0;justify-content:left}:host-context(nav) .cat-button:focus-visible{outline-offset:-2px}:host(.cat-text-left) .cat-button{justify-content:left}:host(.cat-text-right) .cat-button{justify-content:right}";
277
+ const catButtonCss = ":host{display:inline-block;max-width:100%;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;user-select:none;}:host([hidden]){display:none}.cat-button{position:relative;font:inherit;display:flex;align-items:center;justify-content:center;border:none;border-radius:0.25rem;text-decoration:none;width:100%;box-sizing:border-box;cursor:pointer;transition:color 0.13s linear, border-color 0.13s linear, background-color 0.13s linear, box-shadow 0.13s linear}.cat-button:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.cat-button-ellipsed .cat-button-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.cat-button-disabled{cursor:not-allowed;opacity:0.65;filter:grayscale(100%)}.cat-button-round{border-radius:10rem}.cat-button-loading{cursor:default}.cat-button-loading cat-spinner{position:absolute}.cat-button-loading>*:not(cat-spinner){visibility:hidden}.cat-button-filled{background-color:rgb(var(--bg));color:rgb(var(--fill));font-weight:600;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:greyscale}.cat-button-outlined{background-color:white;box-shadow:inset 0 0 0 1px rgba(var(--base), 0.2);color:rgb(var(--text))}.cat-button-outlined:hover:not(.cat-button-disabled):not(.cat-button-loading){background-color:rgba(var(--base), 0.05)}.cat-button-outlined:active:not(.cat-button-disabled):not(.cat-button-loading){background-color:rgba(var(--base), 0.1)}.cat-button-text{background-color:transparent;color:rgb(var(--text));text-decoration:none}.cat-button-text:hover:not(.cat-button-disabled):not(.cat-button-loading){text-decoration:none;background-color:rgba(var(--base), 0.05)}.cat-button-primary{--bg:var(--cat-primary-bg, 32, 127, 138);--fill:var(--cat-primary-fill, 255, 255, 255);--text:var(--cat-primary-text, 32, 127, 138);--base:var(--cat-primary-text, 32, 127, 138)}.cat-button-primary:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:var(--cat-primary-bg-hover, 28, 112, 122);--fill:var(--cat-primary-fill-hover, 255, 255, 255);--text:var(--cat-primary-text-hover, 28, 112, 122)}.cat-button-primary:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:var(--cat-primary-bg-active, 25, 101, 110);--fill:var(--cat-primary-fill-active, 255, 255, 255);--text:var(--cat-primary-text-active, 25, 101, 110)}.cat-button-secondary{--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0;--base:105, 118, 135}.cat-button-secondary:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0}.cat-button-secondary:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:105, 118, 135;--fill:255, 255, 255;--text:0, 0, 0}.cat-button-success{--bg:0, 132, 88;--fill:255, 255, 255;--text:0, 132, 88;--base:0, 132, 88}.cat-button-success:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:0, 117, 78;--fill:255, 255, 255;--text:0, 117, 78}.cat-button-success:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:0, 105, 70;--fill:255, 255, 255;--text:0, 105, 70}.cat-button-warning{--bg:255, 206, 128;--fill:0, 0, 0;--text:159, 97, 0;--base:159, 97, 0}.cat-button-warning:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:255, 214, 148;--fill:0, 0, 0;--text:159, 97, 0}.cat-button-warning:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:255, 222, 168;--fill:0, 0, 0;--text:159, 97, 0}.cat-button-danger{--bg:217, 52, 13;--fill:255, 255, 255;--text:217, 52, 13;--base:217, 52, 13}.cat-button-danger:hover:not(.cat-button-disabled):not(.cat-button-loading){--bg:194, 46, 11;--fill:255, 255, 255;--text:194, 46, 11}.cat-button-danger:active:not(.cat-button-disabled):not(.cat-button-loading){--bg:174, 42, 10;--fill:255, 255, 255;--text:174, 42, 10}.cat-button-xs{min-width:1.5rem;padding:0.25rem 0.25rem;font-size:0.875rem;line-height:1rem}.cat-button-xs .cat-button-prefix{margin-right:0.25rem}.cat-button-xs .cat-button-suffix{margin-left:0.25rem}.cat-button-xs.cat-button-icon{width:1.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-xs{padding-left:1rem;padding-right:1rem}.cat-button-s{min-width:2rem;padding:0.375rem 0.5rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-s .cat-button-prefix{margin-right:0.25rem}.cat-button-s .cat-button-suffix{margin-left:0.25rem}.cat-button-s cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-s.cat-button-icon{width:2rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-s{padding-left:1rem;padding-right:1rem}.cat-button-m{min-width:2.5rem;padding:0.625rem 0.75rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-m .cat-button-prefix{margin-right:0.25rem}.cat-button-m .cat-button-suffix{margin-left:0.25rem}.cat-button-m cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-m.cat-button-icon{width:2.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-m{padding-left:1rem;padding-right:1rem}.cat-button-l{min-width:3rem;padding:0.875rem 1rem;font-size:0.9375rem;line-height:1.25rem}.cat-button-l .cat-button-prefix{margin-right:0.25rem}.cat-button-l .cat-button-suffix{margin-left:0.25rem}.cat-button-l cat-icon{margin-top:-0.125rem;margin-bottom:-0.125rem}.cat-button-l.cat-button-icon{width:3rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-l{padding-left:1rem;padding-right:1rem}.cat-button-xl{min-width:3.5rem;padding:1rem 1.25rem;font-size:1.125rem;line-height:1.5rem}.cat-button-xl .cat-button-prefix{margin-right:0.25rem}.cat-button-xl .cat-button-suffix{margin-left:0.25rem}.cat-button-xl.cat-button-icon{width:3.5rem;padding-left:0;padding-right:0}:host-context(nav) .cat-button-xl{padding-left:1rem;padding-right:1rem}.cat-button-active::before{content:\"\";display:block;position:absolute;top:0;left:0;width:0.25rem;height:100%;background:rgb(var(--base))}:host-context(nav){width:100%}:host-context(nav) .cat-button{box-shadow:none;border-radius:0;justify-content:left}:host-context(nav) .cat-button:focus-visible{outline-offset:-2px}:host(.cat-text-left) .cat-button{justify-content:left}:host(.cat-text-right) .cat-button{justify-content:right}";
279
278
 
280
279
  const CatButton = class {
281
280
  constructor(hostRef) {
@@ -452,7 +451,7 @@ const CatButton = class {
452
451
  };
453
452
  CatButton.style = catButtonCss;
454
453
 
455
- const catCardCss = ":host{display:block;margin-bottom:1rem;border-radius:0.5rem;background-color:white;padding:1.5rem}:host([hidden]){display:none}::slotted(nav){margin:-1rem -1.5rem !important}::slotted(:last-child){margin-bottom:0}";
454
+ const catCardCss = ":host{display:block;margin-bottom:1rem;border-radius:0.5rem;background-color:white;padding:1.5rem}:host([hidden]){display:none}::slotted(nav){margin:-1rem -1.5rem !important}::slotted(:last-child){margin-bottom:0}::slotted(.cat-card-pull){margin:-1.5rem !important;width:calc(100% + 3rem) !important;height:calc(100% + 3rem) !important}::slotted(.cat-card-pull-h){margin-left:-1.5rem !important;margin-right:-1.5rem !important;width:calc(100% + 3rem) !important}::slotted(.cat-card-pull-v){margin-top:-1.5rem !important;margin-bottom:-1.5rem !important;height:calc(100% + 3rem) !important}::slotted(.cat-card-pull-t){margin-top:-1.5rem !important}::slotted(.cat-card-pull-l){margin-left:-1.5rem !important}::slotted(.cat-card-pull-r){margin-right:-1.5rem !important}::slotted(.cat-card-pull-b){margin-bottom:-1.5rem !important}";
456
455
 
457
456
  const CatCard = class {
458
457
  constructor(hostRef) {
@@ -464,7 +463,7 @@ const CatCard = class {
464
463
  };
465
464
  CatCard.style = catCardCss;
466
465
 
467
- const catCheckboxCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}input{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.box{flex:0 0 auto;display:flex;position:relative;height:1.25rem;width:1.25rem;background-color:white;border:1px solid #d7dbe0;border-radius:0.125rem;transition:background-color 0.13s ease, border-color 0.13s ease}.box svg{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16px;stroke-dashoffset:16px;transition:all 0.13s ease;width:70%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%) scale(0.99)}:checked+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:checked+.box .check{stroke-dashoffset:0}:indeterminate+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:indeterminate+.box .dash{stroke-dashoffset:0}:focus-visible+.box{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.label{flex:1 1 auto}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
466
+ const catCheckboxCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.label-left{flex-direction:row-reverse}input{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.box{flex:0 0 auto;display:flex;position:relative;height:1.25rem;width:1.25rem;background-color:white;border:1px solid #d7dbe0;border-radius:0.125rem;transition:background-color 0.13s ease, border-color 0.13s ease}.box svg{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16px;stroke-dashoffset:16px;transition:all 0.13s ease;width:70%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%) scale(0.99)}:checked+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:checked+.box .check{stroke-dashoffset:0}:indeterminate+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:indeterminate+.box .dash{stroke-dashoffset:0}:focus-visible+.box{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.label{flex:1 1 auto}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
468
467
 
469
468
  let nextUniqueId$7 = 0;
470
469
  const CatCheckbox = class {
@@ -499,6 +498,10 @@ const CatCheckbox = class {
499
498
  * Required state of the checkbox
500
499
  */
501
500
  this.required = false;
501
+ /**
502
+ * Whether the label should appear to the left of the checkbox.
503
+ */
504
+ this.labelLeft = false;
502
505
  }
503
506
  componentDidLoad() {
504
507
  if (this.input && this.indeterminate) {
@@ -521,7 +524,7 @@ const CatCheckbox = class {
521
524
  this.input.focus(options);
522
525
  }
523
526
  render() {
524
- return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled } }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "checkbox", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "box", "aria-hidden": "true", part: "checkbox" }, index.h("svg", { class: "check", viewBox: "0 0 12 10" }, index.h("polyline", { points: "1.5 6 4.5 9 10.5 1" })), index.h("svg", { class: "dash", viewBox: "0 0 12 10" }, index.h("polyline", { points: "1.5 5 10.5 5" }))), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
527
+ return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft } }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "checkbox", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "box", "aria-hidden": "true", part: "checkbox" }, index.h("svg", { class: "check", viewBox: "0 0 12 10" }, index.h("polyline", { points: "1.5 6 4.5 9 10.5 1" })), index.h("svg", { class: "dash", viewBox: "0 0 12 10" }, index.h("polyline", { points: "1.5 5 10.5 5" }))), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
525
528
  }
526
529
  get hintSection() {
527
530
  const hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
@@ -546,7 +549,7 @@ const catIconCss = ":host{display:inline-flex;vertical-align:middle;-webkit-user
546
549
  const CatIcon = class {
547
550
  constructor(hostRef) {
548
551
  index.registerInstance(this, hostRef);
549
- this.iconRegistry = catIconRegistry.CatIconRegistry.getInstance();
552
+ this.iconRegistry = catNotification.CatIconRegistry.getInstance();
550
553
  /**
551
554
  * The name of the icon.
552
555
  */
@@ -574,7 +577,7 @@ const CatInput = class {
574
577
  this.catChange = index.createEvent(this, "catChange", 7);
575
578
  this.catFocus = index.createEvent(this, "catFocus", 7);
576
579
  this.catBlur = index.createEvent(this, "catBlur", 7);
577
- this.i18n = catIconRegistry.CatI18nRegistry.getInstance();
580
+ this.i18n = catNotification.CatI18nRegistry.getInstance();
578
581
  this.id = `cat-input-${nextUniqueId$6++}`;
579
582
  this.hasSlottedLabel = false;
580
583
  /**
@@ -3066,7 +3069,7 @@ const CatModal = class {
3066
3069
  };
3067
3070
  CatModal.style = catModalCss;
3068
3071
 
3069
- const catRadioCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;cursor:pointer}.radio{display:flex;position:relative}.circle{position:absolute;width:0.75rem;height:0.75rem;background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-radius:10rem;top:calc(50% - 0.375rem);left:calc(50% - 0.375rem);visibility:hidden}input{margin:0;width:1.25rem;height:1.25rem;appearance:none;background-color:white;border:1px solid #d7dbe0;border-radius:10rem;cursor:inherit}input:checked{border-color:rgb(var(--cat-primary-bg, 32, 127, 138))}input:checked+.circle{visibility:visible}input:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}.is-disabled input{background-color:#f8f8fb}.is-disabled input:checked{border-color:#d7dbe0}.is-disabled .circle{background-color:#d7dbe0}";
3072
+ const catRadioCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;cursor:pointer}.label-left{flex-direction:row-reverse}.radio{display:flex;position:relative}.circle{position:absolute;width:0.75rem;height:0.75rem;background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-radius:10rem;top:calc(50% - 0.375rem);left:calc(50% - 0.375rem);visibility:hidden}input{margin:0;width:1.25rem;height:1.25rem;appearance:none;background-color:white;border:1px solid #d7dbe0;border-radius:10rem;cursor:inherit}input:checked{border-color:rgb(var(--cat-primary-bg, 32, 127, 138))}input:checked+.circle{visibility:visible}input:focus-visible{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.label{flex:1 1 auto}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}.is-disabled input{background-color:#f8f8fb}.is-disabled input:checked{border-color:#d7dbe0}.is-disabled .circle{background-color:#d7dbe0}";
3070
3073
 
3071
3074
  let nextUniqueId$4 = 0;
3072
3075
  const CatRadio = class {
@@ -3097,6 +3100,10 @@ const CatRadio = class {
3097
3100
  * Whether the radio is required.
3098
3101
  */
3099
3102
  this.required = false;
3103
+ /**
3104
+ * Whether the label should appear to the left of the radio component.
3105
+ */
3106
+ this.labelLeft = false;
3100
3107
  }
3101
3108
  componentWillRender() {
3102
3109
  this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
@@ -3114,13 +3121,14 @@ const CatRadio = class {
3114
3121
  this.input.focus(options);
3115
3122
  }
3116
3123
  render() {
3117
- return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled } }, index.h("span", { class: "radio" }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "radio", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onChange.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "circle" })), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
3124
+ return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }, role: "radio", "aria-checked": this.checked ? 'true' : 'false' }, index.h("span", { class: "radio" }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "radio", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onChange.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "circle" })), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
3118
3125
  }
3119
3126
  get hintSection() {
3120
3127
  const hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
3121
3128
  return ((this.hint || hasSlottedHint) && (index.h(catFormHint.CatFormHint, { hint: this.hint, slottedHint: hasSlottedHint && index.h("slot", { name: "hint" }) })));
3122
3129
  }
3123
3130
  onChange(event) {
3131
+ this.checked = true;
3124
3132
  this.value = this.input.value;
3125
3133
  this.catChange.emit(event);
3126
3134
  }
@@ -3134,6 +3142,89 @@ const CatRadio = class {
3134
3142
  };
3135
3143
  CatRadio.style = catRadioCss;
3136
3144
 
3145
+ const catRadioGroupCss = ":host{display:block}:host([hidden]){display:none}";
3146
+
3147
+ const CatRadioGroup = class {
3148
+ constructor(hostRef) {
3149
+ index.registerInstance(this, hostRef);
3150
+ this.catRadioGroup = [];
3151
+ /**
3152
+ * Whether this radio group is disabled.
3153
+ */
3154
+ this.disabled = false;
3155
+ /**
3156
+ * Whether the label of the radios should appear to the left of them.
3157
+ */
3158
+ this.labelLeft = false;
3159
+ }
3160
+ onNameChanged(newName) {
3161
+ this.catRadioGroup.forEach(catRadio => {
3162
+ catRadio.name = newName;
3163
+ });
3164
+ }
3165
+ onDisabledChanged(disabled) {
3166
+ this.catRadioGroup.forEach(catRadio => {
3167
+ if (disabled) {
3168
+ catRadio.disabled = disabled;
3169
+ }
3170
+ });
3171
+ }
3172
+ onLabelLeftChanged(labelLeft) {
3173
+ this.catRadioGroup.forEach(catRadio => {
3174
+ if (labelLeft) {
3175
+ catRadio.labelLeft = labelLeft;
3176
+ }
3177
+ });
3178
+ }
3179
+ componentDidLoad() {
3180
+ this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));
3181
+ this.onNameChanged(this.name);
3182
+ this.onDisabledChanged(this.disabled);
3183
+ this.onLabelLeftChanged(this.labelLeft);
3184
+ this.updateTabIndex();
3185
+ }
3186
+ onKeydown(event) {
3187
+ var _a, _b;
3188
+ if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {
3189
+ const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);
3190
+ const activeElement = document.activeElement;
3191
+ const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);
3192
+ const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;
3193
+ const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;
3194
+ targetElements[targetIdx].setFocus();
3195
+ (_b = (_a = targetElements[targetIdx].shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === null || _b === void 0 ? void 0 : _b.click();
3196
+ this.updateTabIndex();
3197
+ event.preventDefault();
3198
+ }
3199
+ }
3200
+ onInput(event) {
3201
+ const catRadioElement = this.catRadioGroup.find(value => value === event.target);
3202
+ if (catRadioElement && catRadioElement.checked) {
3203
+ const catRadioElements = this.catRadioGroup.filter(value => value !== catRadioElement);
3204
+ catRadioElements.forEach(value => (value.checked = false));
3205
+ this.updateTabIndex();
3206
+ }
3207
+ }
3208
+ render() {
3209
+ return (index.h("div", { role: "radiogroup", "aria-label": this.a11yLabel }, index.h("slot", null)));
3210
+ }
3211
+ updateTabIndex() {
3212
+ var _a, _b;
3213
+ if (this.catRadioGroup.length) {
3214
+ this.catRadioGroup.forEach(value => { var _a, _b; return (_b = (_a = value.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === null || _b === void 0 ? void 0 : _b.setAttribute('tabindex', '-1'); });
3215
+ const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);
3216
+ (_b = (_a = this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === null || _b === void 0 ? void 0 : _b.setAttribute('tabindex', '0');
3217
+ }
3218
+ }
3219
+ get hostElement() { return index.getElement(this); }
3220
+ static get watchers() { return {
3221
+ "name": ["onNameChanged"],
3222
+ "disabled": ["onDisabledChanged"],
3223
+ "labelLeft": ["onLabelLeftChanged"]
3224
+ }; }
3225
+ };
3226
+ CatRadioGroup.style = catRadioGroupCss;
3227
+
3137
3228
  function isFunction(value) {
3138
3229
  return typeof value === 'function';
3139
3230
  }
@@ -11967,7 +12058,8 @@ const CatSelect = class {
11967
12058
  index.registerInstance(this, hostRef);
11968
12059
  this.catChange = index.createEvent(this, "catChange", 7);
11969
12060
  this.catSearch = index.createEvent(this, "catSearch", 7);
11970
- this.i18n = catIconRegistry.CatI18nRegistry.getInstance();
12061
+ this.catScrolledBottom = index.createEvent(this, "catScrolledBottom", 7);
12062
+ this.i18n = catNotification.CatI18nRegistry.getInstance();
11971
12063
  this.id = `cat-select-${nextUniqueId$3++}`;
11972
12064
  this.hasSlottedLabel = false;
11973
12065
  /**
@@ -12014,6 +12106,11 @@ const CatSelect = class {
12014
12106
  return;
12015
12107
  this.setChoices(choices, 'value', 'label', true);
12016
12108
  }
12109
+ setValueHandler(value) {
12110
+ if (this.multiple)
12111
+ return;
12112
+ this.setValue(value || []);
12113
+ }
12017
12114
  componentWillRender() {
12018
12115
  this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
12019
12116
  if (!this.label && !this.hasSlottedLabel) {
@@ -12021,29 +12118,36 @@ const CatSelect = class {
12021
12118
  }
12022
12119
  }
12023
12120
  componentDidLoad() {
12024
- var _a, _b, _c, _d, _e, _f, _g, _h;
12121
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
12025
12122
  this.init();
12026
- this.choiceInner = ((_c = (_b = (_a = this.hostElement).attachInternals) === null || _b === void 0 ? void 0 : _b.call(_a).shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.choices__inner')) || undefined;
12027
- (_d = this.choiceInner) === null || _d === void 0 ? void 0 : _d.addEventListener('click', this.showDropdownHandler.bind(this));
12028
- (_e = this.selectElement) === null || _e === void 0 ? void 0 : _e.addEventListener('addItem', this.onChange.bind(this));
12029
- (_f = this.selectElement) === null || _f === void 0 ? void 0 : _f.addEventListener('removeItem', this.onChange.bind(this));
12030
- (_g = this.selectElement) === null || _g === void 0 ? void 0 : _g.addEventListener('search', this.onSearch.bind(this));
12123
+ const attachedInternals = (_b = (_a = this.hostElement).attachInternals) === null || _b === void 0 ? void 0 : _b.call(_a);
12124
+ if (attachedInternals) {
12125
+ this.choiceInner = ((_c = attachedInternals.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.choices__inner')) || undefined;
12126
+ this.choiceDropdown =
12127
+ ((_e = (_d = attachedInternals.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.choices__list--dropdown')) === null || _e === void 0 ? void 0 : _e.firstElementChild) || undefined;
12128
+ }
12129
+ (_f = this.choiceInner) === null || _f === void 0 ? void 0 : _f.addEventListener('click', this.showDropdownHandler.bind(this));
12130
+ (_g = this.selectElement) === null || _g === void 0 ? void 0 : _g.addEventListener('addItem', this.onChange.bind(this));
12131
+ (_h = this.selectElement) === null || _h === void 0 ? void 0 : _h.addEventListener('removeItem', this.onChange.bind(this));
12132
+ (_j = this.selectElement) === null || _j === void 0 ? void 0 : _j.addEventListener('search', this.onSearch.bind(this));
12133
+ (_k = this.choiceDropdown) === null || _k === void 0 ? void 0 : _k.addEventListener('scroll', this.onScrolledBottom.bind(this));
12031
12134
  if (this.multiple) {
12032
- (_h = this.selectElement) === null || _h === void 0 ? void 0 : _h.addEventListener('choice', this.onChoice.bind(this));
12135
+ (_l = this.selectElement) === null || _l === void 0 ? void 0 : _l.addEventListener('choice', this.onChoice.bind(this));
12033
12136
  this.createRemoveItemButton();
12034
12137
  }
12035
12138
  }
12036
12139
  disconnectedCallback() {
12037
- var _a, _b, _c, _d, _e, _f, _g;
12140
+ var _a, _b, _c, _d, _e, _f, _g, _h;
12038
12141
  (_a = this.choice) === null || _a === void 0 ? void 0 : _a.destroy();
12039
12142
  this.choice = undefined;
12040
12143
  (_b = this.choiceInner) === null || _b === void 0 ? void 0 : _b.removeEventListener('click', this.showDropdownHandler.bind(this));
12041
12144
  (_c = this.selectElement) === null || _c === void 0 ? void 0 : _c.removeEventListener('addItem', this.onChange.bind(this));
12042
12145
  (_d = this.selectElement) === null || _d === void 0 ? void 0 : _d.removeEventListener('removeItem', this.onChange.bind(this));
12043
12146
  (_e = this.selectElement) === null || _e === void 0 ? void 0 : _e.removeEventListener('search', this.onSearch.bind(this));
12147
+ (_f = this.choiceDropdown) === null || _f === void 0 ? void 0 : _f.removeEventListener('scroll', this.onScrolledBottom.bind(this));
12044
12148
  if (this.multiple) {
12045
- (_f = this.selectElement) === null || _f === void 0 ? void 0 : _f.removeEventListener('choice', this.onChoice.bind(this));
12046
- (_g = this.removeElement) === null || _g === void 0 ? void 0 : _g.removeEventListener('click', this.onRemoveItemButtonClick.bind(this));
12149
+ (_g = this.selectElement) === null || _g === void 0 ? void 0 : _g.removeEventListener('choice', this.onChoice.bind(this));
12150
+ (_h = this.removeElement) === null || _h === void 0 ? void 0 : _h.removeEventListener('click', this.onRemoveItemButtonClick.bind(this));
12047
12151
  }
12048
12152
  }
12049
12153
  /**
@@ -12087,6 +12191,7 @@ const CatSelect = class {
12087
12191
  }
12088
12192
  init() {
12089
12193
  const value = this.value || [];
12194
+ const removeItemText = (value) => this.i18n.t('select.removeItem', { value });
12090
12195
  const config = {
12091
12196
  allowHTML: true,
12092
12197
  items: Array.isArray(value) ? value : [value],
@@ -12122,6 +12227,10 @@ const CatSelect = class {
12122
12227
  return strToEl(`
12123
12228
  <div class="${classNames.item} ${data.highlighted ? classNames.highlightedState : classNames.itemSelectable} ${data.placeholder ? classNames.placeholder : ''}" data-item data-id="${data.id}" data-value="${data.value}" ${data.active ? 'aria-selected="true"' : ''} ${data.disabled ? 'aria-disabled="true"' : ''}>
12124
12229
  <span>${template}</span> ${data.label}
12230
+ <button type="button"
12231
+ class="${classNames.button}"
12232
+ aria-label="${removeItemText(data.label)}"
12233
+ data-button>${removeItemText(data.label)}</button>
12125
12234
  </div>
12126
12235
  `);
12127
12236
  }
@@ -12146,6 +12255,10 @@ const CatSelect = class {
12146
12255
  ${data.disabled ? 'aria-disabled="true"' : ''}>
12147
12256
  ${template}
12148
12257
  ${data.label}
12258
+ <button type="button"
12259
+ class="${classNames.button}"
12260
+ aria-label="${removeItemText(data.label)}"
12261
+ data-button>${removeItemText(data.label)}</button>
12149
12262
  </div>`);
12150
12263
  },
12151
12264
  choice: function ({ classNames }, data) {
@@ -12185,6 +12298,14 @@ const CatSelect = class {
12185
12298
  const customEvent = event;
12186
12299
  this.catSearch.emit(customEvent.detail.value);
12187
12300
  }
12301
+ onScrolledBottom() {
12302
+ var _a, _b, _c;
12303
+ const scrolledBottom = ((_a = this.choiceDropdown) === null || _a === void 0 ? void 0 : _a.scrollHeight) ===
12304
+ (((_b = this.choiceDropdown) === null || _b === void 0 ? void 0 : _b.scrollTop) || 0) + (((_c = this.choiceDropdown) === null || _c === void 0 ? void 0 : _c.clientHeight) || 0);
12305
+ if (scrolledBottom) {
12306
+ this.catScrolledBottom.emit();
12307
+ }
12308
+ }
12188
12309
  onChoice(event) {
12189
12310
  var _a, _b;
12190
12311
  const customEvent = event;
@@ -12227,7 +12348,8 @@ const CatSelect = class {
12227
12348
  }
12228
12349
  get hostElement() { return index.getElement(this); }
12229
12350
  static get watchers() { return {
12230
- "choices": ["setChoicesHandler"]
12351
+ "choices": ["setChoicesHandler"],
12352
+ "value": ["setValueHandler"]
12231
12353
  }; }
12232
12354
  };
12233
12355
  CatSelect.style = catSelectCss;
@@ -12444,7 +12566,7 @@ const CatToastDemo = class {
12444
12566
  };
12445
12567
  CatToastDemo.style = catToastDemoCss;
12446
12568
 
12447
- const catToggleCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}input{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.toggle{flex:0 0 auto;display:flex;align-items:center;justify-content:center;position:relative;width:2rem;height:1.25rem;border-radius:10rem;background-color:#d7dbe0;transition:background-color 0.13s ease}:checked+.toggle{background-color:rgb(var(--cat-primary-bg, 32, 127, 138))}:focus-visible+.toggle{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.toggle::after{content:\"\";position:absolute;width:1rem;height:1rem;background:#fff;border-radius:10rem;transform:translateX(calc(2px - 0.5rem));transition:transform 0.13s linear;box-shadow:0 1px 4px 0 rgba(16, 29, 48, 0.2)}:checked+.toggle::after{transform:translateX(calc(-2px + 0.5rem))}.label{flex:1 1 auto}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
12569
+ const catToggleCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;margin:0}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.label-left{flex-direction:row-reverse}input{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.toggle{flex:0 0 auto;display:flex;align-items:center;justify-content:center;position:relative;width:2rem;height:1.25rem;border-radius:10rem;background-color:#d7dbe0;transition:background-color 0.13s ease}:checked+.toggle{background-color:rgb(var(--cat-primary-bg, 32, 127, 138))}:focus-visible+.toggle{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.toggle::after{content:\"\";position:absolute;width:1rem;height:1rem;background:#fff;border-radius:10rem;transform:translateX(calc(2px - 0.5rem));transition:transform 0.13s linear;box-shadow:0 1px 4px 0 rgba(16, 29, 48, 0.2)}:checked+.toggle::after{transform:translateX(calc(-2px + 0.5rem))}.label{flex:1 1 auto}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
12448
12570
 
12449
12571
  let nextUniqueId$1 = 0;
12450
12572
  const CatToggle = class {
@@ -12472,9 +12594,13 @@ const CatToggle = class {
12472
12594
  */
12473
12595
  this.labelHidden = false;
12474
12596
  /**
12475
- * Required state of the toggle
12597
+ * Required state of the toggle.
12476
12598
  */
12477
12599
  this.required = false;
12600
+ /**
12601
+ * Whether the label should appear to the left of the toggle.
12602
+ */
12603
+ this.labelLeft = false;
12478
12604
  }
12479
12605
  componentWillRender() {
12480
12606
  this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
@@ -12492,7 +12618,7 @@ const CatToggle = class {
12492
12618
  this.input.focus(options);
12493
12619
  }
12494
12620
  render() {
12495
- return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled } }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "checkbox", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, class: "form-check-input", role: "switch", onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "toggle", part: "toggle" }), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
12621
+ return (index.h(index.Host, null, index.h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft } }, index.h("input", { ref: el => (this.input = el), id: this.id, type: "checkbox", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, class: "form-check-input", role: "switch", onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this) }), index.h("span", { class: "toggle", part: "toggle" }), index.h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label)), this.hintSection));
12496
12622
  }
12497
12623
  get hintSection() {
12498
12624
  const hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
@@ -12651,6 +12777,7 @@ exports.cat_input = CatInput;
12651
12777
  exports.cat_menu = CatMenu;
12652
12778
  exports.cat_modal = CatModal;
12653
12779
  exports.cat_radio = CatRadio;
12780
+ exports.cat_radio_group = CatRadioGroup;
12654
12781
  exports.cat_scrollable = CatScrollable;
12655
12782
  exports.cat_select = CatSelect;
12656
12783
  exports.cat_skeleton = CatSkeleton;
@@ -12661,4 +12788,4 @@ exports.cat_toast_demo = CatToastDemo;
12661
12788
  exports.cat_toggle = CatToggle;
12662
12789
  exports.cat_tooltip = CatTooltip;
12663
12790
 
12664
- //# sourceMappingURL=cat-alert_20.cjs.entry.js.map
12791
+ //# sourceMappingURL=cat-alert_21.cjs.entry.js.map