@ni/nimble-components 18.3.7 → 18.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16446,6 +16446,7 @@
16446
16446
  const Pass100DarkUi = "#00c12b";
16447
16447
  const Fail100LightUi = "#c4000c";
16448
16448
  const Fail100DarkUi = "#ff4646";
16449
+ const Black75 = "#818386";
16449
16450
  const Black15 = "#f1f1f2";
16450
16451
  const Black7 = "#f5f5f5";
16451
16452
  const White = "#ffffff";
@@ -16585,6 +16586,7 @@
16585
16586
  modalBackdropColor: 'modal-backdrop-color',
16586
16587
  popupBorderColor: 'popup-border-color',
16587
16588
  controlHeight: 'control-height',
16589
+ controlSlimHeight: 'control-slim-height',
16588
16590
  smallPadding: 'small-padding',
16589
16591
  standardPadding: 'standard-padding',
16590
16592
  labelHeight: 'label-height',
@@ -16592,6 +16594,7 @@
16592
16594
  iconSize: 'icon-size',
16593
16595
  groupHeaderTextTransform: 'group-header-text-transform',
16594
16596
  drawerWidth: 'drawer-width',
16597
+ bannerGapSize: 'banner-gap-size',
16595
16598
  spinnerSmallHeight: 'spinner-small-height',
16596
16599
  spinnerMediumHeight: 'spinner-medium-height',
16597
16600
  spinnerLargeHeight: 'spinner-large-height',
@@ -16804,9 +16807,9 @@
16804
16807
  return `${prefix}${uniqueIdCounter++}`;
16805
16808
  }
16806
16809
 
16807
- const template$j = html `<slot></slot>`;
16810
+ const template$k = html `<slot></slot>`;
16808
16811
 
16809
- const styles$I = css `
16812
+ const styles$J = css `
16810
16813
  :host {
16811
16814
  display: contents;
16812
16815
  }
@@ -16862,8 +16865,8 @@
16862
16865
  ], ThemeProvider.prototype, "theme", void 0);
16863
16866
  const nimbleDesignSystemProvider = ThemeProvider.compose({
16864
16867
  baseName: 'theme-provider',
16865
- styles: styles$I,
16866
- template: template$j
16868
+ styles: styles$J,
16869
+ template: template$k
16867
16870
  });
16868
16871
  DesignSystem.getOrCreate()
16869
16872
  .withPrefix('nimble')
@@ -16895,12 +16898,14 @@
16895
16898
  const tableRowBorderColor = DesignToken.create(styleNameFromTokenName(tokenNames.tableRowBorderColor)).withDefault((element) => getColorForTheme(element, Black15, Black88, ForestGreen));
16896
16899
  // Component Sizing Tokens
16897
16900
  const controlHeight = DesignToken.create(styleNameFromTokenName(tokenNames.controlHeight)).withDefault('32px');
16901
+ const controlSlimHeight = DesignToken.create(styleNameFromTokenName(tokenNames.controlSlimHeight)).withDefault('24px');
16898
16902
  const smallPadding = DesignToken.create(styleNameFromTokenName(tokenNames.smallPadding)).withDefault('4px');
16899
16903
  const standardPadding = DesignToken.create(styleNameFromTokenName(tokenNames.standardPadding)).withDefault('16px');
16900
16904
  DesignToken.create(styleNameFromTokenName(tokenNames.labelHeight)).withDefault('16px');
16901
16905
  const borderWidth = DesignToken.create(styleNameFromTokenName(tokenNames.borderWidth)).withDefault('1px');
16902
16906
  const iconSize = DesignToken.create(styleNameFromTokenName(tokenNames.iconSize)).withDefault('16px');
16903
16907
  const drawerWidth = DesignToken.create(styleNameFromTokenName(tokenNames.drawerWidth)).withDefault('784px');
16908
+ DesignToken.create(styleNameFromTokenName(tokenNames.bannerGapSize)).withDefault('1px');
16904
16909
  const spinnerSmallHeight = DesignToken.create(styleNameFromTokenName(tokenNames.spinnerSmallHeight)).withDefault('16px');
16905
16910
  DesignToken.create(styleNameFromTokenName(tokenNames.spinnerMediumHeight)).withDefault('32px');
16906
16911
  DesignToken.create(styleNameFromTokenName(tokenNames.spinnerLargeHeight)).withDefault('64px');
@@ -17025,7 +17030,7 @@
17025
17030
  }
17026
17031
  }
17027
17032
 
17028
- const styles$H = css `
17033
+ const styles$I = css `
17029
17034
  ${display('inline')}
17030
17035
 
17031
17036
  :host {
@@ -17108,7 +17113,7 @@
17108
17113
  `;
17109
17114
 
17110
17115
  // prettier-ignore
17111
- const template$i = (context, definition) => html `
17116
+ const template$j = (context, definition) => html `
17112
17117
  <a
17113
17118
  class="control"
17114
17119
  part="control"
@@ -17181,8 +17186,8 @@
17181
17186
  const nimbleAnchor = Anchor.compose({
17182
17187
  baseName: 'anchor',
17183
17188
  baseClass: Anchor$1,
17184
- template: template$i,
17185
- styles: styles$H,
17189
+ template: template$j,
17190
+ styles: styles$I,
17186
17191
  shadowOptions: {
17187
17192
  delegatesFocus: true
17188
17193
  }
@@ -17267,7 +17272,7 @@
17267
17272
  return new MultivaluePropertyStyleSheetBehavior('appearance', value, styles);
17268
17273
  }
17269
17274
 
17270
- const styles$G = css `
17275
+ const styles$H = css `
17271
17276
  ${display('inline-flex')}
17272
17277
 
17273
17278
  :host {
@@ -17548,8 +17553,8 @@
17548
17553
  }
17549
17554
  `));
