Repository: ionic-team/ionic-framework
File: core/src/components/button/button.tsx (TypeScript)

Code before:
   * Contains a URL or a URL fragment that the hyperlink points to.
   * If this property is set, an anchor tag will be rendered.
   */
  @Prop() href: string | undefined;

  /**
   * Specifies the relationship of the target object to the link object.
   * The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).
   */
  @Prop() rel: string | undefined;

  /**
   * Set to `"soft"` for a button with slightly rounded corners, `"round"` for a button with fully
   * rounded corners, or `"rectangular"` for a button without rounded corners.
   * Defaults to `"soft"` for the `"ios"` theme and `"round"` for all other themes.
   */
  @Prop({ reflect: true }) shape?: 'soft' | 'round' | 'rectangular';

  /**
   * Set to `"small"` for a button with less height and padding, to `"default"`
   * for a button with the default height and padding, or to `"large"` for a button
   * with more height and padding. By default the size is unset, unless the button
   * is inside of an item, where the size is `"small"` by default. Set the size to
   * `"default"` inside of an item to make it a standard size button.
   */
  @Prop({ reflect: true }) size?: 'small' | 'default' | 'large';

  /**
   * If `true`, activates a button with a heavier font weight.
   */
  @Prop() strong = false;

  /**
   * Specifies where to display the linked URL.
   * Only applies when an `href` is provided.
   * Special keywords: `"_blank"`, `"_self"`, `"_parent"`, `"_top"`.
   */
  @Prop() target: string | undefined;

  /**
   * The type of the button.
   */
  @Prop() type: 'submit' | 'reset' | 'button' = 'button';

  /**
   * The HTML form element or form element id. Used to submit a form when the button is not a child of the form.
   */
  @Prop() form?: string | HTMLFormElement;

  /**
   * Emitted when the button has focus.

Review comment (suggestion):
```suggestion
  @Prop({ reflect: true }) size?: 'small' | 'medium' | 'large';
```

Should we change `default` to `medium` to be consistent with other components? This would be breaking and we would have to update it in other places. Otherwise we could just add `medium` here for now.

Code after:
   * Contains a URL or a URL fragment that the hyperlink points to.
   * If this property is set, an anchor tag will be rendered.
   */
  @Prop() href: string | undefined;

  /**
   * Specifies the relationship of the target object to the link object.
   * The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).
   */
  @Prop() rel: string | undefined;

  /**
   * Set to `"soft"` for a button with slightly rounded corners, `"round"` for a button with fully
   * rounded corners, or `"rectangular"` for a button without rounded corners.
   * Defaults to `"soft"` for the `"ios"` theme and `"round"` for all other themes.
   */
  @Prop({ reflect: true }) shape?: 'soft' | 'round' | 'rectangular';

  /**
   * Set to `"small"` for a button with less height and padding, to `"medium"`
   * for a button with the medium height and padding, or to `"large"` for a button
   * with more height and padding. By default the size is unset, unless the button
   * is inside of an item, where the size is `"small"` by default. Set the size to
   * `"default"` inside of an item to make it a standard size button.
   */
  @Prop({ reflect: true }) size?: 'small' | 'default' | 'medium' | 'large';

  /**
   * If `true`, activates a button with a heavier font weight.
   */
  @Prop() strong = false;

  /**
   * Specifies where to display the linked URL.
   * Only applies when an `href` is provided.
   * Special keywords: `"_blank"`, `"_self"`, `"_parent"`, `"_top"`.
   */
  @Prop() target: string | undefined;

  /**
   * The type of the button.
   */
  @Prop() type: 'submit' | 'reset' | 'button' = 'button';

  /**
   * The HTML form element or form element id. Used to submit a form when the button is not a child of the form.
   */
  @Prop() form?: string | HTMLFormElement;

  /**
   * Emitted when the button has focus.