@descope/web-components-ui 1.0.244 → 1.0.245

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.esm.js CHANGED
@@ -10,6 +10,7 @@ import '@vaadin/combo-box';
10
10
  import '@vaadin/grid';
11
11
  import { GridSortColumn } from '@vaadin/grid/vaadin-grid-sort-column';
12
12
  import { GridSelectionColumn } from '@vaadin/grid/vaadin-grid-selection-column';
13
+ import '@vaadin/multi-select-combo-box';
13
14
  import merge from 'lodash.merge';
14
15
  import set from 'lodash.set';
15
16
  import Color from 'color';
@@ -7202,2425 +7203,2427 @@ const GridClass = compose(
7202
7203
 
7203
7204
  customElements.define(componentName$5, GridClass);
7204
7205
 
7205
- const componentName$4 = getComponentName('badge');
7206
+ const componentName$4 = getComponentName('multi-select-combo-box');
7206
7207
 
7207
- class RawBadge extends createBaseClass({ componentName: componentName$4, baseSelector: ':host > div' }) {
7208
- constructor() {
7209
- super();
7208
+ const MultiSelectComboBoxMixin = (superclass) =>
7209
+ class MultiSelectComboBoxMixinClass extends superclass {
7210
+ // eslint-disable-next-line class-methods-use-this
7211
+ #renderItem = ({ displayName, value, label }) => {
7212
+ return `<span data-name="${label}" data-id="${value}">${displayName || label}</span>`;
7213
+ };
7210
7214
 
7211
- this.attachShadow({ mode: 'open' }).innerHTML = `
7212
- <style>
7213
- :host {
7214
- display: inline-flex;
7215
- }
7216
- :host > div {
7217
- width: 100%;
7215
+ #data;
7216
+
7217
+ get defaultValues() {
7218
+ const defaultValuesAttr = this.getAttribute('default-values');
7219
+ if (defaultValuesAttr) {
7220
+ try {
7221
+ const defaultValues = JSON.parse(defaultValuesAttr);
7222
+ if (this.isValidDataType(defaultValues)) {
7223
+ return defaultValues;
7224
+ }
7225
+ } catch (e) {
7226
+ // eslint-disable-next-line no-console
7227
+ console.error('could not parse data string from attribute "default-values" -', e.message);
7228
+ }
7218
7229
  }
7219
- </style>
7220
- <div>
7221
- <slot></slot>
7222
- </div>
7223
- `;
7224
- }
7225
- }
7230
+ return [];
7231
+ }
7226
7232
 
7227
- const BadgeClass = compose(
7228
- createStyleMixin({
7229
- mappings: {
7230
- hostWidth: [{ selector: () => ':host', property: 'width' }],
7231
- hostDirection: { property: 'direction' },
7233
+ get renderItem() {
7234
+ return this.#renderItem;
7235
+ }
7232
7236
 
7233
- fontFamily: {},
7234
- fontSize: {},
7235
- fontWeight: {},
7236
- textTransform: {},
7237
- verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],
7238
- horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],
7237
+ set renderItem(renderFn) {
7238
+ this.#renderItem = renderFn;
7239
+ this.renderItems();
7240
+ }
7239
7241
 
7240
- borderWidth: {},
7241
- borderStyle: {},
7242
- borderColor: {},
7243
- borderRadius: {},
7242
+ get data() {
7243
+ if (this.#data) return this.#data;
7244
7244
 
7245
- backgroundColor: {},
7245
+ const dataAttr = this.getAttribute('data');
7246
7246
 
7247
- textColor: { property: 'color' },
7248
- textAlign: {},
7249
- },
7250
- }),
7251
- draggableMixin,
7252
- componentNameValidationMixin
7253
- )(RawBadge);
7247
+ if (dataAttr) {
7248
+ try {
7249
+ const data = JSON.parse(dataAttr);
7250
+ if (this.isValidDataType(data)) {
7251
+ return data;
7252
+ }
7253
+ } catch (e) {
7254
+ // eslint-disable-next-line no-console
7255
+ console.error('could not parse data string from attribute "data" -', e.message);
7256
+ }
7257
+ }
7254
7258
 
7255
- customElements.define(componentName$4, BadgeClass);
7259
+ return [];
7260
+ }
7256
7261
 
7257
- const getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);
7262
+ set data(data) {
7263
+ if (this.isValidDataType(data)) {
7264
+ this.#data = data;
7265
+ this.renderItems();
7266
+ }
7267
+ }
7258
7268
 