17550
17555
 
17551
- const styles$F = css `
17552
- ${styles$G}
17556
+ const styles$G = css `
17557
+ ${styles$H}
17553
17558
  ${buttonAppearanceVariantStyles}
17554
17559
 
17555
17560
  .control {
@@ -17557,7 +17562,7 @@
17557
17562
  }
17558
17563
  `;
17559
17564
 
17560
- const template$h = (context, definition) => html `
17565
+ const template$i = (context, definition) => html `
17561
17566
  <a
17562
17567
  class="control"
17563
17568
  part="control"
@@ -17639,15 +17644,15 @@
17639
17644
  ], AnchorButton.prototype, "disabled", void 0);
17640
17645
  const nimbleAnchorButton = AnchorButton.compose({
17641
17646
  baseName: 'anchor-button',
17642
- template: template$h,
17643
- styles: styles$F,
17647
+ template: template$i,
17648
+ styles: styles$G,
17644
17649
  shadowOptions: {
17645
17650
  delegatesFocus: true
17646
17651
  }
17647
17652
  });
17648
17653
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorButton());
17649
17654
 
17650
- const styles$E = css `
17655
+ const styles$F = css `
17651
17656
  ${display('inline-flex')}
17652
17657
 
17653
17658
  :host {
@@ -17753,8 +17758,8 @@
17753
17758
  }
17754
17759
  `;
17755
17760
 
17756
- const styles$D = css `
17757
- ${styles$E}
17761
+ const styles$E = css `
17762
+ ${styles$F}
17758
17763
 
17759
17764
  a {
17760
17765
  text-decoration: none;
@@ -17764,7 +17769,7 @@
17764
17769
  }
17765
17770
  `;
17766
17771
 
17767
- const template$g = () => html `
17772
+ const template$h = () => html `
17768
17773
  <template slot="anchortab" role="tab" aria-disabled="${x => x.disabled}">
17769
17774
  <a
17770
17775
  download="${x => x.download}"
@@ -17802,12 +17807,12 @@
17802
17807
  ], AnchorTab.prototype, "disabled", void 0);
17803
17808
  const nimbleAnchorTab = AnchorTab.compose({
17804
17809
  baseName: 'anchor-tab',
17805
- template: template$g,
17806
- styles: styles$D
17810
+ template: template$h,
17811
+ styles: styles$E
17807
17812
  });
17808
17813
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTab());
17809
17814
 
17810
- const styles$C = css `
17815
+ const styles$D = css `
17811
17816
  ${display('grid')}
17812
17817
 
17813
17818
  :host {
@@ -17825,7 +17830,7 @@
17825
17830
  }
17826
17831
  `;
17827
17832
 
17828
- const template$f = (context, definition) => html `
17833
+ const template$g = (context, definition) => html `
17829
17834
  ${startSlotTemplate(context, definition)}
17830
17835
  <div ${ref('tablist')} class="tablist" part="tablist" role="tablist">
17831
17836
  <slot name="anchortab" ${slotted('tabs')}></slot>
@@ -18022,15 +18027,15 @@
18022
18027
  applyMixins(AnchorTabs, StartEnd);
18023
18028
  const nimbleAnchorTabs = AnchorTabs.compose({
18024
18029
  baseName: 'anchor-tabs',
18025
- template: template$f,
18026
- styles: styles$C,
18030
+ template: template$g,
18031
+ styles: styles$D,
18027
18032
  shadowOptions: {
18028
18033
  delegatesFocus: false
18029
18034
  }
18030
18035
  });
18031
18036
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTabs());
18032
18037
 
18033
- const styles$B = css `
18038
+ const styles$C = css `
18034
18039
  :host {
18035
18040
  contain: layout;
18036
18041
  display: block;
@@ -18054,56 +18059,296 @@
18054
18059
  baseName: 'anchored-region',
18055
18060
  baseClass: AnchoredRegion$1,
18056
18061
  template: anchoredRegionTemplate,
18057
- styles: styles$B
18062
+ styles: styles$C
18058
18063
  });
18059
18064
  DesignSystem.getOrCreate()
18060
18065
  .withPrefix('nimble')
18061
18066
  .register(nimbleAnchoredRegion());
18062
18067
 
