import { iconNames, iconSizes, iconWeights, inputTypes, scaleValues, variants, type sizes, type textSizes } from './ds.constants';

export namespace LmvzDS {
  export type Variant = (typeof variants)[number];
  export type Size = (typeof sizes)[number];
}

export namespace Typography {
  export type Size = (typeof textSizes)[number];
}

export namespace Button {
  export type Scale = (typeof scaleValues)[number];
  export type Variant = LmvzDS.Variant;
}

export namespace Icon {
  export type Size = (typeof iconSizes)[number];

  export type IconWeight = (typeof iconWeights)[number];

  export type IconName = (typeof iconNames)[number];
}

export namespace Input {
  export type Type = (typeof inputTypes)[number];

  export type Autocomplete = HTMLInputElement['autocomplete'];

  /**
   * Inputmode attribute for mobile keyboards
   */
  export type Inputmode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';

  /**
   * Autocapitalize attribute for mobile keyboards
   */
  export type Autocapitalize = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
}