7259
- const transformTheme = (theme, path, getTransformation) => {
7260
- return Object.entries(theme).reduce((acc, [key, val]) => {
7261
- if (val?.constructor !== Object) {
7262
- return merge(acc, getTransformation(path.concat(key), val));
7269
+ get allowCustomValue() {
7270
+ return this.getAttribute('allow-custom-value') === 'true';
7263
7271
  }
7264
- return merge(acc, transformTheme(val, [...path, key], getTransformation));
7265
- }, {});
7266
- };
7267
7272
 
7268
- const stringifyArray = (strArr) =>
7269
- strArr.map((str) => (str.includes(' ') ? `"${str}"` : str)).join(', ');
7273
+ get minItemsSelection() {
7274
+ return parseInt(this.getAttribute('min-items-selection'), 10) || 0;
7275
+ }
7270
7276
 
7271
- const getCssVarValue = (val) => {
7272
- switch (true) {
7273
- case Array.isArray(val):
7274
- return stringifyArray(val);
7275
- case isUrl(val):
7276
- return `url(${val})`;
7277
- default:
7278
- return val;
7279
- }
7280
- };
7277
+ get maxItemsSelection() {
7278
+ return parseInt(this.getAttribute('max-items-selection'), 10) || 0;
7279
+ }
7281
7280
 
7282
- const themeToCSSVarsObj = (theme) =>
7283
- transformTheme(theme, [], (path, val) => ({
7284
- [getVarName(path)]: getCssVarValue(val),
7285
- }));
7281
+ // eslint-disable-next-line class-methods-use-this
7282
+ isValidDataType(data) {
7283
+ const isValid = Array.isArray(data);
7284
+ if (!isValid) {
7285
+ // eslint-disable-next-line no-console
7286
+ console.error('data and default-values must be an array, received:', data);
7287
+ }
7286
7288
 
7287
- const getThemeRefs = (theme, prefix) =>
7288
- transformTheme(theme, [], (path) =>
7289
- set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`)
7290
- );
7289
+ return isValid;
7290
+ }
7291
7291
 
7292
- const getThemeVars = (theme, prefix) =>
7293
- transformTheme(theme, [], (path) => set({}, path, getVarName(prefix ? [prefix, ...path] : path)));
7292
+ getItemsTemplate() {
7293
+ return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');
7294
+ }
7294
7295
 
7295
- const globalsThemeToStyle = (theme, themeName = '') => {
7296
- const style = Object.entries(themeToCSSVarsObj(theme)).reduce(
7297
- (acc, entry) => `${acc}${entry.join(':')};\n`,
7298
- ''
7299
- );
7296
+ renderItems() {
7297
+ const template = this.getItemsTemplate();
7298
+ if (template) this.innerHTML = template;
7299
+ }
7300
7300
 
7301
- if (!themeName) return style;
7301
+ handleSelectedItems() {
7302
+ const currentSelected =
7303
+ this.baseElement.selectedItems?.map((item) => item.getAttribute('data-id')) || [];
7302
7304
 
7303
- return `*[data-theme="${themeName}"] {${style}}`;
7304
- };
7305
+ this.baseElement.selectedItems = [];
7305
7306
 
7306
- const componentsThemeToStyleObj = (componentsTheme) =>
7307
- transformTheme(componentsTheme, [], (path, val) => {
7308
- const [component, ...restPath] = path;
7309
- const property = restPath.pop();
7310
- const componentName = getComponentName(component);
7307
+ // if previously selected item ID exists in current children, set it as selected
7308
+ if (currentSelected.length > 0) {
7309
+ this.value = currentSelected;
7310
+ }
7311
7311
 
7312
- if (property === 'undefined') {
7313
- // eslint-disable-next-line no-console
7314
- console.warn(componentName, `theme value: "${val}" is mapped to an invalid property`);
7312
+ // otherwise, if default value is specified, set default value as selected item
7313
+ if (this.value.length === 0) {
7314
+ this.setDefaultValues();
7315
+ }
7315
7316
  }
7316
7317
 
7317
- // we need a support for portal components theme (e.g. overlay)
7318
- // this allows us to generate those themes under different sections
7319
- // if the theme has root level attribute that starts with #
7320
- // we are generating a new theme
7321
- let themeName = BASE_THEME_SECTION;
7322
-
7323
- if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {
7324
- themeName = restPath.shift();
7318
+ // eslint-disable-next-line class-methods-use-this
7319
+ customValueTransformFn(val) {
7320
+ return val;
7325
7321
  }
7326
7322
 
7327
- // do not start with underscore -> key:value, must have 2 no underscore attrs in a row
7328
- // starts with underscore -> attribute selector
7329
- const attrsSelector = restPath.reduce((acc, section, idx) => {
7330
- if (section.startsWith('_')) return `${acc}[${kebabCase(section.replace(/^_/, ''))}="true"]`;
7331
-
7332
- const nextSection = restPath[idx + 1];
7323
+ // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the
7324
+ // field that it searches the value, and the finaly display value of the input.
7325
+ // We provide a custom transform function to override that behavior.
7326
+ setComboBoxDescriptor() {
7327
+ const valueDescriptor = Object.getOwnPropertyDescriptor(
7328
+ this.inputElement.constructor.prototype,
7329
+ 'value'
7330
+ );
7333
7331
 
7334
- if (typeof nextSection !== 'string' || nextSection.startsWith('_')) {
7335
- // eslint-disable-next-line no-console
7336
- console.error(
7337
- 'theme generator',
7338
- `your theme structure is invalid, attribute "${section}" is followed by "${nextSection}" which is not allowed`
7339
- );
7340
- return acc;
7341
- }
7332
+ const comboBox = this;
7342
7333
 
7343
- return `${acc}[${kebabCase(section)}="${restPath.splice(idx + 1, 1).join('')}"]`;
7344
- }, '');
7334
+ Object.defineProperties(this.inputElement, {
7335
+ value: {
7336
+ ...valueDescriptor,
7337
+ set(val) {
7338
+ const transformedValue = comboBox.customValueTransformFn(val) || '';
7345
7339
 
7346
- const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;
7340
+ if (transformedValue === this.value) {
7341
+ return;
7342
+ }
7347
7343
 
7348
- return {
7349
- [componentName]: {
7350
- [themeName]: {
7351
- [selector]: {
7352
- [property]: getCssVarValue(val),
7344
+ valueDescriptor.set.call(this, transformedValue);
7353
7345
  },
7354
7346
  },
7355
- },
7356
- };
7357
- });
7358
-
7359
- const componentsThemeToStyle = (componentsTheme) =>
7360
- Object.entries(componentsTheme).reduce(
7361
- (acc, [selector, vars]) =>
7362
- `${acc}${selector} { \n${Object.entries(vars)
7363
- .map(([key, val]) => `${key}: ${val}`)
7364
- .join(';\n')} \n}\n\n`,
7365
- ''
7366
- );
7347
+ });
7348
+ }
7367
7349
 
7368
- const createComponentsTheme = (componentsTheme) => {
7369
- const styleObj = componentsThemeToStyleObj(componentsTheme);
7350
+ // vaadin api is to set props on their combo box node,
7351
+ // in order to avoid it, we are passing the children of this component
7352
+ // to the items & renderer props, so it will be used as the combo box items
7353
+ #onChildrenChange() {
7354
+ const items = Array.from(this.children);
7370
7355
 
7371
- return Object.keys(styleObj).reduce((acc, componentName) => {
7372
- const componentThemes = styleObj[componentName];
7356
+ // we want the data-name attribute to be accessible as an object attribute
7357
+ if (items.length) {
7358
+ this.removeAttribute('has-no-options');
7373
7359
 
7374
- return Object.assign(acc, {
7375
- [componentName]: Object.keys(componentThemes).reduce(
7376
- (res, theme) =>
7377
- Object.assign(res, { [theme]: componentsThemeToStyle(componentThemes[theme]) }),
7378
- {}
7379
- ),
7380
- });
7381
- }, {});
7382
- };
7360
+ items.forEach((node) => {
7361
+ Object.defineProperty(node, 'data-name', {
7362
+ value: node.getAttribute('data-name'),
7363
+ configurable: true,
7364
+ writable: true,
7365
+ });
7366
+ Object.defineProperty(node, 'data-id', {
7367
+ value: node.getAttribute('data-id'),
7368
+ configurable: true,
7369
+ writable: true,
7370
+ });
7371
+ });
7383
7372
 
7384
- const themeToStyle = ({ globals, components }, themeName) => ({
7385
- globals: globalsThemeToStyle(globals, themeName),
7386
- components: createComponentsTheme(components),
7387
- });
7373
+ this.baseElement.items = items;
7388
7374
 
7389
- const useVar = (varName) => `var(${varName})`;
7375
+ setTimeout(() => {
7376
+ // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden
7377
+ this.handleSelectedItems();
7378
+ }, 0);
7379
+ } else {
7380
+ this.baseElement.items = [];
7381
+ this.setAttribute('has-no-options', '');
7382
+ }
7390
7383
 
7391
- const createHelperVars = (theme, prefix) => {
7392
- const res = transformTheme(theme, [], (path, value) => {
7393
- const modifiedPath = [...path];
7394
- const property = modifiedPath.splice(-1);
7395
- const varName = getCssVarName(prefix, property);
7384
+ // use vaadin combobox custom renderer to render options as HTML
7385
+ // and not via default renderer, which renders only the data-name's value
7386
+ // in its own HTML template
7387
+ this.baseElement.renderer = (root, combo, model) => {
7388
+ // eslint-disable-next-line no-param-reassign
7389
+ root.innerHTML = model.item.outerHTML;
7390
+ };
7391
+ }
7396
7392
 
7397
- const vars = { [property]: varName };
7398
- const useVars = { [property]: useVar(varName) };
7393
+ // the default vaadin behavior is to attach the overlay to the body when opened
7394
+ // we do not want that because it's difficult to style the overlay in this way
7395
+ // so we override it to open inside the shadow DOM
7396
+ #overrideOverlaySettings() {
7397
+ const overlay = this.baseElement.shadowRoot
7398
+ .querySelector('vaadin-multi-select-combo-box-internal')
7399
+ .shadowRoot.querySelector('vaadin-multi-select-combo-box-overlay');
7400
+ overlay._attachOverlay = () => {
7401
+ overlay.bringToFront();
7402
+ };
7403
+ overlay._detachOverlay = () => {};
7404
+ overlay._enterModalState = () => {};
7405
+ }
7399
7406
 
7400
- return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };
7401
- });
7407
+ #handleCustomValues() {
7408
+ if (this.allowCustomValue) {
7409
+ this.baseElement.addEventListener('custom-value-set', (e) => {
7410
+ const newItemHtml = this.#renderItem({
7411
+ label: e.detail,
7412
+ displayName: e.detail,
7413
+ value: e.detail,
7414
+ });
7415
+ this.innerHTML += newItemHtml;
7416
+ // The value needs to be set with a timeout because it needs to execute after
7417
+ // the custom value is added to items by the children change observer
7418
+ setTimeout(() => {
7419
+ this.value = [...this.value, e.detail];
7420
+ }, 0);
7421
+ });
7422
+ }
7423
+ }
7402
7424
 
7403
- return [res.theme, res.useVars, res.vars];
7404
- };
7425
+ setGetValidity() {
7426
+ // eslint-disable-next-line func-names
7427
+ this.getValidity = function () {
7428
+ if (this.isRequired && !this.value.length) {
7429
+ return {
7430
+ valueMissing: true,
7431
+ };
7432
+ }
7433
+ // If the field is not required, no minimum selection can be set
7434
+ if (
7435
+ this.isRequired &&
7436
+ this.minItemsSelection &&
7437
+ this.value.length < this.minItemsSelection
7438
+ ) {
7439
+ return {
7440
+ rangeUnderflow: true,
7441
+ };
7442
+ }
7443
+ if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {
7444
+ return {
7445
+ rangeOverflow: true,
7446
+ };
7447
+ }
7448
+ return {};
7449
+ };
7450
+ }
7405
7451
 
7406
- const genDark = (c, percentage = 0.5) => c.darken(percentage).hex();
7407
- const genLight = (c, percentage = 0.5) => c.lighten(percentage).hex();
7408
- const genContrast = (c, percentage = 0.9) => {
7409
- const isDark = c.isDark();
7410
- return c
7411
- .mix(Color(isDark ? 'white' : 'black'), percentage)
7412
- .saturate(1)
7413
- .hex();
7414
- };
7452
+ init() {
7453
+ super.init?.();
7415
7454
 
7416
- const genColor = (color) => {
7417
- const mainColor = new Color(color.main || color);
7455
+ this.setGetValidity();
7418
7456
 
7419
- return {
7420
- main: mainColor.hex(),
7421
- dark: color.dark || genDark(mainColor),
7422
- light: color.light || genLight(mainColor),
7423
- contrast: color.contrast || genContrast(mainColor),
7424
- };
7425
- };
7457
+ this.setComboBoxDescriptor();
7426
7458
 
7427
- const genColors = (colors) => {
7428
- return Object.keys(colors).reduce((acc, colorName) => {
7429
- const currentColor = colors[colorName];
7459
+ this.#overrideOverlaySettings();
7430
7460
 
7431
- return Object.assign(acc, {
7432
- [colorName]: genColor(currentColor),
7433
- });
7434
- }, {});
7435
- };
7461
+ this.#handleCustomValues();
7436
7462
 
7437
- const direction = 'ltr';
7463
+ this.renderItems();
7438
7464
 
7439
- const colors = genColors({
7440
- surface: {
7441
- main: 'lightgray',
7442
- light: '#fff',
7443
- dark: '#000',
7444
- },
7445
- primary: '#006af5',
7446
- secondary: '#7D14EB',
7447
- success: 'green',
7448
- error: '#e21d12',
7449
- });
7465
+ observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });
7450
7466
 
7451
- const fonts = {
7452
- font1: {
7453
- family: [
7454
- 'Roboto',
7455
- 'ui-sans-serif',
7456
- 'system-ui',
7457
- '-apple-system',
7458
- 'BlinkMacSystemFont',
7459
- 'Segoe UI',
7460
- 'Helvetica Neue',
7461
- 'Arial',
7462
- 'Noto Sans',
7463
- 'sans-serif',
7464
- 'Apple Color Emoji',
7465
- 'Segoe UI Emoji',
7466
- 'Segoe UI Symbol',
7467
- 'Noto Color Emoji',
7468
- ],
7469
- label: 'Roboto',
7470
- url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',
7471
- },
7472
- font2: {
7473
- family: [
7474
- 'ui-sans-serif',
7475
- 'system-ui',
7476
- '-apple-system',
7477
- 'BlinkMacSystemFont',
7478
- 'Segoe UI',
7479
- 'Roboto',
7480
- 'Helvetica Neue',
7481
- 'Arial',
7482
- 'Noto Sans',
7483
- 'sans-serif',
7484
- 'Apple Color Emoji',
7485
- 'Segoe UI Emoji',
7486
- 'Segoe UI Symbol',
7487
- 'Noto Color Emoji',
7488
- ],
7489
- label: 'Sans Serif',
7490
- },
7491
- };
7467
+ observeChildren(this, this.#onChildrenChange.bind(this));
7492
7468
 
7493
- const fontsRef = getThemeRefs({ fonts }).fonts;
7469
+ // Note: we need to forward the `placeholder` because the vaadin component observes it and
7470
+ // tries to override it, causing us to lose the user set placeholder.
7471
+ forwardAttrs(this, this.baseElement, { includeAttrs: ['placeholder'] });
7494
7472
 
7495
- const typography = {
7496
- h1: {
7497
- font: fontsRef.font1.family,
7498
- weight: '900',
7499
- size: '48px',
7500
- },
7501
- h2: {
7502
- font: fontsRef.font1.family,
7503
- weight: '800',
7504
- size: '38px',
7505
- },
7506
- h3: {
7507
- font: fontsRef.font1.family,
7508
- weight: '600',
7509
- size: '28px',
7510
- },
7511
- subtitle1: {
7512
- font: fontsRef.font2.family,
7513
- weight: '500',
7514
- size: '22px',
7515
- },
7516
- subtitle2: {
7517
- font: fontsRef.font2.family,
7518
- weight: '400',
7519
- size: '20px',
7520
- },
7521
- body1: {
7522
- font: fontsRef.font1.family,
7523
- weight: '400',
7524
- size: '16px',
7525
- },
7526
- body2: {
7527
- font: fontsRef.font1.family,
7528
- weight: '400',
7529
- size: '14px',
7530
- },
7531
- };
7473
+ this.setDefaultValues();
7474
+ }
7532
7475
 
7533
- const spacing = {
7534
- xs: '2px',
7535
- sm: '4px',
7536
- md: '8px',
7537
- lg: '16px',
7538
- xl: '32px',
7539
- };
7476
+ setDefaultValues() {
7477
+ this.value = this.defaultValues;
7478
+ }
7540
7479
 
7541
- const border = {
7542
- xs: '1px',
7543
- sm: '2px',
7544
- md: '3px',
7545
- lg: '4px',
7546
- xl: '5px',
7547
- };
7480
+ set value(vals) {
7481
+ if (vals && vals.length > 0) {
7482
+ const children = this.baseElement.items?.filter((item) => vals.includes(item['data-id']));
7548
7483
 
7549
- const radius = {
7550
- xs: '5px',
7551
- sm: '10px',
7552
- md: '15px',
7553
- lg: '20px',
7554
- xl: '25px',
7555
- '2xl': '30px',
7556
- '3xl': '35px',
7557
- };
7558
-
7559
- const shadow = {
7560
- wide: {
7561
- sm: '0 2px 3px -0.5px',
7562
- md: '0 4px 6px -1px',
7563
- lg: '0 10px 15px -3px',
7564
- xl: '0 20px 25px -5px',
7565
- '2xl': '0 25px 50px -12px',
7566
- },
7567
- narrow: {
7568
- sm: '0 1px 2px -1px',
7569
- md: '0 2px 4px -2px',
7570
- lg: '0 4px 6px -4px',
7571
- xl: '0 8px 10px -6px',
7572
- '2xl': '0 16px 16px -8px',
7573
- },
7574
- };
7575
-
7576
- const globals = {
7577
- colors,
7578
- typography,
7579
- spacing,
7580
- border,
7581
- radius,
7582
- shadow,
7583
- fonts,
7584
- direction,
7585
- };
7586
- const vars$w = getThemeVars(globals);
7587
-
7588
- const globalRefs$i = getThemeRefs(globals);
7589
- const compVars$4 = ButtonClass.cssVarList;
7590
-
7591
- const mode = {
7592
- primary: globalRefs$i.colors.primary,
7593
- secondary: globalRefs$i.colors.secondary,
7594
- success: globalRefs$i.colors.success,
7595
- error: globalRefs$i.colors.error,
7596
- surface: globalRefs$i.colors.surface,
7597
- };
7598
-
7599
- const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$E);
7600
-
7601
- const button = {
7602
- ...helperTheme$3,
7603
-
7604
- [compVars$4.fontFamily]: globalRefs$i.fonts.font1.family,
7605
-
7606
- [compVars$4.cursor]: 'pointer',
7607
- [compVars$4.hostHeight]: '3em',
7608
- [compVars$4.hostWidth]: 'auto',
7609
- [compVars$4.hostDirection]: globalRefs$i.direction,
7610
-
7611
- [compVars$4.borderRadius]: globalRefs$i.radius.sm,
7612
- [compVars$4.borderWidth]: globalRefs$i.border.xs,
7613
- [compVars$4.borderStyle]: 'solid',
7614
- [compVars$4.borderColor]: 'transparent',
7615
-
7616
- [compVars$4.labelSpacing]: '0.25em',
7617
-
7618
- [compVars$4.verticalPadding]: '1em',
7619
-
7620
- [compVars$4.outlineWidth]: globals.border.sm,
7621
- [compVars$4.outlineOffset]: '0px', // keep `px` unit for external calc
7622
- [compVars$4.outlineStyle]: 'solid',
7623
- [compVars$4.outlineColor]: 'transparent',
7624
-
7625
- size: {
7626
- xs: { [compVars$4.fontSize]: '12px' },
7627
- sm: { [compVars$4.fontSize]: '14px' },
7628
- md: { [compVars$4.fontSize]: '16px' },
7629
- lg: { [compVars$4.fontSize]: '18px' },
7630
- },
7484
+ if (children?.length > 0) {
7485
+ this.baseElement.selectedItems = children;
7486
+ }
7487
+ } else {
7488
+ this.baseElement.selectedItems = [];
7489
+ }
7490
+ }
7631
7491
 
7632
- _square: {
7633
- [compVars$4.hostHeight]: '3em',
7634
- [compVars$4.hostWidth]: '3em',
7635
- [compVars$4.verticalPadding]: '0',
7636
- },
7492
+ get value() {
7493
+ return this.baseElement.selectedItems.map((elem) => elem.getAttribute('data-id')) || [];
7494
+ }
7495
+ };
7637
7496
 
7638
- _fullWidth: {
7639
- [compVars$4.hostWidth]: '100%',
7497
+ const {
7498
+ host,
7499
+ inputField,
7500
+ inputElement,
7501
+ placeholder,
7502
+ toggle,
7503
+ label,
7504
+ requiredIndicator,
7505
+ helperText,
7506
+ errorMessage,
7507
+ chip,
7508
+ chipLabel,
7509
+ overflowChipFirstBorder,
7510
+ overflowChipSecondBorder,
7511
+ } = {
7512
+ host: { selector: () => ':host' },
7513
+ inputField: { selector: '::part(input-field)' },
7514
+ inputElement: { selector: 'input' },
7515
+ placeholder: { selector: '> input:placeholder-shown' },
7516
+ toggle: { selector: '::part(toggle-button)' },
7517
+ label: { selector: '::part(label)' },
7518
+ requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
7519
+ helperText: { selector: '::part(helper-text)' },
7520
+ errorMessage: { selector: '::part(error-message)' },
7521
+ chip: { selector: 'vaadin-multi-select-combo-box-chip' },
7522
+ chipLabel: { selector: 'vaadin-multi-select-combo-box-chip::part(label)' },
7523
+ overflowChipFirstBorder: {
7524
+ selector: "vaadin-multi-select-combo-box-chip[slot='overflow']::before",
7640
7525
  },
7641
-
7642
- _loading: {
7643
- [compVars$4.cursor]: 'wait',
7644
- [compVars$4.labelTextColor]: helperRefs$3.main,
7526
+ overflowChipSecondBorder: {
7527
+ selector: "vaadin-multi-select-combo-box-chip[slot='overflow']::after",
7645
7528
  },
7529
+ };
7646
7530
 
7647
- _disabled: {
7648
- [helperVars$3.main]: globalRefs$i.colors.surface.main,
7649
- [helperVars$3.dark]: globalRefs$i.colors.surface.dark,
7650
- [helperVars$3.light]: globalRefs$i.colors.surface.light,
7651
- [helperVars$3.contrast]: globalRefs$i.colors.surface.contrast,
7652
- },
7531
+ const MultiSelectComboBoxClass = compose(
7532
+ createStyleMixin({
7533
+ mappings: {
7534
+ hostWidth: { ...host, property: 'width' },
7535
+ hostDirection: { ...host, property: 'direction' },
7536
+ // we apply font-size also on the host so we can set its width with em
7537
+ fontSize: [{}, host],
7538
+ chipFontSize: { ...chipLabel, property: 'font-size' },
7539
+ fontFamily: [label, placeholder, inputField, helperText, errorMessage, chipLabel],
7540
+ labelTextColor: [
7541
+ { ...label, property: 'color' },
7542
+ { ...requiredIndicator, property: 'color' },
7543
+ ],
7544
+ errorMessageTextColor: { ...errorMessage, property: 'color' },
7545
+ inputHeight: { ...inputField, property: 'min-height' },
7546
+ inputBackgroundColor: { ...inputField, property: 'background-color' },
7547
+ inputBorderColor: { ...inputField, property: 'border-color' },
7548
+ inputBorderWidth: { ...inputField, property: 'border-width' },
7549
+ inputBorderStyle: { ...inputField, property: 'border-style' },
7550
+ inputBorderRadius: { ...inputField, property: 'border-radius' },
7551
+ labelRequiredIndicator: { ...requiredIndicator, property: 'content' },
7552
+ inputValueTextColor: { ...inputField, property: 'color' },
7553
+ inputPlaceholderTextColor: { ...placeholder, property: 'color' },
7554
+ inputDropdownButtonCursor: { ...toggle, property: 'cursor' },
7555
+ inputDropdownButtonColor: { ...toggle, property: 'color' },
7556
+ inputDropdownButtonSize: { ...toggle, property: 'font-size' },
7557
+ inputDropdownButtonOffset: [
7558
+ { ...toggle, property: 'margin-right' },
7559
+ { ...toggle, property: 'margin-left' },
7560
+ ],
7561
+ inputOutlineColor: { ...inputField, property: 'outline-color' },
7562
+ inputOutlineWidth: { ...inputField, property: 'outline-width' },
7563
+ inputOutlineStyle: { ...inputField, property: 'outline-style' },
7564
+ inputOutlineOffset: { ...inputField, property: 'outline-offset' },
7565
+ inputHorizontalPadding: [
7566
+ { ...inputElement, property: 'padding-left' },
7567
+ { ...inputElement, property: 'padding-right' },
7568
+ { ...inputField, property: 'padding-inline-start' },
7569
+ ],
7570
+ inputVerticalPadding: [
7571
+ { ...inputField, property: 'padding-top' },
7572
+ { ...inputField, property: 'padding-bottom' },
7573
+ ],
7574
+ chipTextColor: { ...chipLabel, property: 'color' },
7575
+ chipBackgroundColor: [
7576
+ { ...chip, property: 'background-color' },
7577
+ { ...overflowChipFirstBorder, property: 'border-color' },
7578
+ { ...overflowChipSecondBorder, property: 'border-color' },
7579
+ ],
7653
7580
 
7654
- variant: {
7655
- contained: {
7656
- [compVars$4.labelTextColor]: helperRefs$3.contrast,
7657
- [compVars$4.backgroundColor]: helperRefs$3.main,
7658
- _hover: {
7659
- [compVars$4.backgroundColor]: helperRefs$3.dark,
7660
- _loading: {
7661
- [compVars$4.backgroundColor]: helperRefs$3.main,
7662
- },
7581
+ // we need to use the variables from the portal mixin
7582
+ // so we need to use an arrow function on the selector
7583
+ // for that to work, because ComboBox is not available
7584
+ // at this time.
7585
+ overlayBackground: {
7586
+ property: () => MultiSelectComboBoxClass.cssVarList.overlay.backgroundColor,
7663
7587
  },
7664
- _active: {
7665
- [compVars$4.backgroundColor]: helperRefs$3.main,
7588
+ overlayBorder: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.border },
7589
+ overlayFontSize: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontSize },
7590
+ overlayFontFamily: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontFamily },
7591
+ overlayCursor: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.cursor },
7592
+ overlayItemBoxShadow: {
7593
+ property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemBoxShadow,
7666
7594
  },
7667
- },
7668
-
7669
- outline: {
7670
- [compVars$4.labelTextColor]: helperRefs$3.main,
7671
- [compVars$4.borderColor]: 'currentColor',
7672
- _hover: {
7673
- [compVars$4.labelTextColor]: helperRefs$3.dark,
7595
+ overlayItemPaddingInlineStart: {
7596
+ property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,
7674
7597
  },
7675
- _active: {
7676
- [compVars$4.labelTextColor]: helperRefs$3.main,
7598
+ overlayItemPaddingInlineEnd: {
7599
+ property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,
7677
7600
  },
7678
7601
  },
7679
-
7680
- link: {
7681
- [compVars$4.labelTextColor]: helperRefs$3.main,
7682
- _hover: {
7683
- [compVars$4.labelTextColor]: helperRefs$3.dark,
7684
- [compVars$4.labelTextDecoration]: 'underline',
7602
+ }),
7603
+ draggableMixin,
7604
+ portalMixin({
7605
+ name: 'overlay',
7606
+ selector: 'vaadin-multi-select-combo-box-internal',
7607
+ mappings: {
7608
+ backgroundColor: { selector: 'vaadin-multi-select-combo-box-scroller' },
7609
+ minHeight: { selector: 'vaadin-multi-select-combo-box-overlay' },
7610
+ margin: { selector: 'vaadin-multi-select-combo-box-overlay' },
7611
+ cursor: { selector: 'vaadin-multi-select-combo-box-item' },
7612
+ fontFamily: { selector: 'vaadin-multi-select-combo-box-item' },
7613
+ fontSize: { selector: 'vaadin-multi-select-combo-box-item' },
7614
+ itemBoxShadow: { selector: 'vaadin-multi-select-combo-box-item', property: 'box-shadow' },
7615
+ itemPaddingInlineStart: {
7616
+ selector: 'vaadin-multi-select-combo-box-item',
7617
+ property: 'padding-inline-start',
7685
7618
  },
7686
- _active: {
7687
- [compVars$4.labelTextColor]: helperRefs$3.dark,
7619
+ itemPaddingInlineEnd: {
7620
+ selector: 'vaadin-multi-select-combo-box-item',
7621
+ property: 'padding-inline-end',
7688
7622
  },
7689
7623
  },
7690
- },
7691
-
7692
- _focused: {
7693
- [compVars$4.outlineColor]: globalRefs$i.colors.surface.main,
7694
- },
7695
- };
7696
-
7697
- const vars$v = {
7698
- ...compVars$4,
7699
- ...helperVars$3,
7700
- };
7701
-
7702
- var button$1 = /*#__PURE__*/Object.freeze({
7703
- __proto__: null,
7704
- default: button,
7705
- vars: vars$v
7706
- });
7707
-
7708
- const componentName$3 = getComponentName('input-wrapper');
7709
- const globalRefs$h = getThemeRefs(globals);
7710
-
7711
- const [theme$1, refs, vars$u] = createHelperVars(
7712
- {
7713
- labelTextColor: globalRefs$h.colors.surface.contrast,
7714
- valueTextColor: globalRefs$h.colors.surface.contrast,
7715
- placeholderTextColor: globalRefs$h.colors.surface.main,
7716
- requiredIndicator: "'*'",
7717
- errorMessageTextColor: globalRefs$h.colors.error.main,
7718
-
7719
- borderWidth: globalRefs$h.border.xs,
7720
- borderRadius: globalRefs$h.radius.xs,
7721
- borderColor: 'transparent',
7722
-
7723
- outlineWidth: globalRefs$h.border.sm,
7724
- outlineStyle: 'solid',
7725
- outlineColor: 'transparent',
7726
- outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes
7727
-
7728
- minWidth: '10em',
7729
- toggleButtonSize: '1.5em',
7730
- inputHeight: '3em',
7731
- horizontalPadding: '0.5em',
7732
- verticalPadding: '0.5em',
7733
-
7734
- backgroundColor: globalRefs$h.colors.surface.light,
7735
-
7736
- fontFamily: globalRefs$h.fonts.font1.family,
7624
+ forward: {
7625
+ include: false,
7626
+ attributes: ['size'],
7627
+ },
7628
+ }),
7629
+ composedProxyInputMixin({ proxyProps: ['selectionStart'], inputEvent: 'selected-items-changed' }),
7630
+ componentNameValidationMixin,
7631
+ MultiSelectComboBoxMixin
7632
+ )(
7633
+ createProxy({
7634
+ slots: ['', 'prefix'],
7635
+ wrappedEleName: 'vaadin-multi-select-combo-box',
7636
+ style: () => `
7637
+ :host {
7638
+ display: inline-flex;
7639
+ box-sizing: border-box;
7640
+ -webkit-mask-image: none;
7641
+ }
7642
+ ${useHostExternalPadding(MultiSelectComboBoxClass.cssVarList)}
7643
+ ${resetInputReadonlyStyle('vaadin-multi-select-combo-box')}
7644
+ ${resetInputPlaceholder('vaadin-multi-select-combo-box')}
7645
+ ${resetInputCursor('vaadin-multi-select-combo-box')}
7737
7646
 
7738
- direction: globalRefs$h.direction,
7647
+ vaadin-multi-select-combo-box {
7648
+ padding: 0;
7649
+ width: 100%;
7650
+ }
7651
+ vaadin-multi-select-combo-box::before {
7652
+ height: initial;
7653
+ }
7654
+ vaadin-multi-select-combo-box [slot="input"] {
7655
+ -webkit-mask-image: none;
7656
+ min-height: 0;
7657
+ align-self: center;
7658
+ box-sizing: border-box;
7659
+ }
7739
7660
 
7740
- overlayOpacity: '0.3',
7661
+ ::part(input-field) {
7662
+ padding: 0;
7663
+ box-shadow: none;
7664
+ }
7665
+ ${resetInputLabelPosition('vaadin-multi-select-combo-box')}
7666
+ :host([has-label]) vaadin-multi-select-combo-box-chip::part(label) {
7667
+ display: block;
7668
+ }
7741
7669
 
7742
- size: {
7743
- xs: { fontSize: '12px', chipFontSize: '10px' },
7744
- sm: { fontSize: '14px', chipFontSize: '12px' },
7745
- md: { fontSize: '16px', chipFontSize: '14px' },
7746
- lg: { fontSize: '18px', chipFontSize: '16px' },
7747
- },
7670
+ vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::before,
7671
+ vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {
7672
+ left: -4px;
7673
+ right: -4px;
7674
+ border-left-width: 0;
7675
+ border-inline-start-style: solid;
7676
+ border-inline-start-width: 2px;
7677
+ }
7678
+ vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {
7679
+ left: -8px;
7680
+ right: -8px;
7681
+ }
7748
7682
 
7749
- _fullWidth: {
7750
- width: '100%',
7751
- },
7683
+ :host([has-no-options][allow-custom-value='true']) ::part(toggle-button) {
7684
+ display: none;
7685
+ }
7686
+ `,
7687
+ // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property
7688
+ // with the same name. Including it will cause Vaadin to calculate NaN size,
7689
+ // and reset items to an empty array, and opening the list box with no items
7690
+ // to display.
7691
+ // Note: we exclude `placeholder` because the vaadin component observes it and
7692
+ // tries to override it, causing us to lose the user set placeholder.
7693
+ excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder'],
7694
+ componentName: componentName$4,
7695
+ includeForwardProps: ['items', 'renderer', 'selectedItems'],
7696
+ })
7697
+ );
7752
7698
 
7753
- _focused: {
7754
- outlineColor: globalRefs$h.colors.surface.main,
7755
- _invalid: {
7756
- outlineColor: globalRefs$h.colors.error.main,
7757
- },
7758
- },
7699
+ customElements.define(componentName$4, MultiSelectComboBoxClass);
7759
7700
 
7760
- _bordered: {
7761
- outlineWidth: globalRefs$h.border.xs,
7762
- borderColor: globalRefs$h.colors.surface.main,
7763
- borderStyle: 'solid',
7764
- _invalid: {
7765
- borderColor: globalRefs$h.colors.error.main,
7766
- },
7767
- },
7701
+ const componentName$3 = getComponentName('badge');
7768
7702
 
7769
- _disabled: {
7770
- labelTextColor: globalRefs$h.colors.surface.main,
7771
- borderColor: globalRefs$h.colors.surface.main,
7772
- valueTextColor: globalRefs$h.colors.surface.dark,
7773
- placeholderTextColor: globalRefs$h.colors.surface.dark,
7774
- backgroundColor: globalRefs$h.colors.surface.main,
7775
- },
7776
- },
7777
- componentName$3
7778
- );
7703
+ class RawBadge extends createBaseClass({ componentName: componentName$3, baseSelector: ':host > div' }) {
7704
+ constructor() {
7705
+ super();
7779
7706
 
7780
- var inputWrapper = /*#__PURE__*/Object.freeze({
7781
- __proto__: null,
7782
- default: theme$1,
7783
- refs: refs,
7784
- vars: vars$u
7785
- });
7707
+ this.attachShadow({ mode: 'open' }).innerHTML = `
7708
+ <style>
7709
+ :host {
7710
+ display: inline-flex;
7711
+ }
7712
+ :host > div {
7713
+ width: 100%;
7714
+ }
7715
+ </style>
7716
+ <div>
7717
+ <slot></slot>
7718
+ </div>
7719
+ `;
7720
+ }
7721
+ }
7786
7722
 
7787
- const vars$t = TextFieldClass.cssVarList;
7723
+ const BadgeClass = compose(
7724
+ createStyleMixin({
7725
+ mappings: {
7726
+ hostWidth: [{ selector: () => ':host', property: 'width' }],
7727
+ hostDirection: { property: 'direction' },
7788
7728
 
7789
- const textField = {
7790
- [vars$t.hostWidth]: refs.width,
7791
- [vars$t.hostMinWidth]: refs.minWidth,
7792
- [vars$t.hostDirection]: refs.direction,
7793
- [vars$t.fontSize]: refs.fontSize,
7794
- [vars$t.fontFamily]: refs.fontFamily,
7795
- [vars$t.labelTextColor]: refs.labelTextColor,
7796
- [vars$t.labelRequiredIndicator]: refs.requiredIndicator,
7797
- [vars$t.errorMessageTextColor]: refs.errorMessageTextColor,
7798
- [vars$t.inputValueTextColor]: refs.valueTextColor,
7799
- [vars$t.inputPlaceholderColor]: refs.placeholderTextColor,
7800
- [vars$t.inputBorderWidth]: refs.borderWidth,
7801
- [vars$t.inputBorderStyle]: refs.borderStyle,
7802
- [vars$t.inputBorderColor]: refs.borderColor,
7803
- [vars$t.inputBorderRadius]: refs.borderRadius,
7804
- [vars$t.inputOutlineWidth]: refs.outlineWidth,
7805
- [vars$t.inputOutlineStyle]: refs.outlineStyle,
7806
- [vars$t.inputOutlineColor]: refs.outlineColor,
7807
- [vars$t.inputOutlineOffset]: refs.outlineOffset,
7808
- [vars$t.inputBackgroundColor]: refs.backgroundColor,
7809
- [vars$t.inputHeight]: refs.inputHeight,
7810
- [vars$t.inputHorizontalPadding]: refs.horizontalPadding,
7811
- };
7729
+ fontFamily: {},
7730
+ fontSize: {},
7731
+ fontWeight: {},
7732
+ textTransform: {},
7733
+ verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],
7734
+ horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],
7812
7735
 
7813
- var textField$1 = /*#__PURE__*/Object.freeze({
7814
- __proto__: null,
7815
- default: textField,
7816
- textField: textField,
7817
- vars: vars$t
7818
- });
7736
+ borderWidth: {},
7737
+ borderStyle: {},
7738
+ borderColor: {},
7739
+ borderRadius: {},
7819
7740
 
7820
- const globalRefs$g = getThemeRefs(globals);
7821
- const vars$s = PasswordClass.cssVarList;
7741
+ backgroundColor: {},
7822
7742
 
7823
- const password = {
7824
- [vars$s.hostWidth]: refs.width,
7825
- [vars$s.hostDirection]: refs.direction,
7826
- [vars$s.fontSize]: refs.fontSize,
7827
- [vars$s.fontFamily]: refs.fontFamily,
7828
- [vars$s.labelTextColor]: refs.labelTextColor,
7829
- [vars$s.errorMessageTextColor]: refs.errorMessageTextColor,
7830
- [vars$s.inputHorizontalPadding]: refs.horizontalPadding,
7831
- [vars$s.inputHeight]: refs.inputHeight,
7832
- [vars$s.inputBackgroundColor]: refs.backgroundColor,
7833
- [vars$s.labelRequiredIndicator]: refs.requiredIndicator,
7834
- [vars$s.inputValueTextColor]: refs.valueTextColor,
7835
- [vars$s.inputPlaceholderTextColor]: refs.placeholderTextColor,
7836
- [vars$s.inputBorderWidth]: refs.borderWidth,
7837
- [vars$s.inputBorderStyle]: refs.borderStyle,
7838
- [vars$s.inputBorderColor]: refs.borderColor,
7839
- [vars$s.inputBorderRadius]: refs.borderRadius,
7840
- [vars$s.inputOutlineWidth]: refs.outlineWidth,
7841
- [vars$s.inputOutlineStyle]: refs.outlineStyle,
7842
- [vars$s.inputOutlineColor]: refs.outlineColor,
7843
- [vars$s.inputOutlineOffset]: refs.outlineOffset,
7844
- [vars$s.revealButtonOffset]: globalRefs$g.spacing.md,
7845
- [vars$s.revealButtonSize]: refs.toggleButtonSize,
7846
- };
7743
+ textColor: { property: 'color' },
7744
+ textAlign: {},
7745
+ },
7746
+ }),
7747
+ draggableMixin,
7748
+ componentNameValidationMixin
7749
+ )(RawBadge);
7847
7750
 
7848
- var password$1 = /*#__PURE__*/Object.freeze({
7849
- __proto__: null,
7850
- default: password,
7851
- vars: vars$s
7852
- });
7751
+ customElements.define(componentName$3, BadgeClass);
7853
7752
 
7854
- const vars$r = NumberFieldClass.cssVarList;
7753
+ const getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);
7855
7754
 
7856
- const numberField = {
7857
- [vars$r.hostWidth]: refs.width,
7858
- [vars$r.hostMinWidth]: refs.minWidth,
7859
- [vars$r.hostDirection]: refs.direction,
7860
- [vars$r.fontSize]: refs.fontSize,
7861
- [vars$r.fontFamily]: refs.fontFamily,
7862
- [vars$r.labelTextColor]: refs.labelTextColor,
7863
- [vars$r.errorMessageTextColor]: refs.errorMessageTextColor,
7864
- [vars$r.inputValueTextColor]: refs.valueTextColor,
7865
- [vars$r.inputPlaceholderColor]: refs.placeholderTextColor,
7866
- [vars$r.inputBorderWidth]: refs.borderWidth,
7867
- [vars$r.inputBorderStyle]: refs.borderStyle,
7868
- [vars$r.inputBorderColor]: refs.borderColor,
7869
- [vars$r.inputBorderRadius]: refs.borderRadius,
7870
- [vars$r.inputOutlineWidth]: refs.outlineWidth,
7871
- [vars$r.inputOutlineStyle]: refs.outlineStyle,
7872
- [vars$r.inputOutlineColor]: refs.outlineColor,
7873
- [vars$r.inputOutlineOffset]: refs.outlineOffset,
7874
- [vars$r.inputBackgroundColor]: refs.backgroundColor,
7875
- [vars$r.labelRequiredIndicator]: refs.requiredIndicator,
7876
- [vars$r.inputHorizontalPadding]: refs.horizontalPadding,
7877
- [vars$r.inputHeight]: refs.inputHeight,
7755
+ const transformTheme = (theme, path, getTransformation) => {
7756
+ return Object.entries(theme).reduce((acc, [key, val]) => {
7757
+ if (val?.constructor !== Object) {
7758
+ return merge(acc, getTransformation(path.concat(key), val));
7759
+ }
7760
+ return merge(acc, transformTheme(val, [...path, key], getTransformation));
7761
+ }, {});
7878
7762
  };
7879
7763
 
7880
- var numberField$1 = /*#__PURE__*/Object.freeze({
7881
- __proto__: null,
7882
- default: numberField,
7883
- vars: vars$r
7884
- });
7885
-
7886
- const vars$q = EmailFieldClass.cssVarList;
7764
+ const stringifyArray = (strArr) =>
7765
+ strArr.map((str) => (str.includes(' ') ? `"${str}"` : str)).join(', ');
7887
7766
 
7888
- const emailField = {
7889
- [vars$q.hostWidth]: refs.width,
7890
- [vars$q.hostMinWidth]: refs.minWidth,
7891
- [vars$q.hostDirection]: refs.direction,
7892
- [vars$q.fontSize]: refs.fontSize,
7893
- [vars$q.fontFamily]: refs.fontFamily,
7894
- [vars$q.labelTextColor]: refs.labelTextColor,
7895
- [vars$q.errorMessageTextColor]: refs.errorMessageTextColor,
7896
- [vars$q.inputValueTextColor]: refs.valueTextColor,
7897
- [vars$q.labelRequiredIndicator]: refs.requiredIndicator,
7898
- [vars$q.inputPlaceholderColor]: refs.placeholderTextColor,
7899
- [vars$q.inputBorderWidth]: refs.borderWidth,
7900
- [vars$q.inputBorderStyle]: refs.borderStyle,
7901
- [vars$q.inputBorderColor]: refs.borderColor,
7902
- [vars$q.inputBorderRadius]: refs.borderRadius,
7903
- [vars$q.inputOutlineWidth]: refs.outlineWidth,
7904
- [vars$q.inputOutlineStyle]: refs.outlineStyle,
7905
- [vars$q.inputOutlineColor]: refs.outlineColor,
7906
- [vars$q.inputOutlineOffset]: refs.outlineOffset,
7907
- [vars$q.inputBackgroundColor]: refs.backgroundColor,
7908
- [vars$q.inputHorizontalPadding]: refs.horizontalPadding,
7909
- [vars$q.inputHeight]: refs.inputHeight,
7767
+ const getCssVarValue = (val) => {
7768
+ switch (true) {
7769
+ case Array.isArray(val):
7770
+ return stringifyArray(val);
7771
+ case isUrl(val):
7772
+ return `url(${val})`;
7773
+ default:
7774
+ return val;
7775
+ }
7910
7776
  };
7911
7777
 
7912
- var emailField$1 = /*#__PURE__*/Object.freeze({
7913
- __proto__: null,
7914
- default: emailField,
7915
- vars: vars$q
7916
- });
7917
-
7918
- const globalRefs$f = getThemeRefs(globals);
7919
- const vars$p = TextAreaClass.cssVarList;
7778
+ const themeToCSSVarsObj = (theme) =>
7779
+ transformTheme(theme, [], (path, val) => ({
7780
+ [getVarName(path)]: getCssVarValue(val),
7781
+ }));
7920
7782
 
7921
- const textArea = {
7922
- [vars$p.hostWidth]: refs.width,
7923
- [vars$p.hostMinWidth]: refs.minWidth,
7924
- [vars$p.hostDirection]: refs.direction,
7925
- [vars$p.fontSize]: refs.fontSize,
7926
- [vars$p.fontFamily]: refs.fontFamily,
7927
- [vars$p.labelTextColor]: refs.labelTextColor,
7928
- [vars$p.labelRequiredIndicator]: refs.requiredIndicator,
7929
- [vars$p.errorMessageTextColor]: refs.errorMessageTextColor,
7930
- [vars$p.inputBackgroundColor]: refs.backgroundColor,
7931
- [vars$p.inputValueTextColor]: refs.valueTextColor,
7932
- [vars$p.inputPlaceholderTextColor]: refs.placeholderTextColor,
7933
- [vars$p.inputBorderRadius]: refs.borderRadius,
7934
- [vars$p.inputBorderWidth]: refs.borderWidth,
7935
- [vars$p.inputBorderStyle]: refs.borderStyle,
7936
- [vars$p.inputBorderColor]: refs.borderColor,
7937
- [vars$p.inputOutlineWidth]: refs.outlineWidth,
7938
- [vars$p.inputOutlineStyle]: refs.outlineStyle,
7939
- [vars$p.inputOutlineColor]: refs.outlineColor,
7940
- [vars$p.inputOutlineOffset]: refs.outlineOffset,
7941
- [vars$p.inputResizeType]: 'vertical',
7942
- [vars$p.inputMinHeight]: '5em',
7783
+ const getThemeRefs = (theme, prefix) =>
7784
+ transformTheme(theme, [], (path) =>
7785
+ set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`)
7786
+ );
7943
7787
 
7944
- _disabled: {
7945
- [vars$p.inputBackgroundColor]: globalRefs$f.colors.surface.light,
7946
- },
7788
+ const getThemeVars = (theme, prefix) =>
7789
+ transformTheme(theme, [], (path) => set({}, path, getVarName(prefix ? [prefix, ...path] : path)));
7947
7790
 
7948
- _readonly: {
7949
- [vars$p.inputResizeType]: 'none',
7950
- },
7951
- };
7791
+ const globalsThemeToStyle = (theme, themeName = '') => {
7792
+ const style = Object.entries(themeToCSSVarsObj(theme)).reduce(
7793
+ (acc, entry) => `${acc}${entry.join(':')};\n`,
7794
+ ''
7795
+ );
7952
7796
 
7953
- var textArea$1 = /*#__PURE__*/Object.freeze({
7954
- __proto__: null,
7955
- default: textArea,
7956
- vars: vars$p
7957
- });
7797
+ if (!themeName) return style;
7958
7798
 
7959
- const vars$o = CheckboxClass.cssVarList;
7960
- const checkboxSize = '1.35em';
7799
+ return `*[data-theme="${themeName}"] {${style}}`;
7800
+ };
7961
7801
 