18063
- const styles$A = css `
18064
- ${display('inline-block')}
18068
+ /**
18069
+ * Subscription for {@link ThemeStyleSheetBehavior}
18070
+ */
18071
+ class ThemeStyleSheetBehaviorSubscription {
18072
+ constructor(value, styles, source) {
18073
+ this.value = value;
18074
+ this.styles = styles;
18075
+ this.source = source;
18076
+ }
18077
+ handleChange() {
18078
+ const theme$1 = theme.getValueFor(this.source);
18079
+ if (Array.isArray(this.value)
18080
+ ? this.value.includes(theme$1)
18081
+ : this.value === theme$1) {
18082
+ this.source.$fastController.addStyles(this.styles);
18083
+ }
18084
+ else {
18085
+ this.source.$fastController.removeStyles(this.styles);
18086
+ }
18087
+ }
18088
+ }
18089
+ /**
18090
+ * Behavior to conditionally apply theme-based stylesheets.
18091
+ */
18092
+ class ThemeStyleSheetBehavior {
18093
+ constructor(theme, styles) {
18094
+ this.theme = theme;
18095
+ this.styles = styles;
18096
+ this.cache = new WeakMap();
18097
+ }
18098
+ /**
18099
+ * @internal
18100
+ */
18101
+ bind(source) {
18102
+ const subscriber = this.cache.get(source)
18103
+ || new ThemeStyleSheetBehaviorSubscription(this.theme, this.styles, source);
18104
+ // Currently subscriber from cache may have gone through unbind
18105
+ // but still be in cache so always resubscribe
18106
+ // See: https://github.com/microsoft/fast/issues/3246#issuecomment-1030424876
18107
+ theme.subscribe(subscriber, source);
18108
+ subscriber.handleChange();
18109
+ this.cache.set(source, subscriber);
18110
+ }
18111
+ /**
18112
+ * @internal
18113
+ */
18114
+ unbind(source) {
18115
+ const subscriber = this.cache.get(source);
18116
+ if (subscriber) {
18117
+ theme.unsubscribe(subscriber);
18118
+ }
18119
+ // Currently does not evict subscriber from cache
18120
+ // See: https://github.com/microsoft/fast/issues/3246#issuecomment-1030424876
18121
+ }
18122
+ }
18123
+ /**
18124
+ * Behavior to conditionally apply theme-based stylesheets. To determine which to apply,
18125
+ * the behavior will use the nearest ThemeProvider's 'theme' design system value.
18126
+ *
18127
+ * @public
18128
+ * @example
18129
+ * ```ts
18130
+ * css`
18131
+ * // ...
18132
+ * `.withBehaviors(
18133
+ * themeBehavior(Theme.light, css` ... `),
18134
+ * // Apply style for both dark and color theme
18135
+ * themeBehavior([Theme.dark, Theme.color], css` ... `)
18136
+ * )
18137
+ * ```
18138
+ */
18139
+ const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
18140
+
18141
+ const styles$B = css `
18142
+ ${display('flex')}
18065
18143
 
18066
18144
  :host {
18067
- box-sizing: border-box;
18068
- font: ${linkFont};
18069
- --ni-private-breadcrumb-link-font-color: ${linkFontColor};
18070
- --ni-private-breadcrumb-link-active-font-color: ${linkActiveFontColor};
18145
+ font: ${bodyFont};
18146
+ font-size: 12.8px;
18147
+ align-items: top;
18148
+ overflow: hidden;
18149
+ color: ${White};
18150
+ ${iconColor.cssCustomProperty}: ${hexToRgbaCssColor(White, 0.6)};
18071
18151
  }
18072
18152
 
18073
- :host([appearance='prominent']) {
18074
- --ni-private-breadcrumb-link-font-color: ${linkProminentFontColor};
18075
- --ni-private-breadcrumb-link-active-font-color: ${linkActiveProminentFontColor};
18153
+ :host(:not([open])) {
18154
+ display: none;
18076
18155
  }
18077
18156
 
18078
- .list {
18157
+ .container {
18079
18158
  display: flex;
18080
- flex-wrap: wrap;
18159
+ width: 100%;
18081
18160
  }
18082
18161
 
18083
- ::slotted(*:first-child) {
18084
- padding-left: 0px;
18162
+ .icon {
18163
+ width: 48px;
18164
+ display: flex;
18165
+ justify-content: center;
18166
+ margin-top: 8px;
18167
+ flex: 0 0 auto;
18085
18168
  }
18086
18169
 
18087
- ::slotted(*:not([href]):last-child) {
18088
- font: ${bodyEmphasizedFont};
18170
+ .text {
18171
+ display: inline;
18172
+ margin-top: 7px;
18173
+ margin-bottom: 7px;
18174
+ }
18175
+
18176
+ slot[name='title'] {
18177
+ display: inline;
18178
+ font-weight: bold;
18179
+ padding-right: 8px;
18180
+ white-space: nowrap;
18089
18181
  }
18182
+
18183
+ :host([title-hidden]) slot[name='title'] {
18184
+ ${
18185
+ /**
18186
+ * Hide content visually while keeping it screen reader-accessible.
18187
+ * Source: https://webaim.org/techniques/css/invisiblecontent/#techniques
18188
+ * See discussion here: https://github.com/microsoft/fast/issues/5740#issuecomment-1068195035
18189
+ */
18190
+ ''}
18191
+ display: inline-block;
18192
+ height: 1px;
18193
+ width: 1px;
18194
+ position: absolute;
18195
+ margin: -1px;
18196
+ clip: rect(1px, 1px, 1px, 1px);
18197
+ clip-path: inset(50%);
18198
+ overflow: hidden;
18199
+ padding: 0;
18200
+ }
18201
+
18202
+ .controls {
18203
+ height: ${controlHeight};
18204
+ margin-left: auto;
18205
+ display: flex;
18206
+ align-items: center;
18207
+ justify-content: center;
18208
+ align-self: flex-start;
18209
+ }
18210
+
18211
+ slot[name='action'] {
18212
+ display: flex;
18213
+ align-content: center;
18214
+ margin-left: ${standardPadding};
18215
+ white-space: nowrap;
18216
+ }
18217
+
18218
+ slot[name='action']::slotted(nimble-anchor) {
18219
+ ${linkFontColor.cssCustomProperty}: ${White};
18220
+ ${linkDisabledFontColor.cssCustomProperty}: ${White};
18221
+ ${linkActiveFontColor.cssCustomProperty}: ${hexToRgbaCssColor(White, 0.6)};
18222
+ font-size: 12.8px;
18223
+ }
18224
+
18225
+ slot[name='action']::slotted(nimble-button) {
18226
+ ${controlHeight.cssCustomProperty}: ${controlSlimHeight};
18227
+ ${buttonLabelFontColor.cssCustomProperty}: ${White};
18228
+ ${fillSelectedColor.cssCustomProperty}: ${hexToRgbaCssColor(White, 0.2)};
18229
+ ${borderHoverColor.cssCustomProperty}: ${White};
18230
+ }
18231
+
18232
+ slot[name='action']::slotted(nimble-button[appearance='outline']) {
18233
+ ${actionRgbPartialColor.cssCustomProperty}: ${White}
18234
+ }
18235
+
18236
+ .dismiss {
18237
+ width: 48px;
18238
+ display: flex;
18239
+ justify-content: center;
18240
+ }
18241
+
18242
+ .dismiss nimble-button {
18243
+ ${controlHeight.cssCustomProperty}: 16px;
18244
+ ${iconSize.cssCustomProperty}: 14px;
18245
+ ${buttonLabelFontColor.cssCustomProperty}: ${White};
18246
+ ${borderHoverColor.cssCustomProperty}: transparent;
18247
+ ${fillSelectedColor.cssCustomProperty}: ${hexToRgbaCssColor(White, 0.2)};
18248
+ }
18249
+
18250
+ .dismiss nimble-button:focus-within {
18251
+ outline: 2px solid ${White};
18252
+ }
18253
+
18254
+ .dismiss nimble-button:hover {
18255
+ background: ${hexToRgbaCssColor(White, 0.2)};
18256
+ }
18257
+ `.withBehaviors(themeBehavior(Theme.light, css `
18258
+ :host {
18259
+ background: ${Black75};
18260
+ }
18261
+
18262
+ :host([severity='error']) {
18263
+ background: ${Fail100LightUi};
18264
+ }
18265
+
18266
+ :host([severity='warning']) {
18267
+ background: ${Warning100LightUi};
18268
+ }
18269
+
18270
+ :host([severity='information']) {
18271
+ background: ${Information100LightUi};
18272
+ }
18273
+ `), themeBehavior(Theme.dark, css `
18274
+ :host {
18275
+ background: ${Black75};
18276
+ }
18277
+
18278
+ :host([severity='error']) {
18279
+ background: ${BannerFail100DarkUi};
18280
+ }
18281
+
18282
+ :host([severity='warning']) {
18283
+ background: ${Warning100DarkUi};
18284
+ }
18285
+
18286
+ :host([severity='information']) {
18287
+ background: ${Information100DarkUi};
18288
+ }
18289
+ `), themeBehavior(Theme.color, css `
18290
+ :host {
18291
+ background: ${applicationBackgroundColor};
18292
+ }
18293
+
18294
+ .container {
18295
+ background: ${hexToRgbaCssColor(White, 0.3)};
18296
+ }
18297
+ `));
18298
+
18299
+ const styles$A = css `
18300
+ ${styles$H}
18301
+ ${buttonAppearanceVariantStyles}
18090
18302
  `;
18091
18303
 
18092
18304
  /**
18093
- * A nimble-styled breadcrumb
18305
+ * A nimble-styled HTML button
18094
18306
  */
18095
- class Breadcrumb extends Breadcrumb$1 {
18307
+ class Button extends Button$1 {
18308
+ constructor() {
18309
+ super(...arguments);
18310
+ /**
18311
+ * @public
18312
+ * @remarks
18313
+ * HTML Attribute: appearance
18314
+ */
18315
+ this.appearance = ButtonAppearance.outline;
18316
+ /**
18317
+ * @public
18318
+ * @remarks
18319
+ * HTML Attribute: content-hidden
18320
+ */
18321
+ this.contentHidden = false;
18322
+ }
18096
18323
  }
18097
18324
  __decorate$1([
18098
18325
  attr
18099
- ], Breadcrumb.prototype, "appearance", void 0);
18100
- const nimbleBreadcrumb = Breadcrumb.compose({
18101
- baseName: 'breadcrumb',
18102
- baseClass: Breadcrumb$1,
18103
- template: breadcrumbTemplate,
18104
- styles: styles$A
18326
+ ], Button.prototype, "appearance", void 0);
18327
+ __decorate$1([
18328
+ attr({ attribute: 'appearance-variant' })
18329
+ ], Button.prototype, "appearanceVariant", void 0);
18330
+ __decorate$1([
18331
+ attr({ attribute: 'content-hidden', mode: 'boolean' })
18332
+ ], Button.prototype, "contentHidden", void 0);
18333
+ /**
18334
+ * A function that returns a nimble-button registration for configuring the component with a DesignSystem.
18335
+ * Implements {@link @microsoft/fast-foundation#buttonTemplate}
18336
+ *
18337
+ * @public
18338
+ * @remarks
18339
+ * Generates HTML Element: \<nimble-button\>
18340
+ *
18341
+ */
18342
+ const nimbleButton = Button.compose({
18343
+ baseName: 'button',
18344
+ baseClass: Button$1,
18345
+ template: buttonTemplate,
18346
+ styles: styles$A,
18347
+ shadowOptions: {
18348
+ delegatesFocus: true
18349
+ }
18105
18350
  });
18106
- DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBreadcrumb());
18351
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleButton());
18107
18352
 
18108
18353
  /* 🤖 this file was generated by svg-to-ts */
18109
18354
  const add16X16 = {
@@ -18719,7 +18964,294 @@
18719
18964
  data: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path class="cls-1" d="M8.033 14.026 4.9 10.866 6.277 9.53l1.744 1.81 4.562-4.507 1.307 1.363Zm1.155-10.68-1.321-1.32-2.312 2.311-2.311-2.311-1.321 1.32 2.311 2.312L1.923 7.97l1.32 1.32 2.312-2.31 2.312 2.31 1.32-1.32-2.31-2.312Z"/></svg>`
18720
18965
  };
18721
18966
 
18722
- const styles$z = css `
18967
+ const template$f = html `
18968
+ <template>
18969
+ <div class="icon" :innerHTML=${x => x.icon.data}></div>
18970
+ </template
18971
+ `;
18972
+
18973
+ const styles$z = css `
18974
+ ${display('inline-flex')}
18975
+
18976
+ :host {
18977
+ align-items: center;
18978
+ user-select: none;
18979
+ width: ${iconSize};
18980
+ height: ${iconSize};
18981
+ }
18982
+
18983
+ .icon {
18984
+ width: 100%;
18985
+ height: 100%;
18986
+ }
18987
+
18988
+ :host([severity='error']) {
18989
+ ${iconColor.cssCustomProperty}: ${failColor};
18990
+ }
18991
+
18992
+ :host([severity='warning']) {
18993
+ ${iconColor.cssCustomProperty}: ${warningColor};
18994
+ }
18995
+
18996
+ :host([severity='success']) {
18997
+ ${iconColor.cssCustomProperty}: ${passColor};
18998
+ }
18999
+
19000
+ :host([severity='information']) {
19001
+ ${iconColor.cssCustomProperty}: ${informationColor};
19002
+ }
19003
+
19004
+ .icon svg {
19005
+ fill: ${iconColor};
19006
+ width: 100%;
19007
+ height: 100%;
19008
+ }
19009
+ `;
19010
+
19011
+ /**
19012
+ * The base class for icon components
19013
+ */
19014
+ class Icon extends FoundationElement {
19015
+ constructor(/** @internal */ icon) {
19016
+ super();
19017
+ this.icon = icon;
19018
+ }
19019
+ }
19020
+ __decorate$1([
19021
+ attr
19022
+ ], Icon.prototype, "severity", void 0);
19023
+ const registerIcon = (baseName, iconClass) => {
19024
+ const composedIcon = iconClass.compose({
19025
+ baseName,
19026
+ template: template$f,
19027
+ styles: styles$z,
19028
+ baseClass: iconClass
19029
+ });
19030
+ DesignSystem.getOrCreate().withPrefix('nimble').register(composedIcon());
19031
+ };
19032
+
19033
+ // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19034
+ /**
19035
+ * The icon component for the 'exclamationMark' icon
19036
+ */
19037
+ class IconExclamationMark extends Icon {
19038
+ constructor() {
19039
+ super(exclamationMark16X16);
19040
+ }
19041
+ }
19042
+ registerIcon('icon-exclamation-mark', IconExclamationMark);
19043
+
19044
+ // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19045
+ /**
19046
+ * The icon component for the 'info' icon
19047
+ */
19048
+ class IconInfo extends Icon {
19049
+ constructor() {
19050
+ super(info16X16);
19051
+ }
19052
+ }
19053
+ registerIcon('icon-info', IconInfo);
19054
+
19055
+ // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19056
+ /**
19057
+ * The icon component for the 'triangleFilled' icon
19058
+ */
19059
+ class IconTriangleFilled extends Icon {
19060
+ constructor() {
19061
+ super(triangleFilled16X16);
19062
+ }
19063
+ }
19064
+ registerIcon('icon-triangle-filled', IconTriangleFilled);
19065
+
19066
+ // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19067
+ /**
19068
+ * The icon component for the 'xmark' icon
19069
+ */
19070
+ class IconXmark extends Icon {
19071
+ constructor() {
19072
+ super(xmark16X16);
19073
+ }
19074
+ }
19075
+ registerIcon('icon-xmark', IconXmark);
19076
+
19077
+ /**
19078
+ * Severities of banners.
19079
+ * @public
19080
+ */
19081
+ const BannerSeverity = {
19082
+ default: undefined,
19083
+ error: 'error',
19084
+ warning: 'warning',
19085
+ information: 'information'
19086
+ };
19087
+
19088
+ // prettier-ignore
19089
+ const template$e = html `
19090
+ <div class="container"
19091
+ role="status"
19092
+ aria-atomic="${x => x.ariaAtomic}"
19093
+ aria-busy="${x => x.ariaBusy}"
19094
+ aria-controls="${x => x.ariaControls}"
19095
+ aria-current="${x => x.ariaCurrent}"
19096
+ aria-describedby="${x => x.ariaDescribedby}"
19097
+ aria-details="${x => x.ariaDetails}"
19098
+ aria-disabled="${x => x.ariaDisabled}"
19099
+ aria-errormessage="${x => x.ariaErrormessage}"
19100
+ aria-expanded="${x => x.ariaExpanded}"
19101
+ aria-flowto="${x => x.ariaFlowto}"
19102
+ aria-haspopup="${x => x.ariaHaspopup}"
19103
+ aria-hidden="${x => x.ariaHidden}"
19104
+ aria-invalid="${x => x.ariaInvalid}"
19105
+ aria-keyshortcuts="${x => x.ariaKeyshortcuts}"
19106
+ aria-label="${x => x.ariaLabel}"
19107
+ aria-labelledby="titleSlot"
19108
+ aria-live="${x => x.ariaLive}"
19109
+ aria-owns="${x => x.ariaOwns}"
19110
+ aria-relevant="${x => x.ariaRelevant}"
19111
+ aria-roledescription="${x => x.ariaRoledescription}"
19112
+ >
19113
+ <div class="icon">
19114
+ ${when(x => x.severity === BannerSeverity.error, html `
19115
+ <${DesignSystem.tagFor(IconExclamationMark)}></${DesignSystem.tagFor(IconExclamationMark)}>
19116
+ `)}
19117
+ ${when(x => x.severity === BannerSeverity.warning, html `
19118
+ <${DesignSystem.tagFor(IconTriangleFilled)}></${DesignSystem.tagFor(IconTriangleFilled)}>
19119
+ `)}
19120
+ ${when(x => x.severity === BannerSeverity.information, html `
19121
+ <${DesignSystem.tagFor(IconInfo)}></${DesignSystem.tagFor(IconInfo)}>
19122
+ `)}
19123
+ </div>
19124
+ <div class="text">
19125
+ <slot name="title" id="titleSlot"></slot>
19126
+ <slot></slot>
19127
+ </div>
19128
+ <div class="controls">
19129
+ <slot name="action"></slot>
19130
+ <div class="dismiss">
19131
+ ${when(x => !x.preventDismiss, html `
19132
+ <${DesignSystem.tagFor(Button)} appearance="ghost" content-hidden @click="${x => x.dismissBanner()}">
19133
+ <${DesignSystem.tagFor(IconXmark)} slot="start"></${DesignSystem.tagFor(IconXmark)}>
19134
+ ${x => x.dismissButtonLabel ?? 'Close'}
19135
+ </${DesignSystem.tagFor(Button)}>
19136
+ `)}
19137
+ </div>
19138
+ </div>
19139
+ </div>
19140
+ `;
19141
+
19142
+ /**
19143
+ * A nimble-styled notification banner for persistent messages.
19144
+ */
19145
+ class Banner extends FoundationElement {
19146
+ constructor() {
19147
+ super(...arguments);
19148
+ /**
19149
+ * @public
19150
+ * @description
19151
+ * Whether the banner is visible or not
19152
+ */
19153
+ this.open = false;
19154
+ /**
19155
+ * @public
19156
+ * @description
19157
+ * Severity of the banner's message
19158
+ */
19159
+ this.severity = BannerSeverity.default;
19160
+ /**
19161
+ * @public
19162
+ * @description
19163
+ * Whether the banner title is hidden
19164
+ */
19165
+ this.titleHidden = false;
19166
+ /**
19167
+ * @public
19168
+ * @description
19169
+ * Hides the dismiss button
19170
+ */
19171
+ this.preventDismiss = false;
19172
+ }
19173
+ /**
19174
+ * @internal
19175
+ */
19176
+ openChanged() {
19177
+ this.$emit('toggle', { oldState: !this.open, newState: this.open });
19178
+ }
19179
+ /**
19180
+ * @internal
19181
+ */
19182
+ dismissBanner() {
19183
+ this.open = false;
19184
+ }
19185
+ }
19186
+ __decorate$1([
19187
+ attr({ mode: 'boolean' })
19188
+ ], Banner.prototype, "open", void 0);
19189
+ __decorate$1([
19190
+ attr()
19191
+ ], Banner.prototype, "severity", void 0);
19192
+ __decorate$1([
19193
+ attr({ attribute: 'title-hidden', mode: 'boolean' })
19194
+ ], Banner.prototype, "titleHidden", void 0);
19195
+ __decorate$1([
19196
+ attr({ attribute: 'prevent-dismiss', mode: 'boolean' })
19197
+ ], Banner.prototype, "preventDismiss", void 0);
19198
+ __decorate$1([
19199
+ attr({ attribute: 'dismiss-button-label' })
19200
+ ], Banner.prototype, "dismissButtonLabel", void 0);
19201
+ applyMixins(Banner, ARIAGlobalStatesAndProperties);
19202
+ const nimbleBanner = Banner.compose({
19203
+ baseName: 'banner',
19204
+ template: template$e,
19205
+ styles: styles$B
19206
+ });
19207
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBanner());
19208
+
19209
+ const styles$y = css `
19210
+ ${display('inline-block')}
19211
+
19212
+ :host {
19213
+ box-sizing: border-box;
19214
+ font: ${linkFont};
19215
+ --ni-private-breadcrumb-link-font-color: ${linkFontColor};
19216
+ --ni-private-breadcrumb-link-active-font-color: ${linkActiveFontColor};
19217
+ }
19218
+
19219
+ :host([appearance='prominent']) {
19220
+ --ni-private-breadcrumb-link-font-color: ${linkProminentFontColor};
19221
+ --ni-private-breadcrumb-link-active-font-color: ${linkActiveProminentFontColor};
19222
+ }
19223
+
19224
+ .list {
19225
+ display: flex;
19226
+ flex-wrap: wrap;
19227
+ }
19228
+
19229
+ ::slotted(*:first-child) {
19230
+ padding-left: 0px;
19231
+ }
19232
+
19233
+ ::slotted(*:not([href]):last-child) {
19234
+ font: ${bodyEmphasizedFont};
19235
+ }
19236
+ `;
19237
+
19238
+ /**
19239
+ * A nimble-styled breadcrumb
19240
+ */
19241
+ class Breadcrumb extends Breadcrumb$1 {
19242
+ }
19243
+ __decorate$1([
19244
+ attr
19245
+ ], Breadcrumb.prototype, "appearance", void 0);
19246
+ const nimbleBreadcrumb = Breadcrumb.compose({
19247
+ baseName: 'breadcrumb',
19248
+ baseClass: Breadcrumb$1,
19249
+ template: breadcrumbTemplate,
19250
+ styles: styles$y
19251
+ });
19252
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBreadcrumb());
19253
+
19254
+ const styles$x = css `
18723
19255
  ${display('inline-flex')}
18724
19256
 
18725
19257
  :host {
@@ -18795,141 +19327,14 @@
18795
19327
  baseName: 'breadcrumb-item',
18796
19328
  baseClass: BreadcrumbItem$1,
18797
19329
  template: breadcrumbItemTemplate,
18798
- styles: styles$z,
19330
+ styles: styles$x,
18799
19331
  separator: forwardSlash16X16.data
18800
19332
  });
18801
19333
  DesignSystem.getOrCreate()
18802
19334
  .withPrefix('nimble')
18803
19335
  .register(nimbleBreadcrumbItem());
18804
19336
 
18805
- const styles$y = css `
18806
- ${styles$G}
18807
- ${buttonAppearanceVariantStyles}
18808
- `;
18809
-
18810
- /**
18811
- * A nimble-styled HTML button
18812
- */
18813
- class Button extends Button$1 {
18814
- constructor() {
18815
- super(...arguments);
18816
- /**
18817
- * @public
18818
- * @remarks
18819
- * HTML Attribute: appearance
18820
- */
18821
- this.appearance = ButtonAppearance.outline;
18822
- /**
18823
- * @public
18824
- * @remarks
18825
- * HTML Attribute: content-hidden
18826
- */
18827
- this.contentHidden = false;
18828
- }
18829
- }
18830
- __decorate$1([
18831
- attr
18832
- ], Button.prototype, "appearance", void 0);
18833
- __decorate$1([
18834
- attr({ attribute: 'appearance-variant' })
18835
- ], Button.prototype, "appearanceVariant", void 0);
18836
- __decorate$1([
18837
- attr({ attribute: 'content-hidden', mode: 'boolean' })
18838
- ], Button.prototype, "contentHidden", void 0);
18839
- /**
18840
- * A function that returns a nimble-button registration for configuring the component with a DesignSystem.
18841
- * Implements {@link @microsoft/fast-foundation#buttonTemplate}
18842
- *
18843
- * @public
18844
- * @remarks
18845
- * Generates HTML Element: \<nimble-button\>
18846
- *
18847
- */
18848
- const nimbleButton = Button.compose({
18849
- baseName: 'button',
18850
- baseClass: Button$1,
18851
- template: buttonTemplate,
18852
- styles: styles$y,
18853
- shadowOptions: {
18854
- delegatesFocus: true
18855
- }
18856
- });
18857
- DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleButton());
18858
-
18859
- /**
18860
- * Subscription for {@link ThemeStyleSheetBehavior}
18861
- */
18862
- class ThemeStyleSheetBehaviorSubscription {
18863
- constructor(value, styles, source) {
18864
- this.value = value;
18865
- this.styles = styles;
18866
- this.source = source;
18867
- }
18868
- handleChange() {
18869
- const theme$1 = theme.getValueFor(this.source);
18870
- if (Array.isArray(this.value)
18871
- ? this.value.includes(theme$1)
18872
- : this.value === theme$1) {
18873
- this.source.$fastController.addStyles(this.styles);
18874
- }
18875
- else {
18876
- this.source.$fastController.removeStyles(this.styles);
18877
- }
18878
- }
18879
- }
18880
- /**
18881
- * Behavior to conditionally apply theme-based stylesheets.
18882
- */
18883
- class ThemeStyleSheetBehavior {
18884
- constructor(theme, styles) {
18885
- this.theme = theme;
18886
- this.styles = styles;
18887
- this.cache = new WeakMap();
18888
- }
18889
- /**
18890
- * @internal
18891
- */
18892
- bind(source) {
18893
- const subscriber = this.cache.get(source)
18894
- || new ThemeStyleSheetBehaviorSubscription(this.theme, this.styles, source);
18895
- // Currently subscriber from cache may have gone through unbind
18896
- // but still be in cache so always resubscribe
18897
- // See: https://github.com/microsoft/fast/issues/3246#issuecomment-1030424876
18898
- theme.subscribe(subscriber, source);
18899
- subscriber.handleChange();
18900
- this.cache.set(source, subscriber);
18901
- }
18902
- /**
18903
- * @internal
18904
- */
18905
- unbind(source) {
18906
- const subscriber = this.cache.get(source);
18907
- if (subscriber) {
18908
- theme.unsubscribe(subscriber);
18909
- }
18910
- // Currently does not evict subscriber from cache
18911
- // See: https://github.com/microsoft/fast/issues/3246#issuecomment-1030424876
18912
- }
18913
- }
18914
- /**
18915
- * Behavior to conditionally apply theme-based stylesheets. To determine which to apply,
18916
- * the behavior will use the nearest ThemeProvider's 'theme' design system value.
18917
- *
18918
- * @public
18919
- * @example
18920
- * ```ts
18921
- * css`
18922
- * // ...
18923
- * `.withBehaviors(
18924
- * themeBehavior(Theme.light, css` ... `),
18925
- * // Apply style for both dark and color theme
18926
- * themeBehavior([Theme.dark, Theme.color], css` ... `)
18927
- * )
18928
- * ```
18929
- */
18930
- const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
18931
-
18932
- const styles$x = css `
19337
+ const styles$w = css `
18933
19338
  ${display('inline-flex')}
18934
19339
 
18935
19340
  :host {
@@ -19088,14 +19493,14 @@
19088
19493
  const nimbleCardButton = CardButton.compose({
19089
19494
  baseName: 'card-button',
19090
19495
  template: buttonTemplate,
19091
- styles: styles$x,
19496
+ styles: styles$w,
19092
19497
  shadowOptions: {
19093
19498
  delegatesFocus: true
19094
19499
  }
19095
19500
  });
19096
19501
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCardButton());
19097
19502
 
19098
- const styles$w = css `
19503
+ const styles$v = css `
19099
19504
  ${display('inline-flex')}
19100
19505
 
19101
19506
  :host {
@@ -19213,14 +19618,14 @@
19213
19618
  baseName: 'checkbox',
19214
19619
  baseClass: Checkbox$1,
19215
19620
  template: checkboxTemplate,
19216
- styles: styles$w,
19621
+ styles: styles$v,
19217
19622
  checkedIndicator: check16X16.data,
19218
19623
  indeterminateIndicator: minus16X16.data
19219
19624
  });