7962
- const checkbox = {
7963
- [vars$o.hostWidth]: refs.width,
7964
- [vars$o.hostDirection]: refs.direction,
7965
- [vars$o.fontSize]: refs.fontSize,
7966
- [vars$o.fontFamily]: refs.fontFamily,
7967
- [vars$o.labelTextColor]: refs.labelTextColor,
7968
- [vars$o.labelRequiredIndicator]: refs.requiredIndicator,
7969
- [vars$o.labelFontWeight]: '400',
7970
- [vars$o.labelLineHeight]: checkboxSize,
7971
- [vars$o.labelSpacing]: '1em',
7972
- [vars$o.errorMessageTextColor]: refs.errorMessageTextColor,
7973
- [vars$o.inputOutlineWidth]: refs.outlineWidth,
7974
- [vars$o.inputOutlineOffset]: refs.outlineOffset,
7975
- [vars$o.inputOutlineColor]: refs.outlineColor,
7976
- [vars$o.inputOutlineStyle]: refs.outlineStyle,
7977
- [vars$o.inputBorderRadius]: refs.borderRadius,
7978
- [vars$o.inputBorderColor]: refs.borderColor,
7979
- [vars$o.inputBorderWidth]: refs.borderWidth,
7980
- [vars$o.inputBorderStyle]: refs.borderStyle,
7981
- [vars$o.inputBackgroundColor]: refs.backgroundColor,
7982
- [vars$o.inputSize]: checkboxSize,
7802
+ const componentsThemeToStyleObj = (componentsTheme) =>
7803
+ transformTheme(componentsTheme, [], (path, val) => {
7804
+ const [component, ...restPath] = path;
7805
+ const property = restPath.pop();
7806
+ const componentName = getComponentName(component);
7983
7807
 
7984
- _checked: {
7985
- [vars$o.inputValueTextColor]: refs.valueTextColor,
7986
- },
7808
+ if (property === 'undefined') {
7809
+ // eslint-disable-next-line no-console
7810
+ console.warn(componentName, `theme value: "${val}" is mapped to an invalid property`);
7811
+ }
7987
7812
 
7988
- _disabled: {
7989
- [vars$o.labelTextColor]: refs.labelTextColor,
7990
- },
7991
- };
7813
+ // we need a support for portal components theme (e.g. overlay)
7814
+ // this allows us to generate those themes under different sections
7815
+ // if the theme has root level attribute that starts with #
7816
+ // we are generating a new theme
7817
+ let themeName = BASE_THEME_SECTION;
7992
7818
 
7993
- var checkbox$1 = /*#__PURE__*/Object.freeze({
7994
- __proto__: null,
7995
- default: checkbox,
7996
- vars: vars$o
7997
- });
7819
+ if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {
7820
+ themeName = restPath.shift();
7821
+ }
7998
7822
 
7999
- const knobMargin = '2px';
8000
- const checkboxHeight = '1.25em';
7823
+ // do not start with underscore -> key:value, must have 2 no underscore attrs in a row
7824
+ // starts with underscore -> attribute selector
7825
+ const attrsSelector = restPath.reduce((acc, section, idx) => {
7826
+ if (section.startsWith('_')) return `${acc}[${kebabCase(section.replace(/^_/, ''))}="true"]`;
8001
7827
 
8002
- const globalRefs$e = getThemeRefs(globals);
8003
- const vars$n = SwitchToggleClass.cssVarList;
7828
+ const nextSection = restPath[idx + 1];
8004
7829
 
8005
- const switchToggle = {
8006
- [vars$n.hostWidth]: refs.width,
8007
- [vars$n.hostDirection]: refs.direction,
8008
- [vars$n.fontSize]: refs.fontSize,
8009
- [vars$n.fontFamily]: refs.fontFamily,
7830
+ if (typeof nextSection !== 'string' || nextSection.startsWith('_')) {
7831
+ // eslint-disable-next-line no-console
7832
+ console.error(
7833
+ 'theme generator',
7834
+ `your theme structure is invalid, attribute "${section}" is followed by "${nextSection}" which is not allowed`
7835
+ );
7836
+ return acc;
7837
+ }
8010
7838
 
8011
- [vars$n.inputOutlineWidth]: refs.outlineWidth,
8012
- [vars$n.inputOutlineOffset]: refs.outlineOffset,
8013
- [vars$n.inputOutlineColor]: refs.outlineColor,
8014
- [vars$n.inputOutlineStyle]: refs.outlineStyle,
7839
+ return `${acc}[${kebabCase(section)}="${restPath.splice(idx + 1, 1).join('')}"]`;
7840
+ }, '');
8015
7841
 
8016
- [vars$n.trackBorderStyle]: refs.borderStyle,
8017
- [vars$n.trackBorderWidth]: refs.borderWidth, // var `trackBorderWidth` used outside the theme for `left` margin calculation
8018
- [vars$n.trackBorderColor]: refs.borderColor,
8019
- [vars$n.trackBackgroundColor]: 'none',
8020
- [vars$n.trackBorderRadius]: globalRefs$e.radius.md,
8021
- [vars$n.trackWidth]: '2.5em', // var `trackWidth` used outside the theme for `left` margin calculation
8022
- [vars$n.trackHeight]: checkboxHeight,
7842
+ const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;
8023
7843
 
8024
- [vars$n.knobSize]: `calc(1em - ${knobMargin})`,
8025
- [vars$n.knobRadius]: '50%',
8026
- [vars$n.knobTopOffset]: '1px',
8027
- [vars$n.knobLeftOffset]: knobMargin,
8028
- [vars$n.knobColor]: refs.valueTextColor,
8029
- [vars$n.knobTransitionDuration]: '0.3s',
7844
+ return {
7845
+ [componentName]: {
7846
+ [themeName]: {
7847
+ [selector]: {
7848
+ [property]: getCssVarValue(val),
7849
+ },
7850
+ },
7851
+ },
7852
+ };
7853
+ });
8030
7854
 
8031
- [vars$n.labelTextColor]: refs.labelTextColor,
8032
- [vars$n.labelFontWeight]: '400',
8033
- [vars$n.labelLineHeight]: '1.35em',
8034
- [vars$n.labelSpacing]: '1em',
8035
- [vars$n.labelRequiredIndicator]: refs.requiredIndicator,
8036
- [vars$n.errorMessageTextColor]: refs.errorMessageTextColor,
7855
+ const componentsThemeToStyle = (componentsTheme) =>
7856
+ Object.entries(componentsTheme).reduce(
7857
+ (acc, [selector, vars]) =>
7858
+ `${acc}${selector} { \n${Object.entries(vars)
7859
+ .map(([key, val]) => `${key}: ${val}`)
7860
+ .join(';\n')} \n}\n\n`,
7861
+ ''
7862
+ );
8037
7863
 
8038
- _checked: {
8039
- [vars$n.trackBorderColor]: refs.borderColor,
8040
- [vars$n.trackBackgroundColor]: refs.backgroundColor,
8041
- [vars$n.knobLeftOffset]: `calc(100% - var(${vars$n.knobSize}) - ${knobMargin})`,
8042
- [vars$n.knobColor]: refs.valueTextColor,
8043
- [vars$n.knobTextColor]: refs.valueTextColor,
8044
- },
7864
+ const createComponentsTheme = (componentsTheme) => {
7865
+ const styleObj = componentsThemeToStyleObj(componentsTheme);
8045
7866
 
8046
- _disabled: {
8047
- [vars$n.knobColor]: globalRefs$e.colors.surface.light,
8048
- [vars$n.trackBorderColor]: globalRefs$e.colors.surface.main,
8049
- [vars$n.trackBackgroundColor]: globalRefs$e.colors.surface.main,
8050
- [vars$n.labelTextColor]: refs.labelTextColor,
8051
- _checked: {
8052
- [vars$n.knobColor]: globalRefs$e.colors.surface.light,
8053
- [vars$n.trackBackgroundColor]: globalRefs$e.colors.surface.main,
8054
- },
8055
- },
7867
+ return Object.keys(styleObj).reduce((acc, componentName) => {
7868
+ const componentThemes = styleObj[componentName];
8056
7869
 
8057
- _invalid: {
8058
- [vars$n.trackBorderColor]: globalRefs$e.colors.error.main,
8059
- [vars$n.knobColor]: globalRefs$e.colors.error.main,
8060
- },
7870
+ return Object.assign(acc, {
7871
+ [componentName]: Object.keys(componentThemes).reduce(
7872
+ (res, theme) =>
7873
+ Object.assign(res, { [theme]: componentsThemeToStyle(componentThemes[theme]) }),
7874
+ {}
7875
+ ),
7876
+ });
7877
+ }, {});
8061
7878
  };
8062
7879
 
8063
- var switchToggle$1 = /*#__PURE__*/Object.freeze({
8064
- __proto__: null,
8065
- default: switchToggle,
8066
- vars: vars$n
7880
+ const themeToStyle = ({ globals, components }, themeName) => ({
7881
+ globals: globalsThemeToStyle(globals, themeName),
7882
+ components: createComponentsTheme(components),
8067
7883
  });
8068
7884
 
8069
- const globalRefs$d = getThemeRefs(globals);
7885
+ const useVar = (varName) => `var(${varName})`;
8070
7886
 
8071
- const compVars$3 = ContainerClass.cssVarList;
7887
+ const createHelperVars = (theme, prefix) => {
7888
+ const res = transformTheme(theme, [], (path, value) => {
7889
+ const modifiedPath = [...path];
7890
+ const property = modifiedPath.splice(-1);
7891
+ const varName = getCssVarName(prefix, property);
8072
7892
 
8073
- const verticalAlignment = {
8074
- start: { verticalAlignment: 'start' },
8075
- center: { verticalAlignment: 'safe center' },
8076
- end: { verticalAlignment: 'end' },
7893
+ const vars = { [property]: varName };
7894
+ const useVars = { [property]: useVar(varName) };
7895
+
7896
+ return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };
7897
+ });
7898
+
7899
+ return [res.theme, res.useVars, res.vars];
8077
7900
  };
8078
7901
 
8079
- const horizontalAlignment = {
8080
- start: { horizontalAlignment: 'start' },
8081
- center: { horizontalAlignment: 'safe center' },
8082
- end: { horizontalAlignment: 'end' },
7902
+ const genDark = (c, percentage = 0.5) => c.darken(percentage).hex();
7903
+ const genLight = (c, percentage = 0.5) => c.lighten(percentage).hex();
7904
+ const genContrast = (c, percentage = 0.9) => {
7905
+ const isDark = c.isDark();
7906
+ return c
7907
+ .mix(Color(isDark ? 'white' : 'black'), percentage)
7908
+ .saturate(1)
7909
+ .hex();
8083
7910
  };
8084
7911
 
8085
- const [helperTheme$2, helperRefs$2, helperVars$2] = createHelperVars(
8086
- {
8087
- verticalAlignment,
8088
- horizontalAlignment,
8089
- shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
8090
- },
8091
- componentName$y
8092
- );
7912
+ const genColor = (color) => {
7913
+ const mainColor = new Color(color.main || color);
8093
7914
 
8094
- const { shadowColor: shadowColor$1 } = helperRefs$2;
7915
+ return {
7916
+ main: mainColor.hex(),
7917
+ dark: color.dark || genDark(mainColor),
7918
+ light: color.light || genLight(mainColor),
7919
+ contrast: color.contrast || genContrast(mainColor),
7920
+ };
7921
+ };
8095
7922
 
8096
- const container = {
8097
- ...helperTheme$2,
7923
+ const genColors = (colors) => {
7924
+ return Object.keys(colors).reduce((acc, colorName) => {
7925
+ const currentColor = colors[colorName];
8098
7926
 
8099
- [compVars$3.hostWidth]: '100%',
8100
- [compVars$3.boxShadow]: 'none',
8101
- [compVars$3.backgroundColor]: globalRefs$d.colors.surface.light,
8102
- [compVars$3.color]: globalRefs$d.colors.surface.contrast,
8103
- [compVars$3.borderRadius]: '0px',
7927
+ return Object.assign(acc, {
7928
+ [colorName]: genColor(currentColor),
7929
+ });
7930
+ }, {});
7931
+ };
8104
7932
 
8105
- verticalPadding: {
8106
- sm: { [compVars$3.verticalPadding]: '5px' },
8107
- md: { [compVars$3.verticalPadding]: '10px' },
8108
- lg: { [compVars$3.verticalPadding]: '20px' },
7933
+ const direction = 'ltr';
7934
+
7935
+ const colors = genColors({
7936
+ surface: {
7937
+ main: 'lightgray',
7938
+ light: '#fff',
7939
+ dark: '#000',
7940
+ },
7941
+ primary: '#006af5',
7942
+ secondary: '#7D14EB',
7943
+ success: 'green',
7944
+ error: '#e21d12',
7945
+ });
7946
+
7947
+ const fonts = {
7948
+ font1: {
7949
+ family: [
7950
+ 'Roboto',
7951
+ 'ui-sans-serif',
7952
+ 'system-ui',
7953
+ '-apple-system',
7954
+ 'BlinkMacSystemFont',
7955
+ 'Segoe UI',
7956
+ 'Helvetica Neue',
7957
+ 'Arial',
7958
+ 'Noto Sans',
7959
+ 'sans-serif',
7960
+ 'Apple Color Emoji',
7961
+ 'Segoe UI Emoji',
7962
+ 'Segoe UI Symbol',
7963
+ 'Noto Color Emoji',
7964
+ ],
7965
+ label: 'Roboto',
7966
+ url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',
7967
+ },
7968
+ font2: {
7969
+ family: [
7970
+ 'ui-sans-serif',
7971
+ 'system-ui',
7972
+ '-apple-system',
7973
+ 'BlinkMacSystemFont',
7974
+ 'Segoe UI',
7975
+ 'Roboto',
7976
+ 'Helvetica Neue',
7977
+ 'Arial',
7978
+ 'Noto Sans',
7979
+ 'sans-serif',
7980
+ 'Apple Color Emoji',
7981
+ 'Segoe UI Emoji',
7982
+ 'Segoe UI Symbol',
7983
+ 'Noto Color Emoji',
7984
+ ],
7985
+ label: 'Sans Serif',
7986
+ },
7987
+ };
7988
+
7989
+ const fontsRef = getThemeRefs({ fonts }).fonts;
7990
+
7991
+ const typography = {
7992
+ h1: {
7993
+ font: fontsRef.font1.family,
7994
+ weight: '900',
7995
+ size: '48px',
7996
+ },
7997
+ h2: {
7998
+ font: fontsRef.font1.family,
7999
+ weight: '800',
8000
+ size: '38px',
8109
8001
  },
8110
-
8111
- horizontalPadding: {
8112
- sm: { [compVars$3.horizontalPadding]: '5px' },
8113
- md: { [compVars$3.horizontalPadding]: '10px' },
8114
- lg: { [compVars$3.horizontalPadding]: '20px' },
8002
+ h3: {
8003
+ font: fontsRef.font1.family,
8004
+ weight: '600',
8005
+ size: '28px',
8115
8006
  },
8116
-
8117
- direction: {
8118
- row: {
8119
- [compVars$3.flexDirection]: 'row',
8120
- [compVars$3.alignItems]: helperRefs$2.verticalAlignment,
8121
- [compVars$3.justifyContent]: helperRefs$2.horizontalAlignment,
8122
- [compVars$3.flexWrap]: 'wrap',
8123
- horizontalAlignment: {
8124
- spaceBetween: {
8125
- [helperVars$2.horizontalAlignment]: 'space-between',
8126
- },
8127
- },
8128
- },
8129
- column: {
8130
- [compVars$3.flexDirection]: 'column',
8131
- [compVars$3.alignItems]: helperRefs$2.horizontalAlignment,
8132
- [compVars$3.justifyContent]: helperRefs$2.verticalAlignment,
8133
- verticalAlignment: {
8134
- spaceBetween: {
8135
- [helperVars$2.verticalAlignment]: 'space-between',
8136
- },
8137
- },
8138
- },
8007
+ subtitle1: {
8008
+ font: fontsRef.font2.family,
8009
+ weight: '500',
8010
+ size: '22px',
8139
8011
  },
8140
-
8141
- spaceBetween: {
8142
- sm: { [compVars$3.gap]: '10px' },
8143
- md: { [compVars$3.gap]: '20px' },
8144
- lg: { [compVars$3.gap]: '30px' },
8012
+ subtitle2: {
8013
+ font: fontsRef.font2.family,
8014
+ weight: '400',
8015
+ size: '20px',
8145
8016
  },
8146
-
8147
- shadow: {
8148
- sm: {
8149
- [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.sm} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.sm} ${shadowColor$1}`,
8150
- },
8151
- md: {
8152
- [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.md} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.md} ${shadowColor$1}`,
8153
- },
8154
- lg: {
8155
- [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.lg} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.lg} ${shadowColor$1}`,
8156
- },
8157
- xl: {
8158
- [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.xl} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.xl} ${shadowColor$1}`,
8159
- },
8160
- '2xl': {
8161
- [helperVars$2.shadowColor]: '#00000050', // mimic daisyUI shadow settings
8162
- [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide['2xl']} ${shadowColor$1}`,
8163
- },
8017
+ body1: {
8018
+ font: fontsRef.font1.family,
8019
+ weight: '400',
8020
+ size: '16px',
8164
8021
  },
8165
-
8166
- borderRadius: {
8167
- sm: { [compVars$3.borderRadius]: globalRefs$d.radius.sm },
8168
- md: { [compVars$3.borderRadius]: globalRefs$d.radius.md },
8169
- lg: { [compVars$3.borderRadius]: globalRefs$d.radius.lg },
8170
- xl: { [compVars$3.borderRadius]: globalRefs$d.radius.xl },
8171
- '2xl': { [compVars$3.borderRadius]: globalRefs$d.radius['2xl'] },
8172
- '3xl': { [compVars$3.borderRadius]: globalRefs$d.radius['3xl'] },
8022
+ body2: {
8023
+ font: fontsRef.font1.family,
8024
+ weight: '400',
8025
+ size: '14px',
8173
8026
  },
8174
8027
  };
8175
8028
 
8176
- const vars$m = {
8177
- ...compVars$3,
8178
- ...helperVars$2,
8029
+ const spacing = {
8030
+ xs: '2px',
8031
+ sm: '4px',
8032
+ md: '8px',
8033
+ lg: '16px',
8034
+ xl: '32px',
8179
8035
  };
8180
8036
 
8181
- var container$1 = /*#__PURE__*/Object.freeze({
8182
- __proto__: null,
8183
- default: container,
8184
- vars: vars$m
8185
- });
8037
+ const border = {
8038
+ xs: '1px',
8039
+ sm: '2px',
8040
+ md: '3px',
8041
+ lg: '4px',
8042
+ xl: '5px',
8043
+ };
8186
8044
 
8187
- const vars$l = LogoClass.cssVarList;
8045
+ const radius = {
8046
+ xs: '5px',
8047
+ sm: '10px',
8048
+ md: '15px',
8049
+ lg: '20px',
8050
+ xl: '25px',
8051
+ '2xl': '30px',
8052
+ '3xl': '35px',
8053
+ };
8188
8054
 
8189
- const logo$1 = {
8190
- [vars$l.fallbackUrl]: 'url(https://imgs.descope.com/components/no-logo-placeholder.svg)',
8055
+ const shadow = {
8056
+ wide: {
8057
+ sm: '0 2px 3px -0.5px',
8058
+ md: '0 4px 6px -1px',
8059
+ lg: '0 10px 15px -3px',
8060
+ xl: '0 20px 25px -5px',
8061
+ '2xl': '0 25px 50px -12px',
8062
+ },
8063
+ narrow: {
8064
+ sm: '0 1px 2px -1px',
8065
+ md: '0 2px 4px -2px',
8066
+ lg: '0 4px 6px -4px',
8067
+ xl: '0 8px 10px -6px',
8068
+ '2xl': '0 16px 16px -8px',
8069
+ },
8191
8070
  };
8192
8071
 
8193
- var logo$2 = /*#__PURE__*/Object.freeze({
8194
- __proto__: null,
8195
- default: logo$1,
8196
- vars: vars$l
8197
- });
8072
+ const globals = {
8073
+ colors,
8074
+ typography,
8075
+ spacing,
8076
+ border,
8077
+ radius,
8078
+ shadow,
8079
+ fonts,
8080
+ direction,
8081
+ };
8082
+ const vars$w = getThemeVars(globals);
8198
8083
 
8199
- const vars$k = TotpImageClass.cssVarList;
8084
+ const globalRefs$i = getThemeRefs(globals);
8085
+ const compVars$4 = ButtonClass.cssVarList;
8200
8086
 
8201
- const logo = {
8202
- [vars$k.fallbackUrl]: 'url(https://imgs.descope.com/components/totp-placeholder.svg)',
8087
+ const mode = {
8088
+ primary: globalRefs$i.colors.primary,
8089
+ secondary: globalRefs$i.colors.secondary,
8090
+ success: globalRefs$i.colors.success,
8091
+ error: globalRefs$i.colors.error,
8092
+ surface: globalRefs$i.colors.surface,
8203
8093
  };
8204
8094
 
8205
- var totpImage = /*#__PURE__*/Object.freeze({
8206
- __proto__: null,
8207
- default: logo,
8208
- vars: vars$k
8209
- });
8095
+ const [helperTheme$3, helperRefs$3, helperVars$3] = createHelperVars({ mode }, componentName$E);
8210
8096
 
8211
- const globalRefs$c = getThemeRefs(globals);
8212
- const vars$j = TextClass.cssVarList;
8097
+ const button = {
8098
+ ...helperTheme$3,
8213
8099
 
8214
- const text = {
8215
- [vars$j.hostDirection]: globalRefs$c.direction,
8216
- [vars$j.textLineHeight]: '1.35em',
8217
- [vars$j.textAlign]: 'left',
8218
- [vars$j.textColor]: globalRefs$c.colors.surface.dark,
8219
- variant: {
8220
- h1: {
8221
- [vars$j.fontSize]: globalRefs$c.typography.h1.size,
8222
- [vars$j.fontWeight]: globalRefs$c.typography.h1.weight,
8223
- [vars$j.fontFamily]: globalRefs$c.typography.h1.font,
8224
- },
8225
- h2: {
8226
- [vars$j.fontSize]: globalRefs$c.typography.h2.size,
8227
- [vars$j.fontWeight]: globalRefs$c.typography.h2.weight,
8228
- [vars$j.fontFamily]: globalRefs$c.typography.h2.font,
8229
- },
8230
- h3: {
8231
- [vars$j.fontSize]: globalRefs$c.typography.h3.size,
8232
- [vars$j.fontWeight]: globalRefs$c.typography.h3.weight,
8233
- [vars$j.fontFamily]: globalRefs$c.typography.h3.font,
8234
- },
8235
- subtitle1: {
8236
- [vars$j.fontSize]: globalRefs$c.typography.subtitle1.size,
8237
- [vars$j.fontWeight]: globalRefs$c.typography.subtitle1.weight,
8238
- [vars$j.fontFamily]: globalRefs$c.typography.subtitle1.font,
8239
- },
8240
- subtitle2: {
8241
- [vars$j.fontSize]: globalRefs$c.typography.subtitle2.size,
8242
- [vars$j.fontWeight]: globalRefs$c.typography.subtitle2.weight,
8243
- [vars$j.fontFamily]: globalRefs$c.typography.subtitle2.font,
8244
- },
8245
- body1: {
8246
- [vars$j.fontSize]: globalRefs$c.typography.body1.size,
8247
- [vars$j.fontWeight]: globalRefs$c.typography.body1.weight,
8248
- [vars$j.fontFamily]: globalRefs$c.typography.body1.font,
8249
- },
8250
- body2: {
8251
- [vars$j.fontSize]: globalRefs$c.typography.body2.size,
8252
- [vars$j.fontWeight]: globalRefs$c.typography.body2.weight,
8253
- [vars$j.fontFamily]: globalRefs$c.typography.body2.font,
8254
- },
8255
- },
8100
+ [compVars$4.fontFamily]: globalRefs$i.fonts.font1.family,
8256
8101
 
8257
- mode: {
8258
- primary: {
8259
- [vars$j.textColor]: globalRefs$c.colors.primary.main,
8260
- },
8261
- secondary: {
8262
- [vars$j.textColor]: globalRefs$c.colors.secondary.main,
8263
- },
8264
- error: {
8265
- [vars$j.textColor]: globalRefs$c.colors.error.main,
8266
- },
8267
- success: {
8268
- [vars$j.textColor]: globalRefs$c.colors.success.main,
8269
- },
8270
- },
8102
+ [compVars$4.cursor]: 'pointer',
8103
+ [compVars$4.hostHeight]: '3em',
8104
+ [compVars$4.hostWidth]: 'auto',
8105
+ [compVars$4.hostDirection]: globalRefs$i.direction,
8271
8106
 
8272
- textAlign: {
8273
- right: { [vars$j.textAlign]: 'right' },
8274
- left: { [vars$j.textAlign]: 'left' },
8275
- center: { [vars$j.textAlign]: 'center' },
8107
+ [compVars$4.borderRadius]: globalRefs$i.radius.sm,
8108
+ [compVars$4.borderWidth]: globalRefs$i.border.xs,
8109
+ [compVars$4.borderStyle]: 'solid',
8110
+ [compVars$4.borderColor]: 'transparent',
8111
+
8112
+ [compVars$4.labelSpacing]: '0.25em',
8113
+
8114
+ [compVars$4.verticalPadding]: '1em',
8115
+
8116
+ [compVars$4.outlineWidth]: globals.border.sm,
8117
+ [compVars$4.outlineOffset]: '0px', // keep `px` unit for external calc
8118
+ [compVars$4.outlineStyle]: 'solid',
8119
+ [compVars$4.outlineColor]: 'transparent',
8120
+
8121
+ size: {
8122
+ xs: { [compVars$4.fontSize]: '12px' },
8123
+ sm: { [compVars$4.fontSize]: '14px' },
8124
+ md: { [compVars$4.fontSize]: '16px' },
8125
+ lg: { [compVars$4.fontSize]: '18px' },
8276
8126
  },
8277
8127
 
8278
- _fullWidth: {
8279
- [vars$j.hostWidth]: '100%',
8128
+ _square: {
8129
+ [compVars$4.hostHeight]: '3em',
8130
+ [compVars$4.hostWidth]: '3em',
8131
+ [compVars$4.verticalPadding]: '0',
8280
8132
  },
8281
8133
 
8282
- _italic: {
8283
- [vars$j.fontStyle]: 'italic',
8134
+ _fullWidth: {
8135
+ [compVars$4.hostWidth]: '100%',
8284
8136
  },
8285
8137
 
8286
- _uppercase: {
8287
- [vars$j.textTransform]: 'uppercase',
8138
+ _loading: {
8139
+ [compVars$4.cursor]: 'wait',
8140
+ [compVars$4.labelTextColor]: helperRefs$3.main,
8288
8141
  },
8289
8142
 
8290
- _lowercase: {
8291
- [vars$j.textTransform]: 'lowercase',
8143
+ _disabled: {
8144
+ [helperVars$3.main]: globalRefs$i.colors.surface.main,
8145
+ [helperVars$3.dark]: globalRefs$i.colors.surface.dark,
8146
+ [helperVars$3.light]: globalRefs$i.colors.surface.light,
8147
+ [helperVars$3.contrast]: globalRefs$i.colors.surface.contrast,
8292
8148
  },
8293
- };
8294
-
8295
- var text$1 = /*#__PURE__*/Object.freeze({
8296
- __proto__: null,
8297
- default: text,
8298
- vars: vars$j
8299
- });
8300
8149
 
8301
- const globalRefs$b = getThemeRefs(globals);
8302
- const vars$i = LinkClass.cssVarList;
8303
-
8304
- const link = {
8305
- [vars$i.hostDirection]: globalRefs$b.direction,
8306
- [vars$i.cursor]: 'pointer',
8150
+ variant: {
8151
+ contained: {
8152
+ [compVars$4.labelTextColor]: helperRefs$3.contrast,
8153
+ [compVars$4.backgroundColor]: helperRefs$3.main,
8154
+ _hover: {
8155
+ [compVars$4.backgroundColor]: helperRefs$3.dark,
8156
+ _loading: {
8157
+ [compVars$4.backgroundColor]: helperRefs$3.main,
8158
+ },
8159
+ },
8160
+ _active: {
8161
+ [compVars$4.backgroundColor]: helperRefs$3.main,
8162
+ },
8163
+ },
8307
8164
 
8308
- [vars$i.textColor]: globalRefs$b.colors.primary.main,
8165
+ outline: {
8166
+ [compVars$4.labelTextColor]: helperRefs$3.main,
8167
+ [compVars$4.borderColor]: 'currentColor',
8168
+ _hover: {
8169
+ [compVars$4.labelTextColor]: helperRefs$3.dark,
8170
+ },
8171
+ _active: {
8172
+ [compVars$4.labelTextColor]: helperRefs$3.main,
8173
+ },
8174
+ },
8309
8175
 
8310
- textAlign: {
8311
- right: { [vars$i.textAlign]: 'right' },
8312
- left: { [vars$i.textAlign]: 'left' },
8313
- center: { [vars$i.textAlign]: 'center' },
8176
+ link: {
8177
+ [compVars$4.labelTextColor]: helperRefs$3.main,
8178
+ _hover: {
8179
+ [compVars$4.labelTextColor]: helperRefs$3.dark,
8180
+ [compVars$4.labelTextDecoration]: 'underline',
8181
+ },
8182
+ _active: {
8183
+ [compVars$4.labelTextColor]: helperRefs$3.dark,
8184
+ },
8185
+ },
8314
8186
  },
8315
8187
 
8316
- _fullWidth: {
8317
- [vars$i.hostWidth]: '100%',
8188
+ _focused: {
8189
+ [compVars$4.outlineColor]: globalRefs$i.colors.surface.main,
8318
8190
  },
8191
+ };
8319
8192
 
8320
- mode: {
8321
- primary: {
8322
- [vars$i.textColor]: globalRefs$b.colors.primary.main,
8323
- },
8324
- secondary: {
8325
- [vars$i.textColor]: globalRefs$b.colors.secondary.main,
8326
- },
8327
- error: {
8328
- [vars$i.textColor]: globalRefs$b.colors.error.main,
8329
- },
8330
- success: {
8331
- [vars$i.textColor]: globalRefs$b.colors.success.main,
8332
- },
8333
- },
8193
+ const vars$v = {
8194
+ ...compVars$4,
8195
+ ...helperVars$3,
8334
8196
  };
8335
8197
 
8336
- var link$1 = /*#__PURE__*/Object.freeze({
8198
+ var button$1 = /*#__PURE__*/Object.freeze({
8337
8199
  __proto__: null,
8338
- default: link,
8339
- vars: vars$i
8200
+ default: button,
8201
+ vars: vars$v
8340
8202
  });
8341
8203
 
8342
- const globalRefs$a = getThemeRefs(globals);
8343
- const compVars$2 = DividerClass.cssVarList;
8204
+ const componentName$2 = getComponentName('input-wrapper');
8205
+ const globalRefs$h = getThemeRefs(globals);
8344
8206
 
8345
- const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars(
8207
+ const [theme$1, refs, vars$u] = createHelperVars(
8346
8208
  {
8347
- thickness: '2px',
8348
- spacing: '10px',
8349
- },
8350
- componentName$w
8351
- );
8209
+ labelTextColor: globalRefs$h.colors.surface.contrast,
8210
+ valueTextColor: globalRefs$h.colors.surface.contrast,
8211
+ placeholderTextColor: globalRefs$h.colors.surface.main,
8212
+ requiredIndicator: "'*'",
8213
+ errorMessageTextColor: globalRefs$h.colors.error.main,
8352
8214
 
8353
- const divider = {
8354
- ...helperTheme$1,
8215
+ borderWidth: globalRefs$h.border.xs,
8216
+ borderRadius: globalRefs$h.radius.xs,
8217
+ borderColor: 'transparent',
8355
8218
 
8356
- [compVars$2.hostDirection]: globalRefs$a.direction,
8357
- [compVars$2.alignItems]: 'center',
8358
- [compVars$2.flexDirection]: 'row',
8359
- [compVars$2.alignSelf]: 'stretch',
8360
- [compVars$2.hostWidth]: '100%',
8361
- [compVars$2.stripeColor]: globalRefs$a.colors.surface.main,
8362
- [compVars$2.stripeColorOpacity]: '0.5',
8363
- [compVars$2.stripeHorizontalThickness]: helperRefs$1.thickness,
8364
- [compVars$2.labelTextWidth]: 'fit-content',
8365
- [compVars$2.labelTextMaxWidth]: 'calc(100% - 100px)',
8366
- [compVars$2.labelTextHorizontalSpacing]: helperRefs$1.spacing,
8367
- [compVars$2.textAlign]: 'center',
8219
+ outlineWidth: globalRefs$h.border.sm,
8220
+ outlineStyle: 'solid',
8221
+ outlineColor: 'transparent',
8222
+ outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes
8368
8223
 
8369
- _vertical: {
8370
- [compVars$2.minHeight]: '200px',
8371
- [compVars$2.flexDirection]: 'column',
8372
- [compVars$2.hostWidth]: 'fit-content',
8373
- [compVars$2.hostPadding]: `0 calc(${helperRefs$1.thickness} * 3)`,
8374
- [compVars$2.stripeVerticalThickness]: helperRefs$1.thickness,
8375
- [compVars$2.labelTextWidth]: 'fit-content',
8376
- [compVars$2.labelTextMaxWidth]: '100%',
8377
- [compVars$2.labelTextVerticalSpacing]: helperRefs$1.spacing,
8378
- },
8379
- };
8224
+ minWidth: '10em',
8225
+ toggleButtonSize: '1.5em',
8226
+ inputHeight: '3em',
8227
+ horizontalPadding: '0.5em',
8228
+ verticalPadding: '0.5em',
8380
8229
 
8381
- const vars$h = {
8382
- ...compVars$2,
8383
- ...helperVars$1,
8384
- };
8230
+ backgroundColor: globalRefs$h.colors.surface.light,
8385
8231
 
8386
- var divider$1 = /*#__PURE__*/Object.freeze({
8387
- __proto__: null,
8388
- default: divider,
8389
- vars: vars$h
8390
- });
8232
+ fontFamily: globalRefs$h.fonts.font1.family,
8391
8233
 
8392
- const vars$g = PasscodeClass.cssVarList;
8234
+ direction: globalRefs$h.direction,
8393
8235
 
8394
- const passcode = {
8395
- [vars$g.hostDirection]: refs.direction,
8396
- [vars$g.fontFamily]: refs.fontFamily,
8397
- [vars$g.fontSize]: refs.fontSize,
8398
- [vars$g.labelTextColor]: refs.labelTextColor,
8399
- [vars$g.labelRequiredIndicator]: refs.requiredIndicator,
8400
- [vars$g.errorMessageTextColor]: refs.errorMessageTextColor,
8401
- [vars$g.digitValueTextColor]: refs.valueTextColor,
8402
- [vars$g.digitPadding]: '0',
8403
- [vars$g.digitTextAlign]: 'center',
8404
- [vars$g.digitSpacing]: '4px',
8405
- [vars$g.hostWidth]: refs.width,
8406
- [vars$g.digitOutlineColor]: 'transparent',
8407
- [vars$g.digitOutlineWidth]: refs.outlineWidth,
8408
- [vars$g.focusedDigitFieldOutlineColor]: refs.outlineColor,
8409
- [vars$g.digitSize]: refs.inputHeight,
8236
+ overlayOpacity: '0.3',
8410
8237
 
8411
- size: {
8412
- xs: { [vars$g.spinnerSize]: '15px' },
8413
- sm: { [vars$g.spinnerSize]: '20px' },
8414
- md: { [vars$g.spinnerSize]: '20px' },
8415
- lg: { [vars$g.spinnerSize]: '20px' },
8416
- },
8238
+ size: {
8239
+ xs: { fontSize: '12px', chipFontSize: '10px' },
8240
+ sm: { fontSize: '14px', chipFontSize: '12px' },
8241
+ md: { fontSize: '16px', chipFontSize: '14px' },
8242
+ lg: { fontSize: '18px', chipFontSize: '16px' },
8243
+ },
8417
8244
 
8418
- _hideCursor: {
8419
- [vars$g.digitCaretTextColor]: 'transparent',
8420
- },
8245
+ _fullWidth: {
8246
+ width: '100%',
8247
+ },
8421
8248
 
8422
- _loading: {
8423
- [vars$g.overlayOpacity]: refs.overlayOpacity,
8249
+ _focused: {
8250
+ outlineColor: globalRefs$h.colors.surface.main,
8251
+ _invalid: {
8252
+ outlineColor: globalRefs$h.colors.error.main,
8253
+ },
8254
+ },
8255
+
8256
+ _bordered: {
8257
+ outlineWidth: globalRefs$h.border.xs,
8258
+ borderColor: globalRefs$h.colors.surface.main,
8259
+ borderStyle: 'solid',
8260
+ _invalid: {
8261
+ borderColor: globalRefs$h.colors.error.main,
8262
+ },
8263
+ },
8264
+
8265
+ _disabled: {
8266
+ labelTextColor: globalRefs$h.colors.surface.main,
8267
+ borderColor: globalRefs$h.colors.surface.main,
8268
+ valueTextColor: globalRefs$h.colors.surface.dark,
8269
+ placeholderTextColor: globalRefs$h.colors.surface.dark,
8270
+ backgroundColor: globalRefs$h.colors.surface.main,
8271
+ },
8424
8272
  },
8273
+ componentName$2
8274
+ );
8275
+
8276
+ var inputWrapper = /*#__PURE__*/Object.freeze({
8277
+ __proto__: null,
8278
+ default: theme$1,
8279
+ refs: refs,
8280
+ vars: vars$u
8281
+ });
8282
+
8283
+ const vars$t = TextFieldClass.cssVarList;
8284
+
8285
+ const textField = {
8286
+ [vars$t.hostWidth]: refs.width,
8287
+ [vars$t.hostMinWidth]: refs.minWidth,
8288
+ [vars$t.hostDirection]: refs.direction,
8289
+ [vars$t.fontSize]: refs.fontSize,
8290
+ [vars$t.fontFamily]: refs.fontFamily,
8291
+ [vars$t.labelTextColor]: refs.labelTextColor,
8292
+ [vars$t.labelRequiredIndicator]: refs.requiredIndicator,
8293
+ [vars$t.errorMessageTextColor]: refs.errorMessageTextColor,
8294
+ [vars$t.inputValueTextColor]: refs.valueTextColor,
8295
+ [vars$t.inputPlaceholderColor]: refs.placeholderTextColor,
8296
+ [vars$t.inputBorderWidth]: refs.borderWidth,
8297
+ [vars$t.inputBorderStyle]: refs.borderStyle,
8298
+ [vars$t.inputBorderColor]: refs.borderColor,
8299
+ [vars$t.inputBorderRadius]: refs.borderRadius,
8300
+ [vars$t.inputOutlineWidth]: refs.outlineWidth,
8301
+ [vars$t.inputOutlineStyle]: refs.outlineStyle,
8302
+ [vars$t.inputOutlineColor]: refs.outlineColor,
8303
+ [vars$t.inputOutlineOffset]: refs.outlineOffset,
8304
+ [vars$t.inputBackgroundColor]: refs.backgroundColor,
8305
+ [vars$t.inputHeight]: refs.inputHeight,
8306
+ [vars$t.inputHorizontalPadding]: refs.horizontalPadding,
8425
8307
  };
8426
8308
 
8427
- var passcode$1 = /*#__PURE__*/Object.freeze({
8309
+ var textField$1 = /*#__PURE__*/Object.freeze({
8428
8310
  __proto__: null,
8429
- default: passcode,
8430
- vars: vars$g
8311
+ default: textField,
8312
+ textField: textField,
8313
+ vars: vars$t
8431
8314
  });
8432
8315
 
8433
- const globalRefs$9 = getThemeRefs(globals);
8434
- const vars$f = LoaderLinearClass.cssVarList;
8316
+ const globalRefs$g = getThemeRefs(globals);
8317
+ const vars$s = PasswordClass.cssVarList;
8435
8318
 
8436
- const loaderLinear = {
8437
- [vars$f.hostDisplay]: 'inline-block',
8438
- [vars$f.hostWidth]: '100%',
8319
+ const password = {
8320
+ [vars$s.hostWidth]: refs.width,
8321
+ [vars$s.hostDirection]: refs.direction,
8322
+ [vars$s.fontSize]: refs.fontSize,
8323
+ [vars$s.fontFamily]: refs.fontFamily,
8324
+ [vars$s.labelTextColor]: refs.labelTextColor,
8325
+ [vars$s.errorMessageTextColor]: refs.errorMessageTextColor,
8326
+ [vars$s.inputHorizontalPadding]: refs.horizontalPadding,
8327
+ [vars$s.inputHeight]: refs.inputHeight,
8328
+ [vars$s.inputBackgroundColor]: refs.backgroundColor,
8329
+ [vars$s.labelRequiredIndicator]: refs.requiredIndicator,
8330
+ [vars$s.inputValueTextColor]: refs.valueTextColor,
8331
+ [vars$s.inputPlaceholderTextColor]: refs.placeholderTextColor,
8332
+ [vars$s.inputBorderWidth]: refs.borderWidth,
8333
+ [vars$s.inputBorderStyle]: refs.borderStyle,
8334
+ [vars$s.inputBorderColor]: refs.borderColor,
8335
+ [vars$s.inputBorderRadius]: refs.borderRadius,
8336
+ [vars$s.inputOutlineWidth]: refs.outlineWidth,
8337
+ [vars$s.inputOutlineStyle]: refs.outlineStyle,
8338
+ [vars$s.inputOutlineColor]: refs.outlineColor,
8339
+ [vars$s.inputOutlineOffset]: refs.outlineOffset,
8340
+ [vars$s.revealButtonOffset]: globalRefs$g.spacing.md,
8341
+ [vars$s.revealButtonSize]: refs.toggleButtonSize,
8342
+ };
8439
8343
 
8440
- [vars$f.barColor]: globalRefs$9.colors.surface.contrast,
8441
- [vars$f.barWidth]: '20%',
8344
+ var password$1 = /*#__PURE__*/Object.freeze({
8345
+ __proto__: null,
8346
+ default: password,
8347
+ vars: vars$s
8348
+ });
8442
8349
 
8443
- [vars$f.barBackgroundColor]: globalRefs$9.colors.surface.main,
8444
- [vars$f.barBorderRadius]: '4px',
8350
+ const vars$r = NumberFieldClass.cssVarList;
8445
8351
 
8446
- [vars$f.animationDuration]: '2s',
8447
- [vars$f.animationTimingFunction]: 'linear',
8448
- [vars$f.animationIterationCount]: 'infinite',
8449
- [vars$f.verticalPadding]: '0.25em',
8352
+ const numberField = {
8353
+ [vars$r.hostWidth]: refs.width,
8354
+ [vars$r.hostMinWidth]: refs.minWidth,
8355
+ [vars$r.hostDirection]: refs.direction,
8356
+ [vars$r.fontSize]: refs.fontSize,
8357
+ [vars$r.fontFamily]: refs.fontFamily,
8358
+ [vars$r.labelTextColor]: refs.labelTextColor,
8359
+ [vars$r.errorMessageTextColor]: refs.errorMessageTextColor,
8360
+ [vars$r.inputValueTextColor]: refs.valueTextColor,
8361
+ [vars$r.inputPlaceholderColor]: refs.placeholderTextColor,
8362
+ [vars$r.inputBorderWidth]: refs.borderWidth,
8363
+ [vars$r.inputBorderStyle]: refs.borderStyle,
8364
+ [vars$r.inputBorderColor]: refs.borderColor,
8365
+ [vars$r.inputBorderRadius]: refs.borderRadius,
8366
+ [vars$r.inputOutlineWidth]: refs.outlineWidth,
8367
+ [vars$r.inputOutlineStyle]: refs.outlineStyle,
8368
+ [vars$r.inputOutlineColor]: refs.outlineColor,
8369
+ [vars$r.inputOutlineOffset]: refs.outlineOffset,
8370
+ [vars$r.inputBackgroundColor]: refs.backgroundColor,
8371
+ [vars$r.labelRequiredIndicator]: refs.requiredIndicator,
8372
+ [vars$r.inputHorizontalPadding]: refs.horizontalPadding,
8373
+ [vars$r.inputHeight]: refs.inputHeight,
8374
+ };
8450
8375
 
8451
- size: {
8452
- xs: { [vars$f.barHeight]: '2px' },
8453
- sm: { [vars$f.barHeight]: '4px' },
8454
- md: { [vars$f.barHeight]: '6px' },
8455
- lg: { [vars$f.barHeight]: '8px' },
8456
- },
8376
+ var numberField$1 = /*#__PURE__*/Object.freeze({
8377
+ __proto__: null,
8378
+ default: numberField,
8379
+ vars: vars$r
8380
+ });
8457
8381
 
8458
- mode: {
8459
- primary: {
8460
- [vars$f.barColor]: globalRefs$9.colors.primary.main,
8461
- },
8462
- secondary: {
8463
- [vars$f.barColor]: globalRefs$9.colors.secondary.main,
8464
- },
8465
- },
8382
+ const vars$q = EmailFieldClass.cssVarList;
8466
8383
 
8467
- _hidden: {
8468
- [vars$f.hostDisplay]: 'none',
8469
- },
8384
+ const emailField = {
8385
+ [vars$q.hostWidth]: refs.width,
8386
+ [vars$q.hostMinWidth]: refs.minWidth,
8387
+ [vars$q.hostDirection]: refs.direction,
8388
+ [vars$q.fontSize]: refs.fontSize,
8389
+ [vars$q.fontFamily]: refs.fontFamily,
8390
+ [vars$q.labelTextColor]: refs.labelTextColor,
8391
+ [vars$q.errorMessageTextColor]: refs.errorMessageTextColor,
8392
+ [vars$q.inputValueTextColor]: refs.valueTextColor,
8393
+ [vars$q.labelRequiredIndicator]: refs.requiredIndicator,
8394
+ [vars$q.inputPlaceholderColor]: refs.placeholderTextColor,
8395
+ [vars$q.inputBorderWidth]: refs.borderWidth,
8396
+ [vars$q.inputBorderStyle]: refs.borderStyle,
8397
+ [vars$q.inputBorderColor]: refs.borderColor,
8398
+ [vars$q.inputBorderRadius]: refs.borderRadius,
8399
+ [vars$q.inputOutlineWidth]: refs.outlineWidth,
8400
+ [vars$q.inputOutlineStyle]: refs.outlineStyle,
8401
+ [vars$q.inputOutlineColor]: refs.outlineColor,
8402
+ [vars$q.inputOutlineOffset]: refs.outlineOffset,
8403
+ [vars$q.inputBackgroundColor]: refs.backgroundColor,
8404
+ [vars$q.inputHorizontalPadding]: refs.horizontalPadding,
8405
+ [vars$q.inputHeight]: refs.inputHeight,
8470
8406
  };
8471
8407
 
8472
- var loaderLinear$1 = /*#__PURE__*/Object.freeze({
8408
+ var emailField$1 = /*#__PURE__*/Object.freeze({
8473
8409
  __proto__: null,
8474
- default: loaderLinear,
8475
- vars: vars$f
8410
+ default: emailField,
8411
+ vars: vars$q
8476
8412
  });
8477
8413
 
8478
- const globalRefs$8 = getThemeRefs(globals);
8479
- const compVars$1 = LoaderRadialClass.cssVarList;
8480
-
8481
- const [helperTheme, helperRefs, helperVars] = createHelperVars(
8482
- {
8483
- spinnerColor: globalRefs$8.colors.surface.contrast,
8484
- mode: {
8485
- primary: {
8486
- spinnerColor: globalRefs$8.colors.primary.main,
8487
- },
8488
- secondary: {
8489
- spinnerColor: globalRefs$8.colors.secondary.main,
8490
- },
8491
- },
8492
- },
8493
- componentName$z
8494
- );
8495
-
8496
- const loaderRadial = {
8497
- ...helperTheme,
8414
+ const globalRefs$f = getThemeRefs(globals);
8415
+ const vars$p = TextAreaClass.cssVarList;
8498
8416
 
8499
- [compVars$1.animationDuration]: '2s',
8500
- [compVars$1.animationTimingFunction]: 'linear',
8501
- [compVars$1.animationIterationCount]: 'infinite',
8502
- [compVars$1.spinnerBorderStyle]: 'solid',
8503
- [compVars$1.spinnerBorderWidth]: '0.2em',
8504
- [compVars$1.spinnerBorderRadius]: '50%',
8505
- [compVars$1.spinnerQuadrant1Color]: helperRefs.spinnerColor,
8506
- [compVars$1.spinnerQuadrant2Color]: 'transparent',
8507
- [compVars$1.spinnerQuadrant3Color]: helperRefs.spinnerColor,
8508
- [compVars$1.spinnerQuadrant4Color]: 'transparent',
8417
+ const textArea = {
8418
+ [vars$p.hostWidth]: refs.width,
8419
+ [vars$p.hostMinWidth]: refs.minWidth,
8420
+ [vars$p.hostDirection]: refs.direction,
8421
+ [vars$p.fontSize]: refs.fontSize,
8422
+ [vars$p.fontFamily]: refs.fontFamily,
8423
+ [vars$p.labelTextColor]: refs.labelTextColor,
8424
+ [vars$p.labelRequiredIndicator]: refs.requiredIndicator,
8425
+ [vars$p.errorMessageTextColor]: refs.errorMessageTextColor,
8426
+ [vars$p.inputBackgroundColor]: refs.backgroundColor,
8427
+ [vars$p.inputValueTextColor]: refs.valueTextColor,
8428
+ [vars$p.inputPlaceholderTextColor]: refs.placeholderTextColor,
8429
+ [vars$p.inputBorderRadius]: refs.borderRadius,
8430
+ [vars$p.inputBorderWidth]: refs.borderWidth,
8431
+ [vars$p.inputBorderStyle]: refs.borderStyle,
8432
+ [vars$p.inputBorderColor]: refs.borderColor,
8433
+ [vars$p.inputOutlineWidth]: refs.outlineWidth,
8434
+ [vars$p.inputOutlineStyle]: refs.outlineStyle,
8435
+ [vars$p.inputOutlineColor]: refs.outlineColor,
8436
+ [vars$p.inputOutlineOffset]: refs.outlineOffset,
8437
+ [vars$p.inputResizeType]: 'vertical',
8438
+ [vars$p.inputMinHeight]: '5em',
8509
8439
 
8510
- size: {
8511
- xs: { [compVars$1.spinnerSize]: '20px' },
8512
- sm: { [compVars$1.spinnerSize]: '30px' },
8513
- md: { [compVars$1.spinnerSize]: '40px' },
8514
- lg: { [compVars$1.spinnerSize]: '60px' },
8515
- xl: { [compVars$1.spinnerSize]: '80px' },
8440
+ _disabled: {
8441
+ [vars$p.inputBackgroundColor]: globalRefs$f.colors.surface.light,
8516
8442
  },
8517
8443
 
8518
- _hidden: {
8519
- [compVars$1.hostDisplay]: 'none',
8444
+ _readonly: {
8445
+ [vars$p.inputResizeType]: 'none',
8520
8446
  },
8521
8447
  };
8522
- const vars$e = {
8523
- ...compVars$1,
8524
- ...helperVars,
8525
- };
8526
8448
 
8527
- var loaderRadial$1 = /*#__PURE__*/Object.freeze({
8449
+ var textArea$1 = /*#__PURE__*/Object.freeze({
8528
8450
  __proto__: null,
8529
- default: loaderRadial,
8530
- vars: vars$e
8451
+ default: textArea,
8452
+ vars: vars$p
8531
8453
  });
8532
8454
 
8533
- const globalRefs$7 = getThemeRefs(globals);
8534
- const vars$d = ComboBoxClass.cssVarList;
8455
+ const vars$o = CheckboxClass.cssVarList;
8456
+ const checkboxSize = '1.35em';
8535
8457
 
8536
- const comboBox = {
8537
- [vars$d.hostWidth]: refs.width,
8538
- [vars$d.hostDirection]: refs.direction,
8539
- [vars$d.fontSize]: refs.fontSize,
8540
- [vars$d.fontFamily]: refs.fontFamily,
8541
- [vars$d.labelTextColor]: refs.labelTextColor,
8542
- [vars$d.errorMessageTextColor]: refs.errorMessageTextColor,
8543
- [vars$d.inputBorderColor]: refs.borderColor,
8544
- [vars$d.inputBorderWidth]: refs.borderWidth,
8545
- [vars$d.inputBorderStyle]: refs.borderStyle,
8546
- [vars$d.inputBorderRadius]: refs.borderRadius,
8547
- [vars$d.inputOutlineColor]: refs.outlineColor,
8548
- [vars$d.inputOutlineOffset]: refs.outlineOffset,
8549
- [vars$d.inputOutlineWidth]: refs.outlineWidth,
8550
- [vars$d.inputOutlineStyle]: refs.outlineStyle,
8551
- [vars$d.labelRequiredIndicator]: refs.requiredIndicator,
8552
- [vars$d.inputValueTextColor]: refs.valueTextColor,
8553
- [vars$d.inputPlaceholderTextColor]: refs.placeholderTextColor,
8554
- [vars$d.inputBackgroundColor]: refs.backgroundColor,
8555
- [vars$d.inputHorizontalPadding]: refs.horizontalPadding,
8556
- [vars$d.inputHeight]: refs.inputHeight,
8557
- [vars$d.inputDropdownButtonColor]: globalRefs$7.colors.surface.contrast,
8558
- [vars$d.inputDropdownButtonCursor]: 'pointer',
8559
- [vars$d.inputDropdownButtonSize]: refs.toggleButtonSize,
8560
- [vars$d.inputDropdownButtonOffset]: globalRefs$7.spacing.xs,
8561
- [vars$d.overlayItemPaddingInlineStart]: globalRefs$7.spacing.xs,
8562
- [vars$d.overlayItemPaddingInlineEnd]: globalRefs$7.spacing.lg,
8458
+ const checkbox = {
8459
+ [vars$o.hostWidth]: refs.width,
8460
+ [vars$o.hostDirection]: refs.direction,
8461
+ [vars$o.fontSize]: refs.fontSize,
8462
+ [vars$o.fontFamily]: refs.fontFamily,
8463
+ [vars$o.labelTextColor]: refs.labelTextColor,
8464
+ [vars$o.labelRequiredIndicator]: refs.requiredIndicator,
8465
+ [vars$o.labelFontWeight]: '400',
8466
+ [vars$o.labelLineHeight]: checkboxSize,
8467
+ [vars$o.labelSpacing]: '1em',
8468
+ [vars$o.errorMessageTextColor]: refs.errorMessageTextColor,
8469
+ [vars$o.inputOutlineWidth]: refs.outlineWidth,
8470
+ [vars$o.inputOutlineOffset]: refs.outlineOffset,
8471
+ [vars$o.inputOutlineColor]: refs.outlineColor,
8472
+ [vars$o.inputOutlineStyle]: refs.outlineStyle,
8473
+ [vars$o.inputBorderRadius]: refs.borderRadius,
8474
+ [vars$o.inputBorderColor]: refs.borderColor,
8475
+ [vars$o.inputBorderWidth]: refs.borderWidth,
8476
+ [vars$o.inputBorderStyle]: refs.borderStyle,
8477
+ [vars$o.inputBackgroundColor]: refs.backgroundColor,
8478
+ [vars$o.inputSize]: checkboxSize,
8563
8479
 
8564
- _readonly: {
8565
- [vars$d.inputDropdownButtonCursor]: 'default',
8480
+ _checked: {
8481
+ [vars$o.inputValueTextColor]: refs.valueTextColor,
8566
8482
  },
8567
8483
 
8568
- // Overlay theme exposed via the component:
8569
- [vars$d.overlayFontSize]: refs.fontSize,
8570
- [vars$d.overlayFontFamily]: refs.fontFamily,
8571
- [vars$d.overlayCursor]: 'pointer',
8572
- [vars$d.overlayItemBoxShadow]: 'none',
8573
-
8574
- // Overlay direct theme:
8575
- [vars$d.overlay.minHeight]: '400px',
8576
- [vars$d.overlay.margin]: '0',
8484
+ _disabled: {
8485
+ [vars$o.labelTextColor]: refs.labelTextColor,
8486
+ },
8577
8487
  };
8578
8488
 
8579
- var comboBox$1 = /*#__PURE__*/Object.freeze({
8489
+ var checkbox$1 = /*#__PURE__*/Object.freeze({
8580
8490
  __proto__: null,
8581
- comboBox: comboBox,
8582
- default: comboBox,
8583
- vars: vars$d
8491
+ default: checkbox,
8492
+ vars: vars$o
8584
8493
  });
8585
8494
 
8586
- const vars$c = ImageClass.cssVarList;
8495
+ const knobMargin = '2px';
8496
+ const checkboxHeight = '1.25em';
8587
8497
 
8588
- const image = {};
8498
+ const globalRefs$e = getThemeRefs(globals);
8499
+ const vars$n = SwitchToggleClass.cssVarList;
8589
8500
 
8590
- var image$1 = /*#__PURE__*/Object.freeze({
8591
- __proto__: null,
8592
- default: image,
8593
- vars: vars$c
8594
- });
8501
+ const switchToggle = {
8502
+ [vars$n.hostWidth]: refs.width,
8503
+ [vars$n.hostDirection]: refs.direction,
8504
+ [vars$n.fontSize]: refs.fontSize,
8505
+ [vars$n.fontFamily]: refs.fontFamily,
8595
8506
 
8596
- const vars$b = PhoneFieldClass.cssVarList;
8507
+ [vars$n.inputOutlineWidth]: refs.outlineWidth,
8508
+ [vars$n.inputOutlineOffset]: refs.outlineOffset,
8509
+ [vars$n.inputOutlineColor]: refs.outlineColor,
8510
+ [vars$n.inputOutlineStyle]: refs.outlineStyle,
8597
8511
 
8598
- const phoneField = {
8599
- [vars$b.hostWidth]: refs.width,
8600
- [vars$b.hostDirection]: refs.direction,
8601
- [vars$b.fontSize]: refs.fontSize,
8602
- [vars$b.fontFamily]: refs.fontFamily,
8603
- [vars$b.labelTextColor]: refs.labelTextColor,
8604
- [vars$b.labelRequiredIndicator]: refs.requiredIndicator,
8605
- [vars$b.errorMessageTextColor]: refs.errorMessageTextColor,
8606
- [vars$b.inputValueTextColor]: refs.valueTextColor,
8607
- [vars$b.inputPlaceholderTextColor]: refs.placeholderTextColor,
8608
- [vars$b.inputBorderStyle]: refs.borderStyle,
8609
- [vars$b.inputBorderWidth]: refs.borderWidth,
8610
- [vars$b.inputBorderColor]: refs.borderColor,
8611
- [vars$b.inputBorderRadius]: refs.borderRadius,
8612
- [vars$b.inputOutlineStyle]: refs.outlineStyle,
8613
- [vars$b.inputOutlineWidth]: refs.outlineWidth,
8614
- [vars$b.inputOutlineColor]: refs.outlineColor,
8615
- [vars$b.inputOutlineOffset]: refs.outlineOffset,
8616
- [vars$b.phoneInputWidth]: refs.minWidth,
8617
- [vars$b.countryCodeInputWidth]: '5em',
8618
- [vars$b.countryCodeDropdownWidth]: '20em',
8512
+ [vars$n.trackBorderStyle]: refs.borderStyle,
8513
+ [vars$n.trackBorderWidth]: refs.borderWidth, // var `trackBorderWidth` used outside the theme for `left` margin calculation
8514
+ [vars$n.trackBorderColor]: refs.borderColor,
8515
+ [vars$n.trackBackgroundColor]: 'none',
8516
+ [vars$n.trackBorderRadius]: globalRefs$e.radius.md,
8517
+ [vars$n.trackWidth]: '2.5em', // var `trackWidth` used outside the theme for `left` margin calculation
8518
+ [vars$n.trackHeight]: checkboxHeight,
8619
8519
 
8620
- // '@overlay': {
8621
- // overlayItemBackgroundColor: 'red'
8622
- // }
8623
- };
8520
+ [vars$n.knobSize]: `calc(1em - ${knobMargin})`,
8521
+ [vars$n.knobRadius]: '50%',
8522
+ [vars$n.knobTopOffset]: '1px',
8523
+ [vars$n.knobLeftOffset]: knobMargin,
8524
+ [vars$n.knobColor]: refs.valueTextColor,
8525
+ [vars$n.knobTransitionDuration]: '0.3s',
8624
8526
 
8625
- var phoneField$1 = /*#__PURE__*/Object.freeze({
8626
- __proto__: null,
8627
- default: phoneField,
8628
- vars: vars$b
8629
- });
8527
+ [vars$n.labelTextColor]: refs.labelTextColor,
8528
+ [vars$n.labelFontWeight]: '400',
8529
+ [vars$n.labelLineHeight]: '1.35em',
8530
+ [vars$n.labelSpacing]: '1em',
8531
+ [vars$n.labelRequiredIndicator]: refs.requiredIndicator,
8532
+ [vars$n.errorMessageTextColor]: refs.errorMessageTextColor,
8630
8533
 
8631
- const vars$a = PhoneFieldInputBoxClass.cssVarList;
8534
+ _checked: {
8535
+ [vars$n.trackBorderColor]: refs.borderColor,
8536
+ [vars$n.trackBackgroundColor]: refs.backgroundColor,
8537
+ [vars$n.knobLeftOffset]: `calc(100% - var(${vars$n.knobSize}) - ${knobMargin})`,
8538
+ [vars$n.knobColor]: refs.valueTextColor,
8539
+ [vars$n.knobTextColor]: refs.valueTextColor,
8540
+ },
8632
8541
 
8633
- const phoneInputBoxField = {
8634
- [vars$a.hostWidth]: '16em',
8635
- [vars$a.hostMinWidth]: refs.minWidth,
8636
- [vars$a.hostDirection]: refs.direction,
8637
- [vars$a.fontSize]: refs.fontSize,
8638
- [vars$a.fontFamily]: refs.fontFamily,
8639
- [vars$a.labelTextColor]: refs.labelTextColor,
8640
- [vars$a.labelRequiredIndicator]: refs.requiredIndicator,
8641
- [vars$a.errorMessageTextColor]: refs.errorMessageTextColor,
8642
- [vars$a.inputValueTextColor]: refs.valueTextColor,
8643
- [vars$a.inputPlaceholderTextColor]: refs.placeholderTextColor,
8644
- [vars$a.inputBorderStyle]: refs.borderStyle,
8645
- [vars$a.inputBorderWidth]: refs.borderWidth,
8646
- [vars$a.inputBorderColor]: refs.borderColor,
8647
- [vars$a.inputBorderRadius]: refs.borderRadius,
8648
- [vars$a.inputOutlineStyle]: refs.outlineStyle,
8649
- [vars$a.inputOutlineWidth]: refs.outlineWidth,
8650
- [vars$a.inputOutlineColor]: refs.outlineColor,
8651
- [vars$a.inputOutlineOffset]: refs.outlineOffset,
8652
- _fullWidth: {
8653
- [vars$a.hostWidth]: refs.width,
8542
+ _disabled: {
8543
+ [vars$n.knobColor]: globalRefs$e.colors.surface.light,
8544
+ [vars$n.trackBorderColor]: globalRefs$e.colors.surface.main,
8545
+ [vars$n.trackBackgroundColor]: globalRefs$e.colors.surface.main,
8546
+ [vars$n.labelTextColor]: refs.labelTextColor,
8547
+ _checked: {
8548
+ [vars$n.knobColor]: globalRefs$e.colors.surface.light,
8549
+ [vars$n.trackBackgroundColor]: globalRefs$e.colors.surface.main,
8550
+ },
8551
+ },
8552
+
8553
+ _invalid: {
8554
+ [vars$n.trackBorderColor]: globalRefs$e.colors.error.main,
8555
+ [vars$n.knobColor]: globalRefs$e.colors.error.main,
8654
8556
  },
8655
8557
  };
8656
8558
 
8657
- var phoneInputBoxField$1 = /*#__PURE__*/Object.freeze({
8559
+ var switchToggle$1 = /*#__PURE__*/Object.freeze({
8658
8560
  __proto__: null,
8659
- default: phoneInputBoxField,
8660
- vars: vars$a
8561
+ default: switchToggle,
8562
+ vars: vars$n
8661
8563
  });
8662
8564
 
8663
- const vars$9 = NewPasswordClass.cssVarList;
8565
+ const globalRefs$d = getThemeRefs(globals);
8664
8566
 
8665
- const newPassword = {
8666
- [vars$9.hostWidth]: refs.width,
8667
- [vars$9.hostMinWidth]: refs.minWidth,
8668
- [vars$9.hostDirection]: refs.direction,
8669
- [vars$9.fontSize]: refs.fontSize,
8670
- [vars$9.fontFamily]: refs.fontFamily,
8671
- [vars$9.spaceBetweenInputs]: '1em',
8672
- [vars$9.errorMessageTextColor]: refs.errorMessageTextColor,
8567
+ const compVars$3 = ContainerClass.cssVarList;
8673
8568
 
8674
- _required: {
8675
- // NewPassword doesn't pass `required` attribute to its Password components.
8676
- // That's why we fake the required indicator on each input.
8677
- // We do that by injecting `::after` element, and populating it with requiredIndicator content.
8678
- [vars$9.inputsRequiredIndicator]: refs.requiredIndicator, // used to populate required content for NewPassword input fields outside the theme
8679
- },
8569
+ const verticalAlignment = {
8570
+ start: { verticalAlignment: 'start' },
8571
+ center: { verticalAlignment: 'safe center' },
8572
+ end: { verticalAlignment: 'end' },
8680
8573
  };
8681
8574
 
8682
- var newPassword$1 = /*#__PURE__*/Object.freeze({
8683
- __proto__: null,
8684
- default: newPassword,
8685
- vars: vars$9
8686
- });
8687
-
8688
- const vars$8 = UploadFileClass.cssVarList;
8575
+ const horizontalAlignment = {
8576
+ start: { horizontalAlignment: 'start' },
8577
+ center: { horizontalAlignment: 'safe center' },
8578
+ end: { horizontalAlignment: 'end' },
8579
+ };
8689
8580
 
8690
- const uploadFile = {
8691
- [vars$8.hostDirection]: refs.direction,
8692
- [vars$8.labelTextColor]: refs.labelTextColor,
8693
- [vars$8.fontFamily]: refs.fontFamily,
8581
+ const [helperTheme$2, helperRefs$2, helperVars$2] = createHelperVars(
8582
+ {
8583
+ verticalAlignment,
8584
+ horizontalAlignment,
8585
+ shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format
8586
+ },
8587
+ componentName$y
8588
+ );
8694
8589
 
8695
- [vars$8.iconSize]: '2em',
8590
+ const { shadowColor: shadowColor$1 } = helperRefs$2;
8696
8591
 
8697
- [vars$8.hostPadding]: '0.75em',
8698
- [vars$8.gap]: '0.5em',
8592
+ const container = {
8593
+ ...helperTheme$2,
8699
8594
 
8700
- [vars$8.fontSize]: '16px',
8701
- [vars$8.titleFontWeight]: '500',
8702
- [vars$8.lineHeight]: '1em',
8595
+ [compVars$3.hostWidth]: '100%',
8596
+ [compVars$3.boxShadow]: 'none',
8597
+ [compVars$3.backgroundColor]: globalRefs$d.colors.surface.light,
8598
+ [compVars$3.color]: globalRefs$d.colors.surface.contrast,
8599
+ [compVars$3.borderRadius]: '0px',
8703
8600
 
8704
- [vars$8.borderWidth]: refs.borderWidth,
8705
- [vars$8.borderColor]: refs.borderColor,
8706
- [vars$8.borderRadius]: refs.borderRadius,
8707
- [vars$8.borderStyle]: 'dashed',
8601
+ verticalPadding: {
8602
+ sm: { [compVars$3.verticalPadding]: '5px' },
8603
+ md: { [compVars$3.verticalPadding]: '10px' },
8604
+ lg: { [compVars$3.verticalPadding]: '20px' },
8605
+ },
8708
8606
 
8709
- _required: {
8710
- [vars$8.requiredIndicator]: refs.requiredIndicator,
8607
+ horizontalPadding: {
8608
+ sm: { [compVars$3.horizontalPadding]: '5px' },
8609
+ md: { [compVars$3.horizontalPadding]: '10px' },
8610
+ lg: { [compVars$3.horizontalPadding]: '20px' },
8711
8611
  },
8712
8612
 
8713
- size: {
8714
- xs: {
8715
- [vars$8.hostHeight]: '196px',
8716
- [vars$8.hostWidth]: '200px',
8717
- [vars$8.titleFontSize]: '0.875em',
8718
- [vars$8.descriptionFontSize]: '0.875em',
8719
- [vars$8.lineHeight]: '1.25em',
8613
+ direction: {
8614
+ row: {
8615
+ [compVars$3.flexDirection]: 'row',
8616
+ [compVars$3.alignItems]: helperRefs$2.verticalAlignment,
8617
+ [compVars$3.justifyContent]: helperRefs$2.horizontalAlignment,
8618
+ [compVars$3.flexWrap]: 'wrap',
8619
+ horizontalAlignment: {
8620
+ spaceBetween: {
8621
+ [helperVars$2.horizontalAlignment]: 'space-between',
8622
+ },
8623
+ },
8624
+ },
8625
+ column: {
8626
+ [compVars$3.flexDirection]: 'column',
8627
+ [compVars$3.alignItems]: helperRefs$2.horizontalAlignment,
8628
+ [compVars$3.justifyContent]: helperRefs$2.verticalAlignment,
8629
+ verticalAlignment: {
8630
+ spaceBetween: {
8631
+ [helperVars$2.verticalAlignment]: 'space-between',
8632
+ },
8633
+ },
8720
8634
  },
8635
+ },
8636
+
8637
+ spaceBetween: {
8638
+ sm: { [compVars$3.gap]: '10px' },
8639
+ md: { [compVars$3.gap]: '20px' },
8640
+ lg: { [compVars$3.gap]: '30px' },
8641
+ },
8642
+
8643
+ shadow: {
8721
8644
  sm: {
8722
- [vars$8.hostHeight]: '216px',
8723
- [vars$8.hostWidth]: '230px',
8724
- [vars$8.titleFontSize]: '1em',
8725
- [vars$8.descriptionFontSize]: '0.875em',
8726
- [vars$8.lineHeight]: '1.25em',
8645
+ [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.sm} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.sm} ${shadowColor$1}`,
8727
8646
  },
8728
8647
  md: {
8729
- [vars$8.hostHeight]: '256px',
8730
- [vars$8.hostWidth]: '312px',
8731
- [vars$8.titleFontSize]: '1.125em',
8732
- [vars$8.descriptionFontSize]: '1em',
8733
- [vars$8.lineHeight]: '1.5em',
8648
+ [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.md} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.md} ${shadowColor$1}`,
8734
8649
  },
8735
8650
  lg: {
8736
- [vars$8.hostHeight]: '280px',
8737
- [vars$8.hostWidth]: '336px',
8738
- [vars$8.titleFontSize]: '1.125em',
8739
- [vars$8.descriptionFontSize]: '1.125em',
8740
- [vars$8.lineHeight]: '1.75em',
8651
+ [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.lg} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.lg} ${shadowColor$1}`,
8652
+ },
8653
+ xl: {
8654
+ [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide.xl} ${shadowColor$1}, ${globalRefs$d.shadow.narrow.xl} ${shadowColor$1}`,
8655
+ },
8656
+ '2xl': {
8657
+ [helperVars$2.shadowColor]: '#00000050', // mimic daisyUI shadow settings
8658
+ [compVars$3.boxShadow]: `${globalRefs$d.shadow.wide['2xl']} ${shadowColor$1}`,
8741
8659
  },
8742
8660
  },
8743
8661
 
8744
- _fullWidth: {
8745
- [vars$8.hostWidth]: refs.width,
8662
+ borderRadius: {
8663
+ sm: { [compVars$3.borderRadius]: globalRefs$d.radius.sm },
8664
+ md: { [compVars$3.borderRadius]: globalRefs$d.radius.md },
8665
+ lg: { [compVars$3.borderRadius]: globalRefs$d.radius.lg },
8666
+ xl: { [compVars$3.borderRadius]: globalRefs$d.radius.xl },
8667
+ '2xl': { [compVars$3.borderRadius]: globalRefs$d.radius['2xl'] },
8668
+ '3xl': { [compVars$3.borderRadius]: globalRefs$d.radius['3xl'] },
8746
8669
  },
8747
8670
  };
8748
8671
 
8749
- var uploadFile$1 = /*#__PURE__*/Object.freeze({
8672
+ const vars$m = {
8673
+ ...compVars$3,
8674
+ ...helperVars$2,
8675
+ };
8676
+
8677
+ var container$1 = /*#__PURE__*/Object.freeze({
8750
8678
  __proto__: null,
8751
- default: uploadFile,
8752
- vars: vars$8
8679
+ default: container,
8680
+ vars: vars$m
8753
8681
  });
8754
8682
 
8755
- const globalRefs$6 = getThemeRefs(globals);
8756
-
8757
- const vars$7 = ButtonSelectionGroupItemClass.cssVarList;
8758
-
8759
- const buttonSelectionGroupItem = {
8760
- [vars$7.hostDirection]: 'inherit',
8761
- [vars$7.backgroundColor]: globalRefs$6.colors.surface.light,
8762
- [vars$7.labelTextColor]: globalRefs$6.colors.surface.contrast,
8763
- [vars$7.borderColor]: globalRefs$6.colors.surface.main,
8764
- [vars$7.borderStyle]: 'solid',
8765
- [vars$7.borderRadius]: globalRefs$6.radius.sm,
8766
-
8767
- _hover: {
8768
- [vars$7.backgroundColor]: '#f4f5f5', // can we take it from the palette?
8769
- },
8683
+ const vars$l = LogoClass.cssVarList;
8770
8684
 
8771
- _selected: {
8772
- [vars$7.borderColor]: globalRefs$6.colors.surface.contrast,
8773
- [vars$7.backgroundColor]: globalRefs$6.colors.surface.contrast,
8774
- [vars$7.labelTextColor]: globalRefs$6.colors.surface.light,
8775
- },
8685
+ const logo$1 = {
8686
+ [vars$l.fallbackUrl]: 'url(https://imgs.descope.com/components/no-logo-placeholder.svg)',
8776
8687
  };
8777
8688
 
8778
- var buttonSelectionGroupItem$1 = /*#__PURE__*/Object.freeze({
8689
+ var logo$2 = /*#__PURE__*/Object.freeze({
8779
8690
  __proto__: null,
8780
- default: buttonSelectionGroupItem,
8781
- vars: vars$7
8691
+ default: logo$1,
8692
+ vars: vars$l
8782
8693
  });
8783
8694
 
8784
- const globalRefs$5 = getThemeRefs(globals);
8785
- const vars$6 = ButtonSelectionGroupClass.cssVarList;
8695
+ const vars$k = TotpImageClass.cssVarList;
8786
8696
 
8787
- const buttonSelectionGroup = {
8788
- [vars$6.hostDirection]: refs.direction,
8789
- [vars$6.fontFamily]: refs.fontFamily,
8790
- [vars$6.labelTextColor]: refs.labelTextColor,
8791
- [vars$6.labelRequiredIndicator]: refs.requiredIndicator,
8792
- [vars$6.errorMessageTextColor]: refs.errorMessageTextColor,
8793
- [vars$6.itemsSpacing]: globalRefs$5.spacing.sm,
8794
- [vars$6.hostWidth]: refs.width,
8697
+ const logo = {
8698
+ [vars$k.fallbackUrl]: 'url(https://imgs.descope.com/components/totp-placeholder.svg)',
8795
8699
  };
8796
8700
 
8797
- var buttonSelectionGroup$1 = /*#__PURE__*/Object.freeze({
8701
+ var totpImage = /*#__PURE__*/Object.freeze({
8798
8702
  __proto__: null,
8799
- default: buttonSelectionGroup,
8800
- vars: vars$6
8703
+ default: logo,
8704
+ vars: vars$k
8801
8705
  });
8802
8706
 
8803
- const componentName$2 = getComponentName('modal');
8804
-
8805
- const customMixin = (superclass) =>
8806
- class ModalMixinClass extends superclass {
8807
- get opened() {
8808
- return this.getAttribute('opened') === 'true';
8809
- }
8810
-
8811
- handleOpened() {
8812
- forwardAttrs(this, this.baseElement, { includeAttrs: ['opened'] });
8813
- if (this.opened) {
8814
- this.style.display = '';
8815
- } else {
8816
- this.style.display = 'none';
8817
- }
8818
- }
8819
-
8820
- init() {
8821
- super.init?.();
8822
- this.style.display = 'none';
8823
-
8824
- // vaadin-dialog might not be loaded in time
8825
- // in order to make sure it's loaded before this block is running
8826
- // we are wrapping it with setTimeout
8827
- setTimeout(() => {
8828
- // we want to sync descope-modal content through vaadin-dialog into the overlay
8829
- // so we are adding a slot to the overlay, which allows us to forward the content from
8830
- // vaadin-dialog to vaadin-dialog-overlay
8831
- this.baseElement.shadowRoot
8832
- .querySelector('vaadin-dialog-overlay')
8833
- .appendChild(document.createElement('slot'));
8834
-
8835
- this.#overrideOverlaySettings();
8836
-
8837
- // we need to always open the modal in `opened=false`
8838
- // to prevent it from rendering outside the dialog
8839
- // first, we have to run `overrideOverlaySettings` to setup
8840
- // the component.
8841
- this.handleOpened();
8842
- });
8843
- }
8844
-
8845
- // the default vaadin behavior is to attach the overlay to the body when opened
8846
- // we do not want that because it's difficult to style the overlay in this way
8847
- // so we override it to open inside the shadow DOM
8848
- #overrideOverlaySettings() {
8849
- const overlay = this.baseElement.shadowRoot.querySelector('vaadin-dialog-overlay');
8850
-
8851
- overlay._attachOverlay = () => {
8852
- overlay.bringToFront();
8853
- this.baseElement.setAttribute('style', 'display:flex!important;');
8854
- };
8855
- overlay._detachOverlay = () => {
8856
- this.baseElement.style.display = 'none';
8857
- };
8858
- overlay._enterModalState = () => {};
8707
+ const globalRefs$c = getThemeRefs(globals);
8708
+ const vars$j = TextClass.cssVarList;
8859
8709
 
8860
- overlay.close = () => false;
8861
- }
8862
- };
8710
+ const text = {
8711
+ [vars$j.hostDirection]: globalRefs$c.direction,
8712
+ [vars$j.textLineHeight]: '1.35em',
8713
+ [vars$j.textAlign]: 'left',
8714
+ [vars$j.textColor]: globalRefs$c.colors.surface.dark,
8715
+ variant: {
8716
+ h1: {
8717
+ [vars$j.fontSize]: globalRefs$c.typography.h1.size,
8718
+ [vars$j.fontWeight]: globalRefs$c.typography.h1.weight,
8719
+ [vars$j.fontFamily]: globalRefs$c.typography.h1.font,
8720
+ },
8721
+ h2: {
8722
+ [vars$j.fontSize]: globalRefs$c.typography.h2.size,
8723
+ [vars$j.fontWeight]: globalRefs$c.typography.h2.weight,
8724
+ [vars$j.fontFamily]: globalRefs$c.typography.h2.font,
8725
+ },
8726
+ h3: {
8727
+ [vars$j.fontSize]: globalRefs$c.typography.h3.size,
8728
+ [vars$j.fontWeight]: globalRefs$c.typography.h3.weight,
8729
+ [vars$j.fontFamily]: globalRefs$c.typography.h3.font,
8730
+ },
8731
+ subtitle1: {
8732
+ [vars$j.fontSize]: globalRefs$c.typography.subtitle1.size,
8733
+ [vars$j.fontWeight]: globalRefs$c.typography.subtitle1.weight,
8734
+ [vars$j.fontFamily]: globalRefs$c.typography.subtitle1.font,
8735
+ },
8736
+ subtitle2: {
8737
+ [vars$j.fontSize]: globalRefs$c.typography.subtitle2.size,
8738
+ [vars$j.fontWeight]: globalRefs$c.typography.subtitle2.weight,
8739
+ [vars$j.fontFamily]: globalRefs$c.typography.subtitle2.font,
8740
+ },
8741
+ body1: {
8742
+ [vars$j.fontSize]: globalRefs$c.typography.body1.size,
8743
+ [vars$j.fontWeight]: globalRefs$c.typography.body1.weight,
8744
+ [vars$j.fontFamily]: globalRefs$c.typography.body1.font,
8745
+ },
8746
+ body2: {
8747
+ [vars$j.fontSize]: globalRefs$c.typography.body2.size,
8748
+ [vars$j.fontWeight]: globalRefs$c.typography.body2.weight,
8749
+ [vars$j.fontFamily]: globalRefs$c.typography.body2.font,
8750
+ },
8751
+ },
8863
8752
 
8864
- const ModalClass = compose(
8865
- createStyleMixin({
8866
- mappings: {
8867
- overlayBackgroundColor: { property: () => ModalClass.cssVarList.overlay.backgroundColor },
8868
- overlayShadow: { property: () => ModalClass.cssVarList.overlay.shadow },
8869
- overlayWidth: { property: () => ModalClass.cssVarList.overlay.width },
8753
+ mode: {
8754
+ primary: {
8755
+ [vars$j.textColor]: globalRefs$c.colors.primary.main,
8870
8756
  },
8871
- }),
8872
- portalMixin({
8873
- name: 'overlay',
8874
- selector: '',
8875
- mappings: {
8876
- hostDisplay: {
8877
- selector: () => ':host(.descope-modal)',
8878
- property: 'display',
8879
- important: true,
8880
- },
8881
- backgroundColor: [
8882
- { selector: () => '::part(content)', property: 'background-color' },
8883
- { selector: () => '::part(overlay)', property: 'background-color' },
8884
- ],
8885
- width: { selector: () => '::part(overlay)', property: 'width' },
8886
- shadow: { selector: () => '::part(overlay)', property: 'box-shadow' },
8757
+ secondary: {
8758
+ [vars$j.textColor]: globalRefs$c.colors.secondary.main,
8887
8759
  },
8888
- forward: {
8889
- include: false,
8890
- attributes: ['opened'],
8760
+ error: {
8761
+ [vars$j.textColor]: globalRefs$c.colors.error.main,
8891
8762
  },
8892
- }),
8893
- draggableMixin,
8894
- componentNameValidationMixin,
8895
- customMixin
8896
- )(
8897
- createProxy({
8898
- slots: [''],
8899
- wrappedEleName: 'vaadin-dialog',
8900
- style: () => ``,
8901
- excludeAttrsSync: ['tabindex', 'opened'],
8902
- componentName: componentName$2,
8903
- })
8904
- );
8763
+ success: {
8764
+ [vars$j.textColor]: globalRefs$c.colors.success.main,
8765
+ },
8766
+ },
8905
8767
 
8906
- const globalRefs$4 = getThemeRefs(globals);
8768
+ textAlign: {
8769
+ right: { [vars$j.textAlign]: 'right' },
8770
+ left: { [vars$j.textAlign]: 'left' },
8771
+ center: { [vars$j.textAlign]: 'center' },
8772
+ },
8907
8773
 
8908
- const compVars = ModalClass.cssVarList;
8774
+ _fullWidth: {
8775
+ [vars$j.hostWidth]: '100%',
8776
+ },
8909
8777
 
8910
- const modal = {
8911
- [compVars.overlayBackgroundColor]: globalRefs$4.colors.surface.light,
8912
- [compVars.overlayShadow]: 'none',
8913
- [compVars.overlayWidth]: '700px',
8914
- };
8778
+ _italic: {
8779
+ [vars$j.fontStyle]: 'italic',
8780
+ },
8781
+
8782
+ _uppercase: {
8783
+ [vars$j.textTransform]: 'uppercase',
8784
+ },
8915
8785
 
8916
- const vars$5 = {
8917
- ...compVars,
8786
+ _lowercase: {
8787
+ [vars$j.textTransform]: 'lowercase',
8788
+ },
8918
8789
  };
8919
8790
 
8920
- var modal$1 = /*#__PURE__*/Object.freeze({
8791
+ var text$1 = /*#__PURE__*/Object.freeze({
8921
8792
  __proto__: null,
8922
- default: modal,
8923
- vars: vars$5
8793
+ default: text,
8794
+ vars: vars$j
8924
8795
  });
8925
8796
 
8926
- const globalRefs$3 = getThemeRefs(globals);
8927
- const vars$4 = GridClass.cssVarList;
8928
-
8929
- const grid = {
8930
- [vars$4.hostWidth]: '100%',
8931
- [vars$4.hostHeight]: '100%',
8932
- [vars$4.hostMinHeight]: '400px',
8933
- [vars$4.backgroundColor]: globalRefs$3.colors.surface.light,
8934
-
8935
- [vars$4.fontSize]: refs.fontSize,
8936
- [vars$4.fontFamily]: refs.fontFamily,
8797
+ const globalRefs$b = getThemeRefs(globals);
8798
+ const vars$i = LinkClass.cssVarList;
8937
8799
 
8938
- [vars$4.sortIndicatorsColor]: globalRefs$3.colors.surface.main,
8939
- [vars$4.activeSortIndicator]: globalRefs$3.colors.surface.dark,
8940
- [vars$4.resizeHandleColor]: globalRefs$3.colors.surface.main,
8800
+ const link = {
8801
+ [vars$i.hostDirection]: globalRefs$b.direction,
8802
+ [vars$i.cursor]: 'pointer',
8941
8803
 
8942
- [vars$4.inputBorderWidth]: refs.borderWidth,
8943
- [vars$4.inputBorderStyle]: refs.borderStyle,
8944
- [vars$4.inputBorderRadius]: refs.borderRadius,
8945
- [vars$4.inputBorderColor]: 'transparent',
8804
+ [vars$i.textColor]: globalRefs$b.colors.primary.main,
8946
8805
 
8947
- [vars$4.headerRowTextColor]: globalRefs$3.colors.surface.dark,
8948
- [vars$4.separatorColor]: globalRefs$3.colors.surface.main,
8806
+ textAlign: {
8807
+ right: { [vars$i.textAlign]: 'right' },
8808
+ left: { [vars$i.textAlign]: 'left' },
8809
+ center: { [vars$i.textAlign]: 'center' },
8810
+ },
8949
8811
 
8950
- [vars$4.valueTextColor]: globalRefs$3.colors.surface.contrast,
8951
- [vars$4.selectedBackgroundColor]: globalRefs$3.colors.primary.contrast,
8812
+ _fullWidth: {
8813
+ [vars$i.hostWidth]: '100%',
8814
+ },
8952
8815
 
8953
- _bordered: {
8954
- [vars$4.inputBorderColor]: refs.borderColor,
8816
+ mode: {
8817
+ primary: {
8818
+ [vars$i.textColor]: globalRefs$b.colors.primary.main,
8819
+ },
8820
+ secondary: {
8821
+ [vars$i.textColor]: globalRefs$b.colors.secondary.main,
8822
+ },
8823
+ error: {
8824
+ [vars$i.textColor]: globalRefs$b.colors.error.main,
8825
+ },
8826
+ success: {
8827
+ [vars$i.textColor]: globalRefs$b.colors.success.main,
8828
+ },
8955
8829
  },
8956
8830
  };
8957
8831
 
8958
- var grid$1 = /*#__PURE__*/Object.freeze({
8832
+ var link$1 = /*#__PURE__*/Object.freeze({
8959
8833
  __proto__: null,
8960
- default: grid,
8961
- grid: grid,
8962
- vars: vars$4
8834
+ default: link,
8835
+ vars: vars$i
8963
8836
  });
8964
8837
 
8965
- const componentName$1 = getComponentName('notification-card');
8838
+ const globalRefs$a = getThemeRefs(globals);
8839
+ const compVars$2 = DividerClass.cssVarList;
8966
8840
 
8967
- const notificationCardMixin = (superclass) =>
8968
- class NotificationCardMixinClass extends superclass {
8969
- close() {
8970
- // if animation is not applied to the element, the node will not be removed
8971
- // from the DOM. We should avoid that. So, if in any case we allow
8972
- // customizing the animation - we should check if animation is applied
8973
- // and if it's not applied - remove the element from the DOM and dispatch
8974
- // `card-closed` event.
8975
- this.baseElement.addEventListener('animationend', () => {
8976
- this.remove();
8977
- this.dispatchEvent(new Event('card-closed'));
8978
- });
8841
+ const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars(
8842
+ {
8843
+ thickness: '2px',
8844
+ spacing: '10px',
8845
+ },
8846
+ componentName$w
8847
+ );
8979
8848
 
8980
- this.setAttribute('opened', 'false');
8981
- }
8849
+ const divider = {
8850
+ ...helperTheme$1,
8982
8851
 
8983
- constructor() {
8984
- super();
8852
+ [compVars$2.hostDirection]: globalRefs$a.direction,
8853
+ [compVars$2.alignItems]: 'center',
8854
+ [compVars$2.flexDirection]: 'row',
8855
+ [compVars$2.alignSelf]: 'stretch',
8856
+ [compVars$2.hostWidth]: '100%',
8857
+ [compVars$2.stripeColor]: globalRefs$a.colors.surface.main,
8858
+ [compVars$2.stripeColorOpacity]: '0.5',
8859
+ [compVars$2.stripeHorizontalThickness]: helperRefs$1.thickness,
8860
+ [compVars$2.labelTextWidth]: 'fit-content',
8861
+ [compVars$2.labelTextMaxWidth]: 'calc(100% - 100px)',
8862
+ [compVars$2.labelTextHorizontalSpacing]: helperRefs$1.spacing,
8863
+ [compVars$2.textAlign]: 'center',
8985
8864
 
8986
- this.baseElement.innerHTML = `
8987
- <div part="root">
8988
- <div part="content">
8989
- <slot></slot>
8990
- </div>
8991
- <div part="close">
8992
- <slot name="close"></slot>
8993
- </div>
8994
- </div>
8995
- `;
8865
+ _vertical: {
8866
+ [compVars$2.minHeight]: '200px',
8867
+ [compVars$2.flexDirection]: 'column',
8868
+ [compVars$2.hostWidth]: 'fit-content',
8869
+ [compVars$2.hostPadding]: `0 calc(${helperRefs$1.thickness} * 3)`,
8870
+ [compVars$2.stripeVerticalThickness]: helperRefs$1.thickness,
8871
+ [compVars$2.labelTextWidth]: 'fit-content',
8872
+ [compVars$2.labelTextMaxWidth]: '100%',
8873
+ [compVars$2.labelTextVerticalSpacing]: helperRefs$1.spacing,
8874
+ },
8875
+ };
8996
8876
 
8997
- this.closeEle = this.shadowRoot.querySelector('[part="close"]');
8998
- }
8877
+ const vars$h = {
8878
+ ...compVars$2,
8879
+ ...helperVars$1,
8880
+ };
8999
8881
 
9000
- init() {
9001
- super.init?.();
8882
+ var divider$1 = /*#__PURE__*/Object.freeze({
8883
+ __proto__: null,
8884
+ default: divider,
8885
+ vars: vars$h
8886
+ });
9002
8887
 
9003
- this.closeEle.onclick = () => {
9004
- this.close();
9005
- };
9006
- }
9007
- };
8888
+ const vars$g = PasscodeClass.cssVarList;
9008
8889
 
9009
- const selectors = {
9010
- content: () => 'vaadin-notification-card::part(content)',
9011
- overlay: () => 'vaadin-notification-card::part(overlay)',
9012
- };
8890
+ const passcode = {
8891
+ [vars$g.hostDirection]: refs.direction,
8892
+ [vars$g.fontFamily]: refs.fontFamily,
8893
+ [vars$g.fontSize]: refs.fontSize,
8894
+ [vars$g.labelTextColor]: refs.labelTextColor,
8895
+ [vars$g.labelRequiredIndicator]: refs.requiredIndicator,
8896
+ [vars$g.errorMessageTextColor]: refs.errorMessageTextColor,
8897
+ [vars$g.digitValueTextColor]: refs.valueTextColor,
8898
+ [vars$g.digitPadding]: '0',
8899
+ [vars$g.digitTextAlign]: 'center',
8900
+ [vars$g.digitSpacing]: '4px',
8901
+ [vars$g.hostWidth]: refs.width,
8902
+ [vars$g.digitOutlineColor]: 'transparent',
8903
+ [vars$g.digitOutlineWidth]: refs.outlineWidth,
8904
+ [vars$g.focusedDigitFieldOutlineColor]: refs.outlineColor,
8905
+ [vars$g.digitSize]: refs.inputHeight,
9013
8906
 
9014
- const NotificationCardClass = compose(
9015
- createStyleMixin({
9016
- mappings: {
9017
- hostMinWidth: { selector: selectors.content, property: 'min-width' },
9018
- fontFamily: {},
9019
- fontSize: {},
9020
- backgroundColor: { selector: selectors.content },
9021
- textColor: { property: 'color' },
9022
- boxShadow: {},
9023
- borderWidth: { selector: selectors.content, property: 'border-width' },
9024
- borderColor: { selector: selectors.content, property: 'border-color' },
9025
- borderStyle: { selector: selectors.content, property: 'border-style' },
9026
- borderRadius: [
9027
- { selector: selectors.content, property: 'border-radius' },
9028
- { selector: selectors.overlay, property: 'border-radius' },
9029
- ],
9030
- verticalPadding: [
9031
- { selector: selectors.content, property: 'padding-top' },
9032
- { selector: selectors.content, property: 'padding-bottom' },
9033
- ],
9034
- horizontalPadding: [
9035
- { selector: selectors.content, property: 'padding-right' },
9036
- { selector: selectors.content, property: 'padding-left' },
9037
- ],
9038
- },
9039
- }),
9040
- notificationCardMixin
9041
- )(
9042
- createProxy({
9043
- slots: [],
9044
- wrappedEleName: 'vaadin-notification-card',
9045
- style: () => `
9046
- vaadin-notification-card {
9047
- box-shadow: none;
9048
- }
9049
- ::part(overlay) {
9050
- box-shadow: none;
9051
- background: none;
9052
- }
8907
+ size: {
8908
+ xs: { [vars$g.spinnerSize]: '15px' },
8909
+ sm: { [vars$g.spinnerSize]: '20px' },
8910
+ md: { [vars$g.spinnerSize]: '20px' },
8911
+ lg: { [vars$g.spinnerSize]: '20px' },
8912
+ },
9053
8913
 
9054
- [part="close"] {
9055
- cursor: pointer;
9056
- display: flex;
9057
- }
8914
+ _hideCursor: {
8915
+ [vars$g.digitCaretTextColor]: 'transparent',
8916
+ },
9058
8917
 
9059
- [part="content"] {
9060
- display: flex;
9061
- align-items: center;
9062
- flex-grow: 1;
9063
- }
8918
+ _loading: {
8919
+ [vars$g.overlayOpacity]: refs.overlayOpacity,
8920
+ },
8921
+ };
9064
8922
 
9065
- [part="root"] {
9066
- display: flex;
9067
- align-items: center;
9068
- justify-content: space-between;
9069
- width: 100%;
9070
- }
9071
- `,
9072
- excludeAttrsSync: ['tabindex'],
9073
- componentName: componentName$1,
9074
- })
9075
- );
8923
+ var passcode$1 = /*#__PURE__*/Object.freeze({
8924
+ __proto__: null,
8925
+ default: passcode,
8926
+ vars: vars$g
8927
+ });
9076
8928
 
9077
- const globalRefs$2 = getThemeRefs(globals);
9078
- const vars$3 = NotificationCardClass.cssVarList;
8929
+ const globalRefs$9 = getThemeRefs(globals);
8930
+ const vars$f = LoaderLinearClass.cssVarList;
8931
+
8932
+ const loaderLinear = {
8933
+ [vars$f.hostDisplay]: 'inline-block',
8934
+ [vars$f.hostWidth]: '100%',
9079
8935
 
9080
- const shadowColor = '#00000020';
8936
+ [vars$f.barColor]: globalRefs$9.colors.surface.contrast,
8937
+ [vars$f.barWidth]: '20%',
9081
8938
 
9082
- const notification = {
9083
- [vars$3.hostMinWidth]: '415px',
9084
- [vars$3.fontFamily]: globalRefs$2.fonts.font1.family,
9085
- [vars$3.fontSize]: globalRefs$2.typography.body1.size,
9086
- [vars$3.backgroundColor]: globalRefs$2.colors.surface.main,
9087
- [vars$3.textColor]: globalRefs$2.colors.surface.contrast,
9088
- [vars$3.boxShadow]: `${globalRefs$2.shadow.wide.xl} ${shadowColor}, ${globalRefs$2.shadow.narrow.xl} ${shadowColor}`,
9089
- [vars$3.verticalPadding]: '0.625em',
9090
- [vars$3.horizontalPadding]: '1.5em',
9091
- [vars$3.borderRadius]: globalRefs$2.radius.xs,
8939
+ [vars$f.barBackgroundColor]: globalRefs$9.colors.surface.main,
8940
+ [vars$f.barBorderRadius]: '4px',
9092
8941
 
9093
- _bordered: {
9094
- [vars$3.borderWidth]: globalRefs$2.border.sm,
9095
- [vars$3.borderStyle]: 'solid',
9096
- [vars$3.borderColor]: 'transparent',
9097
- },
8942
+ [vars$f.animationDuration]: '2s',
8943
+ [vars$f.animationTimingFunction]: 'linear',
8944
+ [vars$f.animationIterationCount]: 'infinite',
8945
+ [vars$f.verticalPadding]: '0.25em',
9098
8946
 
9099
8947
  size: {
9100
- xs: { [vars$3.fontSize]: '12px' },
9101
- sm: { [vars$3.fontSize]: '14px' },
9102
- md: { [vars$3.fontSize]: '16px' },
9103
- lg: { [vars$3.fontSize]: '18px' },
8948
+ xs: { [vars$f.barHeight]: '2px' },
8949
+ sm: { [vars$f.barHeight]: '4px' },
8950
+ md: { [vars$f.barHeight]: '6px' },
8951
+ lg: { [vars$f.barHeight]: '8px' },
9104
8952
  },
9105
8953
 
9106
8954
  mode: {
9107
8955
  primary: {
9108
- [vars$3.backgroundColor]: globalRefs$2.colors.primary.main,
9109
- [vars$3.textColor]: globalRefs$2.colors.primary.contrast,
9110
- [vars$3.borderColor]: globalRefs$2.colors.primary.light,
8956
+ [vars$f.barColor]: globalRefs$9.colors.primary.main,
9111
8957
  },
9112
- success: {
9113
- [vars$3.backgroundColor]: globalRefs$2.colors.success.main,
9114
- [vars$3.textColor]: globalRefs$2.colors.success.contrast,
9115
- [vars$3.borderColor]: globalRefs$2.colors.success.light,
8958
+ secondary: {
8959
+ [vars$f.barColor]: globalRefs$9.colors.secondary.main,
9116
8960
  },
9117
- error: {
9118
- [vars$3.backgroundColor]: globalRefs$2.colors.error.main,
9119
- [vars$3.textColor]: globalRefs$2.colors.error.contrast,
9120
- [vars$3.borderColor]: globalRefs$2.colors.error.light,
8961
+ },
8962
+
8963
+ _hidden: {
8964
+ [vars$f.hostDisplay]: 'none',
8965
+ },
8966
+ };
8967
+
8968
+ var loaderLinear$1 = /*#__PURE__*/Object.freeze({
8969
+ __proto__: null,
8970
+ default: loaderLinear,
8971
+ vars: vars$f
8972
+ });
8973
+
8974
+ const globalRefs$8 = getThemeRefs(globals);
8975
+ const compVars$1 = LoaderRadialClass.cssVarList;
8976
+
8977
+ const [helperTheme, helperRefs, helperVars] = createHelperVars(
8978
+ {
8979
+ spinnerColor: globalRefs$8.colors.surface.contrast,
8980
+ mode: {
8981
+ primary: {
8982
+ spinnerColor: globalRefs$8.colors.primary.main,
8983
+ },
8984
+ secondary: {
8985
+ spinnerColor: globalRefs$8.colors.secondary.main,
8986
+ },
9121
8987
  },
9122
8988
  },
8989
+ componentName$z
8990
+ );
8991
+
8992
+ const loaderRadial = {
8993
+ ...helperTheme,
8994
+
8995
+ [compVars$1.animationDuration]: '2s',
8996
+ [compVars$1.animationTimingFunction]: 'linear',
8997
+ [compVars$1.animationIterationCount]: 'infinite',
8998
+ [compVars$1.spinnerBorderStyle]: 'solid',
8999
+ [compVars$1.spinnerBorderWidth]: '0.2em',
9000
+ [compVars$1.spinnerBorderRadius]: '50%',
9001
+ [compVars$1.spinnerQuadrant1Color]: helperRefs.spinnerColor,
9002
+ [compVars$1.spinnerQuadrant2Color]: 'transparent',
9003
+ [compVars$1.spinnerQuadrant3Color]: helperRefs.spinnerColor,
9004
+ [compVars$1.spinnerQuadrant4Color]: 'transparent',
9005
+
9006
+ size: {
9007
+ xs: { [compVars$1.spinnerSize]: '20px' },
9008
+ sm: { [compVars$1.spinnerSize]: '30px' },
9009
+ md: { [compVars$1.spinnerSize]: '40px' },
9010
+ lg: { [compVars$1.spinnerSize]: '60px' },
9011
+ xl: { [compVars$1.spinnerSize]: '80px' },
9012
+ },
9013
+
9014
+ _hidden: {
9015
+ [compVars$1.hostDisplay]: 'none',
9016
+ },
9017
+ };
9018
+ const vars$e = {
9019
+ ...compVars$1,
9020
+ ...helperVars,
9123
9021
  };
9124
9022
 
9125
- var notificationCard = /*#__PURE__*/Object.freeze({
9023
+ var loaderRadial$1 = /*#__PURE__*/Object.freeze({
9126
9024
  __proto__: null,
9127
- default: notification,
9128
- vars: vars$3
9025
+ default: loaderRadial,
9026
+ vars: vars$e
9129
9027
  });
9130
9028
 
9131
- const componentName = getComponentName('multi-select-combo-box');
9029
+ const globalRefs$7 = getThemeRefs(globals);
9030
+ const vars$d = ComboBoxClass.cssVarList;
9132
9031
 
9133
- const MultiSelectComboBoxMixin = (superclass) =>
9134
- class MultiSelectComboBoxMixinClass extends superclass {
9135
- // eslint-disable-next-line class-methods-use-this
9136
- #renderItem = ({ displayName, value, label }) => {
9137
- return `<span data-name="${label}" data-id="${value}">${displayName || label}</span>`;
9138
- };
9032
+ const comboBox = {
9033
+ [vars$d.hostWidth]: refs.width,
9034
+ [vars$d.hostDirection]: refs.direction,
9035
+ [vars$d.fontSize]: refs.fontSize,
9036
+ [vars$d.fontFamily]: refs.fontFamily,
9037
+ [vars$d.labelTextColor]: refs.labelTextColor,
9038
+ [vars$d.errorMessageTextColor]: refs.errorMessageTextColor,
9039
+ [vars$d.inputBorderColor]: refs.borderColor,
9040
+ [vars$d.inputBorderWidth]: refs.borderWidth,
9041
+ [vars$d.inputBorderStyle]: refs.borderStyle,
9042
+ [vars$d.inputBorderRadius]: refs.borderRadius,
9043
+ [vars$d.inputOutlineColor]: refs.outlineColor,
9044
+ [vars$d.inputOutlineOffset]: refs.outlineOffset,
9045
+ [vars$d.inputOutlineWidth]: refs.outlineWidth,
9046
+ [vars$d.inputOutlineStyle]: refs.outlineStyle,
9047
+ [vars$d.labelRequiredIndicator]: refs.requiredIndicator,
9048
+ [vars$d.inputValueTextColor]: refs.valueTextColor,
9049
+ [vars$d.inputPlaceholderTextColor]: refs.placeholderTextColor,
9050
+ [vars$d.inputBackgroundColor]: refs.backgroundColor,
9051
+ [vars$d.inputHorizontalPadding]: refs.horizontalPadding,
9052
+ [vars$d.inputHeight]: refs.inputHeight,
9053
+ [vars$d.inputDropdownButtonColor]: globalRefs$7.colors.surface.contrast,
9054
+ [vars$d.inputDropdownButtonCursor]: 'pointer',
9055
+ [vars$d.inputDropdownButtonSize]: refs.toggleButtonSize,
9056
+ [vars$d.inputDropdownButtonOffset]: globalRefs$7.spacing.xs,
9057
+ [vars$d.overlayItemPaddingInlineStart]: globalRefs$7.spacing.xs,
9058
+ [vars$d.overlayItemPaddingInlineEnd]: globalRefs$7.spacing.lg,
9139
9059
 
9140
- #data;
9060
+ _readonly: {
9061
+ [vars$d.inputDropdownButtonCursor]: 'default',
9062
+ },
9141
9063
 
9142
- get defaultValues() {
9143
- const defaultValuesAttr = this.getAttribute('default-values');
9144
- if (defaultValuesAttr) {
9145
- try {
9146
- const defaultValues = JSON.parse(defaultValuesAttr);
9147
- if (this.isValidDataType(defaultValues)) {
9148
- return defaultValues;
9149
- }
9150
- } catch (e) {
9151
- // eslint-disable-next-line no-console
9152
- console.error('could not parse data string from attribute "default-values" -', e.message);
9153
- }
9154
- }
9155
- return [];
9156
- }
9064
+ // Overlay theme exposed via the component:
9065
+ [vars$d.overlayFontSize]: refs.fontSize,
9066
+ [vars$d.overlayFontFamily]: refs.fontFamily,
9067
+ [vars$d.overlayCursor]: 'pointer',
9068
+ [vars$d.overlayItemBoxShadow]: 'none',
9157
9069
 
9158
- get renderItem() {
9159
- return this.#renderItem;
9160
- }
9070
+ // Overlay direct theme:
9071
+ [vars$d.overlay.minHeight]: '400px',
9072
+ [vars$d.overlay.margin]: '0',
9073
+ };
9161
9074
 
9162
- set renderItem(renderFn) {
9163
- this.#renderItem = renderFn;
9164
- this.renderItems();
9165
- }
9075
+ var comboBox$1 = /*#__PURE__*/Object.freeze({
9076
+ __proto__: null,
9077
+ comboBox: comboBox,
9078
+ default: comboBox,
9079
+ vars: vars$d
9080
+ });
9081
+
9082
+ const vars$c = ImageClass.cssVarList;
9083
+
9084
+ const image = {};
9085
+
9086
+ var image$1 = /*#__PURE__*/Object.freeze({
9087
+ __proto__: null,
9088
+ default: image,
9089
+ vars: vars$c
9090
+ });
9091
+
9092
+ const vars$b = PhoneFieldClass.cssVarList;
9093
+
9094
+ const phoneField = {
9095
+ [vars$b.hostWidth]: refs.width,
9096
+ [vars$b.hostDirection]: refs.direction,
9097
+ [vars$b.fontSize]: refs.fontSize,
9098
+ [vars$b.fontFamily]: refs.fontFamily,
9099
+ [vars$b.labelTextColor]: refs.labelTextColor,
9100
+ [vars$b.labelRequiredIndicator]: refs.requiredIndicator,
9101
+ [vars$b.errorMessageTextColor]: refs.errorMessageTextColor,
9102
+ [vars$b.inputValueTextColor]: refs.valueTextColor,
9103
+ [vars$b.inputPlaceholderTextColor]: refs.placeholderTextColor,
9104
+ [vars$b.inputBorderStyle]: refs.borderStyle,
9105
+ [vars$b.inputBorderWidth]: refs.borderWidth,
9106
+ [vars$b.inputBorderColor]: refs.borderColor,
9107
+ [vars$b.inputBorderRadius]: refs.borderRadius,
9108
+ [vars$b.inputOutlineStyle]: refs.outlineStyle,
9109
+ [vars$b.inputOutlineWidth]: refs.outlineWidth,
9110
+ [vars$b.inputOutlineColor]: refs.outlineColor,
9111
+ [vars$b.inputOutlineOffset]: refs.outlineOffset,
9112
+ [vars$b.phoneInputWidth]: refs.minWidth,
9113
+ [vars$b.countryCodeInputWidth]: '5em',
9114
+ [vars$b.countryCodeDropdownWidth]: '20em',
9115
+
9116
+ // '@overlay': {
9117
+ // overlayItemBackgroundColor: 'red'
9118
+ // }
9119
+ };
9120
+
9121
+ var phoneField$1 = /*#__PURE__*/Object.freeze({
9122
+ __proto__: null,
9123
+ default: phoneField,
9124
+ vars: vars$b
9125
+ });
9126
+
9127
+ const vars$a = PhoneFieldInputBoxClass.cssVarList;
9128
+
9129
+ const phoneInputBoxField = {
9130
+ [vars$a.hostWidth]: '16em',
9131
+ [vars$a.hostMinWidth]: refs.minWidth,
9132
+ [vars$a.hostDirection]: refs.direction,
9133
+ [vars$a.fontSize]: refs.fontSize,
9134
+ [vars$a.fontFamily]: refs.fontFamily,
9135
+ [vars$a.labelTextColor]: refs.labelTextColor,
9136
+ [vars$a.labelRequiredIndicator]: refs.requiredIndicator,
9137
+ [vars$a.errorMessageTextColor]: refs.errorMessageTextColor,
9138
+ [vars$a.inputValueTextColor]: refs.valueTextColor,
9139
+ [vars$a.inputPlaceholderTextColor]: refs.placeholderTextColor,
9140
+ [vars$a.inputBorderStyle]: refs.borderStyle,
9141
+ [vars$a.inputBorderWidth]: refs.borderWidth,
9142
+ [vars$a.inputBorderColor]: refs.borderColor,
9143
+ [vars$a.inputBorderRadius]: refs.borderRadius,
9144
+ [vars$a.inputOutlineStyle]: refs.outlineStyle,
9145
+ [vars$a.inputOutlineWidth]: refs.outlineWidth,
9146
+ [vars$a.inputOutlineColor]: refs.outlineColor,
9147
+ [vars$a.inputOutlineOffset]: refs.outlineOffset,
9148
+ _fullWidth: {
9149
+ [vars$a.hostWidth]: refs.width,
9150
+ },
9151
+ };
9166
9152
 
9167
- get data() {
9168
- if (this.#data) return this.#data;
9153
+ var phoneInputBoxField$1 = /*#__PURE__*/Object.freeze({
9154
+ __proto__: null,
9155
+ default: phoneInputBoxField,
9156
+ vars: vars$a
9157
+ });
9169
9158
 
9170
- const dataAttr = this.getAttribute('data');
9159
+ const vars$9 = NewPasswordClass.cssVarList;
9171
9160
 
9172
- if (dataAttr) {
9173
- try {
9174
- const data = JSON.parse(dataAttr);
9175
- if (this.isValidDataType(data)) {
9176
- return data;
9177
- }
9178
- } catch (e) {
9179
- // eslint-disable-next-line no-console
9180
- console.error('could not parse data string from attribute "data" -', e.message);
9181
- }
9182
- }
9161
+ const newPassword = {
9162
+ [vars$9.hostWidth]: refs.width,
9163
+ [vars$9.hostMinWidth]: refs.minWidth,
9164
+ [vars$9.hostDirection]: refs.direction,
9165
+ [vars$9.fontSize]: refs.fontSize,
9166
+ [vars$9.fontFamily]: refs.fontFamily,
9167
+ [vars$9.spaceBetweenInputs]: '1em',
9168
+ [vars$9.errorMessageTextColor]: refs.errorMessageTextColor,
9183
9169
 
9184
- return [];
9185
- }
9170
+ _required: {
9171
+ // NewPassword doesn't pass `required` attribute to its Password components.
9172
+ // That's why we fake the required indicator on each input.
9173
+ // We do that by injecting `::after` element, and populating it with requiredIndicator content.
9174
+ [vars$9.inputsRequiredIndicator]: refs.requiredIndicator, // used to populate required content for NewPassword input fields outside the theme
9175
+ },
9176
+ };
9186
9177
 
9187
- set data(data) {
9188
- if (this.isValidDataType(data)) {
9189
- this.#data = data;
9190
- this.renderItems();
9191
- }
9192
- }
9178
+ var newPassword$1 = /*#__PURE__*/Object.freeze({
9179
+ __proto__: null,
9180
+ default: newPassword,
9181
+ vars: vars$9
9182
+ });
9193
9183
 
9194
- get allowCustomValue() {
9195
- return this.getAttribute('allow-custom-value') === 'true';
9196
- }
9184
+ const vars$8 = UploadFileClass.cssVarList;
9197
9185
 
9198
- get minItemsSelection() {
9199
- return parseInt(this.getAttribute('min-items-selection'), 10) || 0;
9200
- }
9186
+ const uploadFile = {
9187
+ [vars$8.hostDirection]: refs.direction,
9188
+ [vars$8.labelTextColor]: refs.labelTextColor,
9189
+ [vars$8.fontFamily]: refs.fontFamily,
9201
9190
 
9202
- get maxItemsSelection() {
9203
- return parseInt(this.getAttribute('max-items-selection'), 10) || 0;
9204
- }
9191
+ [vars$8.iconSize]: '2em',
9205
9192
 
9206
- // eslint-disable-next-line class-methods-use-this
9207
- isValidDataType(data) {
9208
- const isValid = Array.isArray(data);
9209
- if (!isValid) {
9210
- // eslint-disable-next-line no-console
9211
- console.error('data and default-values must be an array, received:', data);
9212
- }
9193
+ [vars$8.hostPadding]: '0.75em',
9194
+ [vars$8.gap]: '0.5em',
9213
9195
 
9214
- return isValid;
9215
- }
9196
+ [vars$8.fontSize]: '16px',
9197
+ [vars$8.titleFontWeight]: '500',
9198
+ [vars$8.lineHeight]: '1em',
9216
9199
 
9217
- getItemsTemplate() {
9218
- return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');
9219
- }
9200
+ [vars$8.borderWidth]: refs.borderWidth,
9201
+ [vars$8.borderColor]: refs.borderColor,
9202
+ [vars$8.borderRadius]: refs.borderRadius,
9203
+ [vars$8.borderStyle]: 'dashed',
9220
9204
 
9221
- renderItems() {
9222
- const template = this.getItemsTemplate();
9223
- if (template) this.innerHTML = template;
9224
- }
9205
+ _required: {
9206
+ [vars$8.requiredIndicator]: refs.requiredIndicator,
9207
+ },
9225
9208
 
9226
- handleSelectedItems() {
9227
- const currentSelected =
9228
- this.baseElement.selectedItems?.map((item) => item.getAttribute('data-id')) || [];
9209
+ size: {
9210
+ xs: {
9211
+ [vars$8.hostHeight]: '196px',
9212
+ [vars$8.hostWidth]: '200px',
9213
+ [vars$8.titleFontSize]: '0.875em',
9214
+ [vars$8.descriptionFontSize]: '0.875em',
9215
+ [vars$8.lineHeight]: '1.25em',
9216
+ },
9217
+ sm: {
9218
+ [vars$8.hostHeight]: '216px',
9219
+ [vars$8.hostWidth]: '230px',
9220
+ [vars$8.titleFontSize]: '1em',
9221
+ [vars$8.descriptionFontSize]: '0.875em',
9222
+ [vars$8.lineHeight]: '1.25em',
9223
+ },
9224
+ md: {
9225
+ [vars$8.hostHeight]: '256px',
9226
+ [vars$8.hostWidth]: '312px',
9227
+ [vars$8.titleFontSize]: '1.125em',
9228
+ [vars$8.descriptionFontSize]: '1em',
9229
+ [vars$8.lineHeight]: '1.5em',
9230
+ },
9231
+ lg: {
9232
+ [vars$8.hostHeight]: '280px',
9233
+ [vars$8.hostWidth]: '336px',
9234
+ [vars$8.titleFontSize]: '1.125em',
9235
+ [vars$8.descriptionFontSize]: '1.125em',
9236
+ [vars$8.lineHeight]: '1.75em',
9237
+ },
9238
+ },
9229
9239
 
9230
- this.baseElement.selectedItems = [];
9240
+ _fullWidth: {
9241
+ [vars$8.hostWidth]: refs.width,
9242
+ },
9243
+ };
9231
9244
 
9232
- // if previously selected item ID exists in current children, set it as selected
9233
- if (currentSelected.length > 0) {
9234
- this.value = currentSelected;
9235
- }
9245
+ var uploadFile$1 = /*#__PURE__*/Object.freeze({
9246
+ __proto__: null,
9247
+ default: uploadFile,
9248
+ vars: vars$8
9249
+ });
9236
9250
 
9237
- // otherwise, if default value is specified, set default value as selected item
9238
- if (this.value.length === 0) {
9239
- this.setDefaultValues();
9240
- }
9241
- }
9251
+ const globalRefs$6 = getThemeRefs(globals);
9242
9252
 
9243
- // eslint-disable-next-line class-methods-use-this
9244
- customValueTransformFn(val) {
9245
- return val;
9246
- }
9253
+ const vars$7 = ButtonSelectionGroupItemClass.cssVarList;
9247
9254
 
9248
- // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the
9249
- // field that it searches the value, and the finaly display value of the input.
9250
- // We provide a custom transform function to override that behavior.
9251
- setComboBoxDescriptor() {
9252
- const valueDescriptor = Object.getOwnPropertyDescriptor(
9253
- this.inputElement.constructor.prototype,
9254
- 'value'
9255
- );
9255
+ const buttonSelectionGroupItem = {
9256
+ [vars$7.hostDirection]: 'inherit',
9257
+ [vars$7.backgroundColor]: globalRefs$6.colors.surface.light,
9258
+ [vars$7.labelTextColor]: globalRefs$6.colors.surface.contrast,
9259
+ [vars$7.borderColor]: globalRefs$6.colors.surface.main,
9260
+ [vars$7.borderStyle]: 'solid',
9261
+ [vars$7.borderRadius]: globalRefs$6.radius.sm,
9256
9262
 
9257
- const comboBox = this;
9263
+ _hover: {
9264
+ [vars$7.backgroundColor]: '#f4f5f5', // can we take it from the palette?
9265
+ },
9258
9266
 
9259
- Object.defineProperties(this.inputElement, {
9260
- value: {
9261
- ...valueDescriptor,
9262
- set(val) {
9263
- const transformedValue = comboBox.customValueTransformFn(val) || '';
9267
+ _selected: {
9268
+ [vars$7.borderColor]: globalRefs$6.colors.surface.contrast,
9269
+ [vars$7.backgroundColor]: globalRefs$6.colors.surface.contrast,
9270
+ [vars$7.labelTextColor]: globalRefs$6.colors.surface.light,
9271
+ },
9272
+ };
9264
9273
 
9265
- if (transformedValue === this.value) {
9266
- return;
9267
- }
9274
+ var buttonSelectionGroupItem$1 = /*#__PURE__*/Object.freeze({
9275
+ __proto__: null,
9276
+ default: buttonSelectionGroupItem,
9277
+ vars: vars$7
9278
+ });
9268
9279
 
9269
- valueDescriptor.set.call(this, transformedValue);
9270
- },
9271
- },
9272
- });
9273
- }
9280
+ const globalRefs$5 = getThemeRefs(globals);
9281
+ const vars$6 = ButtonSelectionGroupClass.cssVarList;
9274
9282
 
9275
- // vaadin api is to set props on their combo box node,
9276
- // in order to avoid it, we are passing the children of this component
9277
- // to the items & renderer props, so it will be used as the combo box items
9278
- #onChildrenChange() {
9279
- const items = Array.from(this.children);
9283
+ const buttonSelectionGroup = {
9284
+ [vars$6.hostDirection]: refs.direction,
9285
+ [vars$6.fontFamily]: refs.fontFamily,
9286
+ [vars$6.labelTextColor]: refs.labelTextColor,
9287
+ [vars$6.labelRequiredIndicator]: refs.requiredIndicator,
9288
+ [vars$6.errorMessageTextColor]: refs.errorMessageTextColor,
9289
+ [vars$6.itemsSpacing]: globalRefs$5.spacing.sm,
9290
+ [vars$6.hostWidth]: refs.width,
9291
+ };
9280
9292
 
9281
- // we want the data-name attribute to be accessible as an object attribute
9282
- if (items.length) {
9283
- this.removeAttribute('has-no-options');
9293
+ var buttonSelectionGroup$1 = /*#__PURE__*/Object.freeze({
9294
+ __proto__: null,
9295
+ default: buttonSelectionGroup,
9296
+ vars: vars$6
9297
+ });
9284
9298
 
9285
- items.forEach((node) => {
9286
- Object.defineProperty(node, 'data-name', {
9287
- value: node.getAttribute('data-name'),
9288
- configurable: true,
9289
- writable: true,
9290
- });
9291
- Object.defineProperty(node, 'data-id', {
9292
- value: node.getAttribute('data-id'),
9293
- configurable: true,
9294
- writable: true,
9295
- });
9296
- });
9299
+ const componentName$1 = getComponentName('modal');
9297
9300
 
9298
- this.baseElement.items = items;
9301
+ const customMixin = (superclass) =>
9302
+ class ModalMixinClass extends superclass {
9303
+ get opened() {
9304
+ return this.getAttribute('opened') === 'true';
9305
+ }
9299
9306
 
9300
- setTimeout(() => {
9301
- // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden
9302
- this.handleSelectedItems();
9303
- }, 0);
9307
+ handleOpened() {
9308
+ forwardAttrs(this, this.baseElement, { includeAttrs: ['opened'] });
9309
+ if (this.opened) {
9310
+ this.style.display = '';
9304
9311
  } else {
9305
- this.baseElement.items = [];
9306
- this.setAttribute('has-no-options', '');
9312
+ this.style.display = 'none';
9307
9313
  }
9314
+ }
9315
+
9316
+ init() {
9317
+ super.init?.();
9318
+ this.style.display = 'none';
9319
+
9320
+ // vaadin-dialog might not be loaded in time
9321
+ // in order to make sure it's loaded before this block is running
9322
+ // we are wrapping it with setTimeout
9323
+ setTimeout(() => {
9324
+ // we want to sync descope-modal content through vaadin-dialog into the overlay
9325
+ // so we are adding a slot to the overlay, which allows us to forward the content from
9326
+ // vaadin-dialog to vaadin-dialog-overlay
9327
+ this.baseElement.shadowRoot
9328
+ .querySelector('vaadin-dialog-overlay')
9329
+ .appendChild(document.createElement('slot'));
9308
9330
 
9309
- // use vaadin combobox custom renderer to render options as HTML
9310
- // and not via default renderer, which renders only the data-name's value
9311
- // in its own HTML template
9312
- this.baseElement.renderer = (root, combo, model) => {
9313
- // eslint-disable-next-line no-param-reassign
9314
- root.innerHTML = model.item.outerHTML;
9315
- };
9331
+ this.#overrideOverlaySettings();
9332
+
9333
+ // we need to always open the modal in `opened=false`
9334
+ // to prevent it from rendering outside the dialog
9335
+ // first, we have to run `overrideOverlaySettings` to setup
9336
+ // the component.
9337
+ this.handleOpened();
9338
+ });
9316
9339
  }
9317
9340
 
9318
9341
  // the default vaadin behavior is to attach the overlay to the body when opened
9319
9342
  // we do not want that because it's difficult to style the overlay in this way
9320
9343
  // so we override it to open inside the shadow DOM
9321
9344
  #overrideOverlaySettings() {
9322
- const overlay = this.baseElement.shadowRoot
9323
- .querySelector('vaadin-multi-select-combo-box-internal')
9324
- .shadowRoot.querySelector('vaadin-multi-select-combo-box-overlay');
9345
+ const overlay = this.baseElement.shadowRoot.querySelector('vaadin-dialog-overlay');
9346
+
9325
9347
  overlay._attachOverlay = () => {
9326
9348
  overlay.bringToFront();
9349
+ this.baseElement.setAttribute('style', 'display:flex!important;');
9350
+ };
9351
+ overlay._detachOverlay = () => {
9352
+ this.baseElement.style.display = 'none';
9327
9353
  };
9328
- overlay._detachOverlay = () => {};
9329
9354
  overlay._enterModalState = () => {};
9330
- }
9331
9355
 
9332
- #handleCustomValues() {
9333
- if (this.allowCustomValue) {
9334
- this.baseElement.addEventListener('custom-value-set', (e) => {
9335
- const newItemHtml = this.#renderItem({
9336
- label: e.detail,
9337
- displayName: e.detail,
9338
- value: e.detail,
9339
- });
9340
- this.innerHTML += newItemHtml;
9341
- // The value needs to be set with a timeout because it needs to execute after
9342
- // the custom value is added to items by the children change observer
9343
- setTimeout(() => {
9344
- this.value = [...this.value, e.detail];
9345
- }, 0);
9346
- });
9347
- }
9356
+ overlay.close = () => false;
9348
9357
  }
9358
+ };
9349
9359
 
9350
- setGetValidity() {
9351
- // eslint-disable-next-line func-names
9352
- this.getValidity = function () {
9353
- if (this.isRequired && !this.value.length) {
9354
- return {
9355
- valueMissing: true,
9356
- };
9357
- }
9358
- // If the field is not required, no minimum selection can be set
9359
- if (
9360
- this.isRequired &&
9361
- this.minItemsSelection &&
9362
- this.value.length < this.minItemsSelection
9363
- ) {
9364
- return {
9365
- rangeUnderflow: true,
9366
- };
9367
- }
9368
- if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {
9369
- return {
9370
- rangeOverflow: true,
9371
- };
9372
- }
9373
- return {};
9374
- };
9375
- }
9360
+ const ModalClass = compose(
9361
+ createStyleMixin({
9362
+ mappings: {
9363
+ overlayBackgroundColor: { property: () => ModalClass.cssVarList.overlay.backgroundColor },
9364
+ overlayShadow: { property: () => ModalClass.cssVarList.overlay.shadow },
9365
+ overlayWidth: { property: () => ModalClass.cssVarList.overlay.width },
9366
+ },
9367
+ }),
9368
+ portalMixin({
9369
+ name: 'overlay',
9370
+ selector: '',
9371
+ mappings: {
9372
+ hostDisplay: {
9373
+ selector: () => ':host(.descope-modal)',
9374
+ property: 'display',
9375
+ important: true,
9376
+ },
9377
+ backgroundColor: [
9378
+ { selector: () => '::part(content)', property: 'background-color' },
9379
+ { selector: () => '::part(overlay)', property: 'background-color' },
9380
+ ],
9381
+ width: { selector: () => '::part(overlay)', property: 'width' },
9382
+ shadow: { selector: () => '::part(overlay)', property: 'box-shadow' },
9383
+ },
9384
+ forward: {
9385
+ include: false,
9386
+ attributes: ['opened'],
9387
+ },
9388
+ }),
9389
+ draggableMixin,
9390
+ componentNameValidationMixin,
9391
+ customMixin
9392
+ )(
9393
+ createProxy({
9394
+ slots: [''],
9395
+ wrappedEleName: 'vaadin-dialog',
9396
+ style: () => ``,
9397
+ excludeAttrsSync: ['tabindex', 'opened'],
9398
+ componentName: componentName$1,
9399
+ })
9400
+ );
9376
9401
 
9377
- init() {
9378
- super.init?.();
9402
+ const globalRefs$4 = getThemeRefs(globals);
9379
9403
 
9380
- this.setGetValidity();
9404
+ const compVars = ModalClass.cssVarList;
9381
9405
 
9382
- this.setComboBoxDescriptor();
9406
+ const modal = {
9407
+ [compVars.overlayBackgroundColor]: globalRefs$4.colors.surface.light,
9408
+ [compVars.overlayShadow]: 'none',
9409
+ [compVars.overlayWidth]: '700px',
9410
+ };
9383
9411
 
9384
- this.#overrideOverlaySettings();
9412
+ const vars$5 = {
9413
+ ...compVars,
9414
+ };
9385
9415
 
9386
- this.#handleCustomValues();
9416
+ var modal$1 = /*#__PURE__*/Object.freeze({
9417
+ __proto__: null,
9418
+ default: modal,
9419
+ vars: vars$5
9420
+ });
9387
9421
 
9388
- this.renderItems();
9422
+ const globalRefs$3 = getThemeRefs(globals);
9423
+ const vars$4 = GridClass.cssVarList;
9389
9424
 
9390
- observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });
9425
+ const grid = {
9426
+ [vars$4.hostWidth]: '100%',
9427
+ [vars$4.hostHeight]: '100%',
9428
+ [vars$4.hostMinHeight]: '400px',
9429
+ [vars$4.backgroundColor]: globalRefs$3.colors.surface.light,
9391
9430
 
9392
- observeChildren(this, this.#onChildrenChange.bind(this));
9431
+ [vars$4.fontSize]: refs.fontSize,
9432
+ [vars$4.fontFamily]: refs.fontFamily,
9393
9433
 
9394
- // Note: we need to forward the `placeholder` because the vaadin component observes it and
9395
- // tries to override it, causing us to lose the user set placeholder.
9396
- forwardAttrs(this, this.baseElement, { includeAttrs: ['placeholder'] });
9434
+ [vars$4.sortIndicatorsColor]: globalRefs$3.colors.surface.main,
9435
+ [vars$4.activeSortIndicator]: globalRefs$3.colors.surface.dark,
9436
+ [vars$4.resizeHandleColor]: globalRefs$3.colors.surface.main,
9397
9437
 
9398
- this.setDefaultValues();
9399
- }
9438
+ [vars$4.inputBorderWidth]: refs.borderWidth,
9439
+ [vars$4.inputBorderStyle]: refs.borderStyle,
9440
+ [vars$4.inputBorderRadius]: refs.borderRadius,
9441
+ [vars$4.inputBorderColor]: 'transparent',
9400
9442
 
9401
- setDefaultValues() {
9402
- this.value = this.defaultValues;
9403
- }
9443
+ [vars$4.headerRowTextColor]: globalRefs$3.colors.surface.dark,
9444
+ [vars$4.separatorColor]: globalRefs$3.colors.surface.main,
9404
9445
 
9405
- set value(vals) {
9406
- if (vals && vals.length > 0) {
9407
- const children = this.baseElement.items?.filter((item) => vals.includes(item['data-id']));
9446
+ [vars$4.valueTextColor]: globalRefs$3.colors.surface.contrast,
9447
+ [vars$4.selectedBackgroundColor]: globalRefs$3.colors.primary.contrast,
9408
9448
 
9409
- if (children?.length > 0) {
9410
- this.baseElement.selectedItems = children;
9411
- }
9412
- } else {
9413
- this.baseElement.selectedItems = [];
9414
- }
9449
+ _bordered: {
9450
+ [vars$4.inputBorderColor]: refs.borderColor,
9451
+ },
9452
+ };
9453
+
9454
+ var grid$1 = /*#__PURE__*/Object.freeze({
9455
+ __proto__: null,
9456
+ default: grid,
9457
+ grid: grid,
9458
+ vars: vars$4
9459
+ });
9460
+
9461
+ const componentName = getComponentName('notification-card');
9462
+
9463
+ const notificationCardMixin = (superclass) =>
9464
+ class NotificationCardMixinClass extends superclass {
9465
+ close() {
9466
+ // if animation is not applied to the element, the node will not be removed
9467
+ // from the DOM. We should avoid that. So, if in any case we allow
9468
+ // customizing the animation - we should check if animation is applied
9469
+ // and if it's not applied - remove the element from the DOM and dispatch
9470
+ // `card-closed` event.
9471
+ this.baseElement.addEventListener('animationend', () => {
9472
+ this.remove();
9473
+ this.dispatchEvent(new Event('card-closed'));
9474
+ });
9475
+
9476
+ this.setAttribute('opened', 'false');
9415
9477
  }
9416
9478
 
9417
- get value() {
9418
- return this.baseElement.selectedItems.map((elem) => elem.getAttribute('data-id')) || [];
9479
+ constructor() {
9480
+ super();
9481
+
9482
+ this.baseElement.innerHTML = `
9483
+ <div part="root">
9484
+ <div part="content">
9485
+ <slot></slot>
9486
+ </div>
9487
+ <div part="close">
9488
+ <slot name="close"></slot>
9489
+ </div>
9490
+ </div>
9491
+ `;
9492
+
9493
+ this.closeEle = this.shadowRoot.querySelector('[part="close"]');
9419
9494
  }
9420
- };
9421
9495
 
9422
- const {
9423
- host,
9424
- inputField,
9425
- inputElement,
9426
- placeholder,
9427
- toggle,
9428
- label,
9429
- requiredIndicator,
9430
- helperText,
9431
- errorMessage,
9432
- chip,
9433
- chipLabel,
9434
- overflowChipFirstBorder,
9435
- overflowChipSecondBorder,
9436
- } = {
9437
- host: { selector: () => ':host' },
9438
- inputField: { selector: '::part(input-field)' },
9439
- inputElement: { selector: 'input' },
9440
- placeholder: { selector: '> input:placeholder-shown' },
9441
- toggle: { selector: '::part(toggle-button)' },
9442
- label: { selector: '::part(label)' },
9443
- requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
9444
- helperText: { selector: '::part(helper-text)' },
9445
- errorMessage: { selector: '::part(error-message)' },
9446
- chip: { selector: 'vaadin-multi-select-combo-box-chip' },
9447
- chipLabel: { selector: 'vaadin-multi-select-combo-box-chip::part(label)' },
9448
- overflowChipFirstBorder: {
9449
- selector: "vaadin-multi-select-combo-box-chip[slot='overflow']::before",
9450
- },
9451
- overflowChipSecondBorder: {
9452
- selector: "vaadin-multi-select-combo-box-chip[slot='overflow']::after",
9453
- },
9496
+ init() {
9497
+ super.init?.();
9498
+
9499
+ this.closeEle.onclick = () => {
9500
+ this.close();
9501
+ };
9502
+ }
9503
+ };
9504
+
9505
+ const selectors = {
9506
+ content: () => 'vaadin-notification-card::part(content)',
9507
+ overlay: () => 'vaadin-notification-card::part(overlay)',
9454
9508
  };
9455
9509
 
9456
- const MultiSelectComboBoxClass = compose(
9510
+ const NotificationCardClass = compose(
9457
9511
  createStyleMixin({
9458
9512
  mappings: {
9459
- hostWidth: { ...host, property: 'width' },
9460
- hostDirection: { ...host, property: 'direction' },
9461
- // we apply font-size also on the host so we can set its width with em
9462
- fontSize: [{}, host],
9463
- chipFontSize: { ...chipLabel, property: 'font-size' },
9464
- fontFamily: [label, placeholder, inputField, helperText, errorMessage, chipLabel],
9465
- labelTextColor: [
9466
- { ...label, property: 'color' },
9467
- { ...requiredIndicator, property: 'color' },
9468
- ],
9469
- errorMessageTextColor: { ...errorMessage, property: 'color' },
9470
- inputHeight: { ...inputField, property: 'min-height' },
9471
- inputBackgroundColor: { ...inputField, property: 'background-color' },
9472
- inputBorderColor: { ...inputField, property: 'border-color' },
9473
- inputBorderWidth: { ...inputField, property: 'border-width' },
9474
- inputBorderStyle: { ...inputField, property: 'border-style' },
9475
- inputBorderRadius: { ...inputField, property: 'border-radius' },
9476
- labelRequiredIndicator: { ...requiredIndicator, property: 'content' },
9477
- inputValueTextColor: { ...inputField, property: 'color' },
9478
- inputPlaceholderTextColor: { ...placeholder, property: 'color' },
9479
- inputDropdownButtonCursor: { ...toggle, property: 'cursor' },
9480
- inputDropdownButtonColor: { ...toggle, property: 'color' },
9481
- inputDropdownButtonSize: { ...toggle, property: 'font-size' },
9482
- inputDropdownButtonOffset: [
9483
- { ...toggle, property: 'margin-right' },
9484
- { ...toggle, property: 'margin-left' },
9485
- ],
9486
- inputOutlineColor: { ...inputField, property: 'outline-color' },
9487
- inputOutlineWidth: { ...inputField, property: 'outline-width' },
9488
- inputOutlineStyle: { ...inputField, property: 'outline-style' },
9489
- inputOutlineOffset: { ...inputField, property: 'outline-offset' },
9490
- inputHorizontalPadding: [
9491
- { ...inputElement, property: 'padding-left' },
9492
- { ...inputElement, property: 'padding-right' },
9493
- { ...inputField, property: 'padding-inline-start' },
9513
+ hostMinWidth: { selector: selectors.content, property: 'min-width' },
9514
+ fontFamily: {},
9515
+ fontSize: {},
9516
+ backgroundColor: { selector: selectors.content },
9517
+ textColor: { property: 'color' },
9518
+ boxShadow: {},
9519
+ borderWidth: { selector: selectors.content, property: 'border-width' },
9520
+ borderColor: { selector: selectors.content, property: 'border-color' },
9521
+ borderStyle: { selector: selectors.content, property: 'border-style' },
9522
+ borderRadius: [
9523
+ { selector: selectors.content, property: 'border-radius' },
9524
+ { selector: selectors.overlay, property: 'border-radius' },
9494
9525
  ],
9495
- inputVerticalPadding: [
9496
- { ...inputField, property: 'padding-top' },
9497
- { ...inputField, property: 'padding-bottom' },
9526
+ verticalPadding: [
9527
+ { selector: selectors.content, property: 'padding-top' },
9528
+ { selector: selectors.content, property: 'padding-bottom' },
9498
9529
  ],
9499
- chipTextColor: { ...chipLabel, property: 'color' },
9500
- chipBackgroundColor: [
9501
- { ...chip, property: 'background-color' },
9502
- { ...overflowChipFirstBorder, property: 'border-color' },
9503
- { ...overflowChipSecondBorder, property: 'border-color' },
9530
+ horizontalPadding: [
9531
+ { selector: selectors.content, property: 'padding-right' },
9532
+ { selector: selectors.content, property: 'padding-left' },
9504
9533
  ],
9505
-
9506
- // we need to use the variables from the portal mixin
9507
- // so we need to use an arrow function on the selector
9508
- // for that to work, because ComboBox is not available
9509
- // at this time.
9510
- overlayBackground: {
9511
- property: () => MultiSelectComboBoxClass.cssVarList.overlay.backgroundColor,
9512
- },
9513
- overlayBorder: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.border },
9514
- overlayFontSize: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontSize },
9515
- overlayFontFamily: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontFamily },
9516
- overlayCursor: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.cursor },
9517
- overlayItemBoxShadow: {
9518
- property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemBoxShadow,
9519
- },
9520
- overlayItemPaddingInlineStart: {
9521
- property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,
9522
- },
9523
- overlayItemPaddingInlineEnd: {
9524
- property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,
9525
- },
9526
- },
9527
- }),
9528
- draggableMixin,
9529
- portalMixin({
9530
- name: 'overlay',
9531
- selector: 'vaadin-multi-select-combo-box-internal',
9532
- mappings: {
9533
- backgroundColor: { selector: 'vaadin-multi-select-combo-box-scroller' },
9534
- minHeight: { selector: 'vaadin-multi-select-combo-box-overlay' },
9535
- margin: { selector: 'vaadin-multi-select-combo-box-overlay' },
9536
- cursor: { selector: 'vaadin-multi-select-combo-box-item' },
9537
- fontFamily: { selector: 'vaadin-multi-select-combo-box-item' },
9538
- fontSize: { selector: 'vaadin-multi-select-combo-box-item' },
9539
- itemBoxShadow: { selector: 'vaadin-multi-select-combo-box-item', property: 'box-shadow' },
9540
- itemPaddingInlineStart: {
9541
- selector: 'vaadin-multi-select-combo-box-item',
9542
- property: 'padding-inline-start',
9543
- },
9544
- itemPaddingInlineEnd: {
9545
- selector: 'vaadin-multi-select-combo-box-item',
9546
- property: 'padding-inline-end',
9547
- },
9548
- },
9549
- forward: {
9550
- include: false,
9551
- attributes: ['size'],
9552
9534
  },
9553
9535
  }),
9554
- composedProxyInputMixin({ proxyProps: ['selectionStart'], inputEvent: 'selected-items-changed' }),
9555
- componentNameValidationMixin,
9556
- MultiSelectComboBoxMixin
9536
+ notificationCardMixin
9557
9537
  )(
9558
9538
  createProxy({
9559
- slots: ['', 'prefix'],
9560
- wrappedEleName: 'vaadin-multi-select-combo-box',
9539
+ slots: [],
9540
+ wrappedEleName: 'vaadin-notification-card',
9561
9541
  style: () => `
9562
- :host {
9563
- display: inline-flex;
9564
- box-sizing: border-box;
9565
- -webkit-mask-image: none;
9566
- }
9567
- ${useHostExternalPadding(MultiSelectComboBoxClass.cssVarList)}
9568
- ${resetInputReadonlyStyle('vaadin-multi-select-combo-box')}
9569
- ${resetInputPlaceholder('vaadin-multi-select-combo-box')}
9570
- ${resetInputCursor('vaadin-multi-select-combo-box')}
9571
-
9572
- vaadin-multi-select-combo-box {
9573
- padding: 0;
9574
- width: 100%;
9575
- }
9576
- vaadin-multi-select-combo-box::before {
9577
- height: initial;
9578
- }
9579
- vaadin-multi-select-combo-box [slot="input"] {
9580
- -webkit-mask-image: none;
9581
- min-height: 0;
9582
- align-self: center;
9583
- box-sizing: border-box;
9584
- }
9585
-
9586
- ::part(input-field) {
9587
- padding: 0;
9588
- box-shadow: none;
9589
- }
9590
- ${resetInputLabelPosition('vaadin-multi-select-combo-box')}
9591
- :host([has-label]) vaadin-multi-select-combo-box-chip::part(label) {
9592
- display: block;
9542
+ vaadin-notification-card {
9543
+ box-shadow: none;
9544
+ }
9545
+ ::part(overlay) {
9546
+ box-shadow: none;
9547
+ background: none;
9593
9548
  }
9594
9549
 
9595
- vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::before,
9596
- vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {
9597
- left: -4px;
9598
- right: -4px;
9599
- border-left-width: 0;
9600
- border-inline-start-style: solid;
9601
- border-inline-start-width: 2px;
9550
+ [part="close"] {
9551
+ cursor: pointer;
9552
+ display: flex;
9602
9553
  }
9603
- vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {
9604
- left: -8px;
9605
- right: -8px;
9554
+
9555
+ [part="content"] {
9556
+ display: flex;
9557
+ align-items: center;
9558
+ flex-grow: 1;
9606
9559
  }
9607
9560
 
9608
- :host([has-no-options][allow-custom-value='true']) ::part(toggle-button) {
9609
- display: none;
9561
+ [part="root"] {
9562
+ display: flex;
9563
+ align-items: center;
9564
+ justify-content: space-between;
9565
+ width: 100%;
9610
9566
  }
9611
- `,
9612
- // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property
9613
- // with the same name. Including it will cause Vaadin to calculate NaN size,
9614
- // and reset items to an empty array, and opening the list box with no items
9615
- // to display.
9616
- // Note: we exclude `placeholder` because the vaadin component observes it and
9617
- // tries to override it, causing us to lose the user set placeholder.
9618
- excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder'],
9567
+ `,
9568
+ excludeAttrsSync: ['tabindex'],
9619
9569
  componentName,
9620
- includeForwardProps: ['items', 'renderer', 'selectedItems'],
9621
9570
  })
9622
9571
  );
9623
9572
 
9573
+ const globalRefs$2 = getThemeRefs(globals);
9574
+ const vars$3 = NotificationCardClass.cssVarList;
9575
+
9576
+ const shadowColor = '#00000020';
9577
+
9578
+ const notification = {
9579
+ [vars$3.hostMinWidth]: '415px',
9580
+ [vars$3.fontFamily]: globalRefs$2.fonts.font1.family,
9581
+ [vars$3.fontSize]: globalRefs$2.typography.body1.size,
9582
+ [vars$3.backgroundColor]: globalRefs$2.colors.surface.main,
9583
+ [vars$3.textColor]: globalRefs$2.colors.surface.contrast,
9584
+ [vars$3.boxShadow]: `${globalRefs$2.shadow.wide.xl} ${shadowColor}, ${globalRefs$2.shadow.narrow.xl} ${shadowColor}`,
9585
+ [vars$3.verticalPadding]: '0.625em',
9586
+ [vars$3.horizontalPadding]: '1.5em',
9587
+ [vars$3.borderRadius]: globalRefs$2.radius.xs,
9588
+
9589
+ _bordered: {
9590
+ [vars$3.borderWidth]: globalRefs$2.border.sm,
9591
+ [vars$3.borderStyle]: 'solid',
9592
+ [vars$3.borderColor]: 'transparent',
9593
+ },
9594
+
9595
+ size: {
9596
+ xs: { [vars$3.fontSize]: '12px' },
9597
+ sm: { [vars$3.fontSize]: '14px' },
9598
+ md: { [vars$3.fontSize]: '16px' },
9599
+ lg: { [vars$3.fontSize]: '18px' },
9600
+ },
9601
+
9602
+ mode: {
9603
+ primary: {
9604
+ [vars$3.backgroundColor]: globalRefs$2.colors.primary.main,
9605
+ [vars$3.textColor]: globalRefs$2.colors.primary.contrast,
9606
+ [vars$3.borderColor]: globalRefs$2.colors.primary.light,
9607
+ },
9608
+ success: {
9609
+ [vars$3.backgroundColor]: globalRefs$2.colors.success.main,
9610
+ [vars$3.textColor]: globalRefs$2.colors.success.contrast,
9611
+ [vars$3.borderColor]: globalRefs$2.colors.success.light,
9612
+ },
9613
+ error: {
9614
+ [vars$3.backgroundColor]: globalRefs$2.colors.error.main,
9615
+ [vars$3.textColor]: globalRefs$2.colors.error.contrast,
9616
+ [vars$3.borderColor]: globalRefs$2.colors.error.light,
9617
+ },
9618
+ },
9619
+ };
9620
+
9621
+ var notificationCard = /*#__PURE__*/Object.freeze({
9622
+ __proto__: null,
9623
+ default: notification,
9624
+ vars: vars$3
9625
+ });
9626
+
9624
9627
  const globalRefs$1 = getThemeRefs(globals);
9625
9628
  const vars$2 = MultiSelectComboBoxClass.cssVarList;
9626
9629
 
@@ -9795,5 +9798,5 @@ const vars = Object.keys(components).reduce(
9795
9798
  const defaultTheme = { globals, components: theme };
9796
9799
  const themeVars = { globals: vars$w, components: vars };
9797
9800
 
9798
- export { BadgeClass, ButtonClass, ButtonSelectionGroupClass, CheckboxClass, ContainerClass, DividerClass, EmailFieldClass, GridClass, ImageClass, LinkClass, LoaderLinearClass, LoaderRadialClass, LogoClass, NewPasswordClass, NumberFieldClass, PasscodeClass, PasswordClass, PhoneFieldClass, PhoneFieldInputBoxClass, RecaptchaClass, SwitchToggleClass, TextAreaClass, TextClass, TextFieldClass, TotpImageClass, UploadFileClass, componentsThemeManager, createComponentsTheme, defaultTheme, genColor, globalsThemeToStyle, themeToStyle, themeVars };
9801
+ export { BadgeClass, ButtonClass, ButtonSelectionGroupClass, CheckboxClass, ContainerClass, DividerClass, EmailFieldClass, GridClass, ImageClass, LinkClass, LoaderLinearClass, LoaderRadialClass, LogoClass, MultiSelectComboBoxClass, NewPasswordClass, NumberFieldClass, PasscodeClass, PasswordClass, PhoneFieldClass, PhoneFieldInputBoxClass, RecaptchaClass, SwitchToggleClass, TextAreaClass, TextClass, TextFieldClass, TotpImageClass, UploadFileClass, componentsThemeManager, createComponentsTheme, defaultTheme, genColor, globalsThemeToStyle, themeToStyle, themeVars };
9799
9802
  //# sourceMappingURL=index.esm.js.map