19220
19625
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCheckbox());
19221
19626
 
19222
- const styles$v = css `
19223
- ${styles$G}
19627
+ const styles$u = css `
19628
+ ${styles$H}
19224
19629
 
19225
19630
  .control[aria-pressed='true'] {
19226
19631
  background-color: ${fillSelectedColor};
@@ -19246,7 +19651,7 @@
19246
19651
  }
19247
19652
  `;
19248
19653
 
19249
- const template$e = (context, definition) => html `
19654
+ const template$d = (context, definition) => html `
19250
19655
  <div
19251
19656
  role="button"
19252
19657
  part="control"
@@ -19321,8 +19726,8 @@
19321
19726
  applyMixins(ToggleButton, StartEnd, DelegatesARIAButton);
19322
19727
  const nimbleToggleButton = ToggleButton.compose({
19323
19728
  baseName: 'toggle-button',
19324
- template: template$e,
19325
- styles: styles$v,
19729
+ template: template$d,
19730
+ styles: styles$u,
19326
19731
  shadowOptions: {
19327
19732
  delegatesFocus: true
19328
19733
  }
@@ -19335,72 +19740,6 @@
19335
19740
  </div>
19336
19741
  `;
19337
19742
 
19338
- const template$d = html `
19339
- <template>
19340
- <div class="icon" :innerHTML=${x => x.icon.data}></div>
19341
- </template
19342
- `;
19343
-
19344
- const styles$u = css `
19345
- ${display('inline-flex')}
19346
-
19347
- :host {
19348
- align-items: center;
19349
- user-select: none;
19350
- width: ${iconSize};
19351
- height: ${iconSize};
19352
- }
19353
-
19354
- .icon {
19355
- width: 100%;
19356
- height: 100%;
19357
- }
19358
-
19359
- :host([severity='error']) {
19360
- ${iconColor.cssCustomProperty}: ${failColor};
19361
- }
19362
-
19363
- :host([severity='warning']) {
19364
- ${iconColor.cssCustomProperty}: ${warningColor};
19365
- }
19366
-
19367
- :host([severity='success']) {
19368
- ${iconColor.cssCustomProperty}: ${passColor};
19369
- }
19370
-
19371
- :host([severity='information']) {
19372
- ${iconColor.cssCustomProperty}: ${informationColor};
19373
- }
19374
-
19375
- .icon svg {
19376
- fill: ${iconColor};
19377
- width: 100%;
19378
- height: 100%;
19379
- }
19380
- `;
19381
-
19382
- /**
19383
- * The base class for icon components
19384
- */
19385
- class Icon extends FoundationElement {
19386
- constructor(/** @internal */ icon) {
19387
- super();
19388
- this.icon = icon;
19389
- }
19390
- }
19391
- __decorate$1([
19392
- attr
19393
- ], Icon.prototype, "severity", void 0);
19394
- const registerIcon = (baseName, iconClass) => {
19395
- const composedIcon = iconClass.compose({
19396
- baseName,
19397
- template: template$d,
19398
- styles: styles$u,
19399
- baseClass: iconClass
19400
- });
19401
- DesignSystem.getOrCreate().withPrefix('nimble').register(composedIcon());
19402
- };
19403
-
19404
19743
  // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19405
19744
  /**
19406
19745
  * The icon component for the 'arrowExpanderDown' icon
@@ -19412,17 +19751,6 @@
19412
19751
  }
19413
19752
  registerIcon('icon-arrow-expander-down', IconArrowExpanderDown);
19414
19753
 
19415
- // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
19416
- /**
19417
- * The icon component for the 'exclamationMark' icon
19418
- */
19419
- class IconExclamationMark extends Icon {
19420
- constructor() {
19421
- super(exclamationMark16X16);
19422
- }
19423
- }
19424
- registerIcon('icon-exclamation-mark', IconExclamationMark);
19425
-
19426
19754
  const DropdownAppearance = {
19427
19755
  underline: 'underline',
19428
19756
  outline: 'outline',
@@ -21484,17 +21812,6 @@
21484
21812
  }
21485
21813
  registerIcon('icon-indeterminant-checkbox', IconIndeterminantCheckbox);
21486
21814
 
21487
- // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
21488
- /**
21489
- * The icon component for the 'info' icon
21490
- */
21491
- class IconInfo extends Icon {
21492
- constructor() {
21493
- super(info16X16);
21494
- }
21495
- }
21496
- registerIcon('icon-info', IconInfo);
21497
-
21498
21815
  // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
21499
21816
  /**
21500
21817
  * The icon component for the 'infoCircle' icon
@@ -22001,17 +22318,6 @@
22001
22318
  }
22002
22319
  registerIcon('icon-triangle', IconTriangle);
22003
22320
 
22004
- // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
22005
- /**
22006
- * The icon component for the 'triangleFilled' icon
22007
- */
22008
- class IconTriangleFilled extends Icon {
22009
- constructor() {
22010
- super(triangleFilled16X16);
22011
- }
22012
- }
22013
- registerIcon('icon-triangle-filled', IconTriangleFilled);
22014
-
22015
22321
  // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
22016
22322
  /**
22017
22323
  * The icon component for the 'trueFalseRectangle' icon
@@ -22144,17 +22450,6 @@
22144
22450
  }
22145
22451
  registerIcon('icon-wrench-hammer', IconWrenchHammer);
22146
22452
 
22147
- // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
22148
- /**
22149
- * The icon component for the 'xmark' icon
22150
- */
22151
- class IconXmark extends Icon {
22152
- constructor() {
22153
- super(xmark16X16);
22154
- }
22155
- }
22156
- registerIcon('icon-xmark', IconXmark);
22157
-
22158
22453
  // AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
22159
22454
  /**
22160
22455
  * The icon component for the 'xmarkCheck' icon
@@ -23596,7 +23891,7 @@
23596
23891
  baseName: 'tab',
23597
23892
  baseClass: Tab$1,
23598
23893
  template: tabTemplate,
23599
- styles: styles$E
23894
+ styles: styles$F
23600
23895
  });
23601
23896
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTab());
23602
23897