@react-md/core 6.0.2 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/RootHtml.d.ts +1 -1
  2. package/dist/RootHtml.js.map +1 -1
  3. package/dist/_base.scss +6 -2
  4. package/dist/_border-radius.scss +92 -0
  5. package/dist/_core.scss +2 -0
  6. package/dist/_spacing.scss +86 -0
  7. package/dist/app-bar/_app-bar.scss +9 -7
  8. package/dist/app-bar/styles.js +1 -1
  9. package/dist/app-bar/styles.js.map +1 -1
  10. package/dist/autocomplete/defaults.d.ts +1 -0
  11. package/dist/autocomplete/defaults.js +2 -6
  12. package/dist/autocomplete/defaults.js.map +1 -1
  13. package/dist/autocomplete/types.d.ts +9 -9
  14. package/dist/autocomplete/types.js.map +1 -1
  15. package/dist/avatar/Avatar.d.ts +1 -1
  16. package/dist/avatar/Avatar.js +1 -1
  17. package/dist/avatar/Avatar.js.map +1 -1
  18. package/dist/avatar/_avatar.scss +3 -3
  19. package/dist/avatar/styles.d.ts +29 -1
  20. package/dist/avatar/styles.js.map +1 -1
  21. package/dist/badge/_badge.scss +10 -2
  22. package/dist/box/_box.scss +78 -11
  23. package/dist/box/styles.d.ts +26 -3
  24. package/dist/box/styles.js.map +1 -1
  25. package/dist/button/AsyncButton.d.ts +2 -2
  26. package/dist/button/AsyncButton.js.map +1 -1
  27. package/dist/button/Button.d.ts +1 -1
  28. package/dist/button/Button.js.map +1 -1
  29. package/dist/button/_button.scss +21 -11
  30. package/dist/card/CardHeader.d.ts +1 -1
  31. package/dist/card/CardHeader.js.map +1 -1
  32. package/dist/card/_card.scss +9 -7
  33. package/dist/chip/Chip.d.ts +1 -1
  34. package/dist/chip/Chip.js.map +1 -1
  35. package/dist/chip/_chip.scss +9 -7
  36. package/dist/dialog/Dialog.d.ts +1 -1
  37. package/dist/dialog/Dialog.js.map +1 -1
  38. package/dist/dialog/_dialog.scss +7 -6
  39. package/dist/divider/_divider.scss +3 -2
  40. package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
  41. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  42. package/dist/expansion-panel/ExpansionPanelHeader.d.ts +1 -1
  43. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  44. package/dist/expansion-panel/_expansion-panel.scss +4 -3
  45. package/dist/files/FileInput.d.ts +1 -1
  46. package/dist/files/FileInput.js.map +1 -1
  47. package/dist/form/FormMessageContainer.d.ts +1 -1
  48. package/dist/form/FormMessageContainer.js.map +1 -1
  49. package/dist/form/InputToggle.d.ts +2 -2
  50. package/dist/form/InputToggle.js.map +1 -1
  51. package/dist/form/NativeSelect.d.ts +1 -1
  52. package/dist/form/NativeSelect.js.map +1 -1
  53. package/dist/form/OptGroup.d.ts +1 -1
  54. package/dist/form/OptGroup.js.map +1 -1
  55. package/dist/form/Password.d.ts +1 -1
  56. package/dist/form/Password.js.map +1 -1
  57. package/dist/form/Select.d.ts +2 -2
  58. package/dist/form/Select.js.map +1 -1
  59. package/dist/form/Slider.d.ts +1 -1
  60. package/dist/form/Slider.js.map +1 -1
  61. package/dist/form/Switch.d.ts +3 -3
  62. package/dist/form/Switch.js.map +1 -1
  63. package/dist/form/SwitchTrack.d.ts +1 -1
  64. package/dist/form/SwitchTrack.js.map +1 -1
  65. package/dist/form/TextArea.d.ts +2 -2
  66. package/dist/form/TextArea.js +1 -1
  67. package/dist/form/TextArea.js.map +1 -1
  68. package/dist/form/TextField.d.ts +1 -1
  69. package/dist/form/TextField.js.map +1 -1
  70. package/dist/form/_form-message.scss +4 -3
  71. package/dist/form/_input-toggle.scss +2 -1
  72. package/dist/form/_label.scss +3 -2
  73. package/dist/form/_password.scss +2 -1
  74. package/dist/form/_select.scss +4 -4
  75. package/dist/form/_slider.scss +4 -3
  76. package/dist/form/_switch.scss +2 -1
  77. package/dist/form/_text-area.scss +3 -2
  78. package/dist/form/_text-field.scss +20 -16
  79. package/dist/form/types.d.ts +5 -5
  80. package/dist/form/types.js.map +1 -1
  81. package/dist/form/utils.js +1 -0
  82. package/dist/form/utils.js.map +1 -1
  83. package/dist/icon/_icon.scss +2 -1
  84. package/dist/interaction/useElementInteraction.js +1 -1
  85. package/dist/interaction/useElementInteraction.js.map +1 -1
  86. package/dist/layout/LayoutAppBar.d.ts +1 -1
  87. package/dist/layout/LayoutAppBar.js.map +1 -1
  88. package/dist/layout/LayoutNav.js +1 -1
  89. package/dist/layout/LayoutNav.js.map +1 -1
  90. package/dist/layout/useMainTabIndex.js +1 -0
  91. package/dist/layout/useMainTabIndex.js.map +1 -1
  92. package/dist/link/_link.scss +3 -2
  93. package/dist/list/ListItemLink.d.ts +1 -1
  94. package/dist/list/ListItemLink.js.map +1 -1
  95. package/dist/list/ListItemText.d.ts +1 -1
  96. package/dist/list/ListItemText.js.map +1 -1
  97. package/dist/list/ListSubheader.d.ts +1 -1
  98. package/dist/list/ListSubheader.js.map +1 -1
  99. package/dist/list/_list.scss +7 -6
  100. package/dist/list/types.d.ts +2 -2
  101. package/dist/list/types.js.map +1 -1
  102. package/dist/menu/Menu.d.ts +3 -3
  103. package/dist/menu/Menu.js.map +1 -1
  104. package/dist/menu/MenuItemInputToggle.d.ts +2 -2
  105. package/dist/menu/MenuItemInputToggle.js.map +1 -1
  106. package/dist/menu/MenuItemTextField.d.ts +1 -1
  107. package/dist/menu/MenuItemTextField.js.map +1 -1
  108. package/dist/menu/MenuSheet.d.ts +1 -1
  109. package/dist/menu/MenuSheet.js.map +1 -1
  110. package/dist/menu/_menu.scss +2 -1
  111. package/dist/navigation/CollapsibleNavGroup.d.ts +2 -2
  112. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  113. package/dist/navigation/NavItemLink.d.ts +1 -1
  114. package/dist/navigation/NavItemLink.js.map +1 -1
  115. package/dist/navigation/_navigation.scss +5 -3
  116. package/dist/progress/CircularProgress.d.ts +2 -17
  117. package/dist/progress/CircularProgress.js +19 -23
  118. package/dist/progress/CircularProgress.js.map +1 -1
  119. package/dist/progress/LinearProgress.d.ts +5 -1
  120. package/dist/progress/LinearProgress.js +13 -25
  121. package/dist/progress/LinearProgress.js.map +1 -1
  122. package/dist/progress/circularProgressStyles.d.ts +62 -0
  123. package/dist/progress/circularProgressStyles.js +38 -0
  124. package/dist/progress/circularProgressStyles.js.map +1 -0
  125. package/dist/progress/linearProgressStyles.d.ts +38 -0
  126. package/dist/progress/linearProgressStyles.js +38 -0
  127. package/dist/progress/linearProgressStyles.js.map +1 -0
  128. package/dist/responsive-item/_responsive-item.scss +2 -1
  129. package/dist/searching/caseInsensitive.d.ts +20 -4
  130. package/dist/searching/caseInsensitive.js +5 -1
  131. package/dist/searching/caseInsensitive.js.map +1 -1
  132. package/dist/searching/fuzzy.d.ts +3 -3
  133. package/dist/searching/fuzzy.js +5 -1
  134. package/dist/searching/fuzzy.js.map +1 -1
  135. package/dist/searching/utils.d.ts +2 -1
  136. package/dist/searching/utils.js +11 -2
  137. package/dist/searching/utils.js.map +1 -1
  138. package/dist/segmented-button/_segmented-button.scss +20 -13
  139. package/dist/sheet/_sheet.scss +2 -1
  140. package/dist/snackbar/Toast.d.ts +1 -1
  141. package/dist/snackbar/Toast.js.map +1 -1
  142. package/dist/snackbar/_snackbar.scss +12 -10
  143. package/dist/table/TableCell.d.ts +1 -1
  144. package/dist/table/TableCell.js.map +1 -1
  145. package/dist/table/TableCheckbox.d.ts +1 -1
  146. package/dist/table/TableCheckbox.js.map +1 -1
  147. package/dist/table/TableRadio.d.ts +1 -1
  148. package/dist/table/TableRadio.js.map +1 -1
  149. package/dist/table/_table.scss +5 -4
  150. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  151. package/dist/tabs/TabListScrollButton.js.map +1 -1
  152. package/dist/tabs/_tabs.scss +7 -4
  153. package/dist/theme/utils.js +2 -2
  154. package/dist/theme/utils.js.map +1 -1
  155. package/dist/tooltip/_tooltip.scss +52 -25
  156. package/dist/transition/_transition.scss +2 -1
  157. package/dist/tree/TreeItem.d.ts +2 -2
  158. package/dist/tree/TreeItem.js.map +1 -1
  159. package/dist/tree/_tree.scss +1 -1
  160. package/dist/types.d.ts +29 -2
  161. package/dist/types.js +1 -1
  162. package/dist/types.js.map +1 -1
  163. package/dist/utils/alphaNumericSort.d.ts +9 -9
  164. package/dist/utils/alphaNumericSort.js +5 -1
  165. package/dist/utils/alphaNumericSort.js.map +1 -1
  166. package/dist/utils/bem.js +1 -1
  167. package/dist/utils/bem.js.map +1 -1
  168. package/dist/utils/parseCssLengthUnit.js +3 -0
  169. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  170. package/package.json +13 -13
  171. package/src/RootHtml.tsx +1 -1
  172. package/src/app-bar/styles.ts +1 -1
  173. package/src/autocomplete/defaults.ts +5 -12
  174. package/src/autocomplete/types.ts +9 -12
  175. package/src/avatar/Avatar.tsx +2 -2
  176. package/src/avatar/styles.ts +53 -1
  177. package/src/box/styles.ts +34 -13
  178. package/src/button/AsyncButton.tsx +2 -2
  179. package/src/button/Button.tsx +1 -1
  180. package/src/card/CardHeader.tsx +1 -1
  181. package/src/chip/Chip.tsx +1 -1
  182. package/src/dialog/Dialog.tsx +1 -4
  183. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  184. package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -1
  185. package/src/files/FileInput.tsx +1 -4
  186. package/src/form/FormMessageContainer.tsx +1 -1
  187. package/src/form/InputToggle.tsx +2 -5
  188. package/src/form/NativeSelect.tsx +1 -1
  189. package/src/form/OptGroup.tsx +1 -4
  190. package/src/form/Password.tsx +1 -1
  191. package/src/form/Select.tsx +2 -3
  192. package/src/form/Slider.tsx +1 -1
  193. package/src/form/Switch.tsx +3 -3
  194. package/src/form/SwitchTrack.tsx +1 -1
  195. package/src/form/TextArea.tsx +3 -6
  196. package/src/form/TextField.tsx +1 -1
  197. package/src/form/types.ts +5 -15
  198. package/src/form/utils.ts +1 -0
  199. package/src/interaction/useElementInteraction.tsx +1 -1
  200. package/src/layout/LayoutAppBar.tsx +1 -1
  201. package/src/layout/LayoutNav.tsx +1 -1
  202. package/src/layout/useMainTabIndex.ts +1 -0
  203. package/src/list/ListItemLink.tsx +1 -1
  204. package/src/list/ListItemText.tsx +1 -4
  205. package/src/list/ListSubheader.tsx +1 -1
  206. package/src/list/types.ts +2 -5
  207. package/src/menu/Menu.tsx +3 -4
  208. package/src/menu/MenuItemInputToggle.tsx +2 -2
  209. package/src/menu/MenuItemTextField.tsx +1 -1
  210. package/src/menu/MenuSheet.tsx +1 -1
  211. package/src/navigation/CollapsibleNavGroup.tsx +2 -2
  212. package/src/navigation/NavItemLink.tsx +1 -1
  213. package/src/progress/CircularProgress.tsx +31 -53
  214. package/src/progress/LinearProgress.tsx +27 -40
  215. package/src/progress/circularProgressStyles.ts +114 -0
  216. package/src/progress/linearProgressStyles.ts +90 -0
  217. package/src/searching/caseInsensitive.ts +29 -7
  218. package/src/searching/fuzzy.ts +12 -6
  219. package/src/searching/utils.ts +13 -2
  220. package/src/snackbar/Toast.tsx +1 -1
  221. package/src/table/TableCell.tsx +1 -4
  222. package/src/table/TableCheckbox.tsx +1 -1
  223. package/src/table/TableRadio.tsx +1 -1
  224. package/src/tabs/TabListScrollButton.tsx +1 -1
  225. package/src/theme/utils.ts +2 -1
  226. package/src/tree/TreeItem.tsx +2 -2
  227. package/src/types.ts +44 -2
  228. package/src/utils/alphaNumericSort.ts +17 -11
  229. package/src/utils/bem.ts +1 -1
  230. package/src/utils/parseCssLengthUnit.ts +4 -0
@@ -13,12 +13,12 @@ declare module "react" {
13
13
  * `FormMessage` behavior.
14
14
  */
15
15
  export interface SwitchProps extends InputHTMLAttributes<HTMLInputElement>, InputToggleLabelProps, FormMessageContainerExtension, FormComponentStates {
16
- containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
17
- trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
16
+ containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
17
+ trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
18
18
  trackStyle?: CSSProperties;
19
19
  trackClassName?: string;
20
20
  ballAddon?: ReactNode;
21
- ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;
21
+ ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;
22
22
  ballStyle?: CSSProperties;
23
23
  ballClassName?: string;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/Switch.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type ReactNode,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { type InputToggleLabelProps } from \"./InputToggle.js\";\nimport { Label } from \"./Label.js\";\nimport { SwitchTrack } from \"./SwitchTrack.js\";\nimport { switchStyles } from \"./switchStyles.js\";\nimport {\n type FormComponentStates,\n type FormMessageContainerExtension,\n} from \"./types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-switch-track-background-color\"?: string;\n \"--rmd-switch-ball-background-color\"?: string;\n }\n}\n\n/**\n * @since 6.0.0 Added `containerProps` and support for the\n * `FormMessage` behavior.\n */\nexport interface SwitchProps\n extends InputHTMLAttributes<HTMLInputElement>,\n InputToggleLabelProps,\n FormMessageContainerExtension,\n FormComponentStates {\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n trackStyle?: CSSProperties;\n trackClassName?: string;\n ballAddon?: ReactNode;\n ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;\n ballStyle?: CSSProperties;\n ballClassName?: string;\n}\n\n/**\n * @example Simple Example\n * ```tsx\n * import { Form } from \"@react-md/core/form/Form\";\n * import { Switch } from \"@react-md/core/form/Switch\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const [checked, setChecked] = useState(false);\n *\n * return (\n * <Form>\n * <Switch\n * label=\"Label\"\n * name=\"enabled\"\n * checked={checked}\n * onChange={(event) => setChecked(event.currentTarget.checked)}\n * />\n * </Form>\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/switch | Switch Demos}\n * @since 6.0.0 Added support for `FormMessage` behavior.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n id: propId,\n label,\n labelProps,\n style,\n className,\n containerProps,\n ballProps,\n ballStyle,\n ballClassName,\n ballAddon,\n trackProps,\n trackStyle,\n trackClassName,\n messageProps,\n messageContainerProps,\n disableLabelGap = false,\n error = false,\n active = false,\n stacked = false,\n iconAfter = false,\n disabled = false,\n readOnly = false,\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"switch\");\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <Label\n style={style}\n {...labelProps}\n className={cnb(className, labelProps?.className)}\n gap={!disableLabelGap}\n stacked={stacked}\n reversed={!iconAfter}\n active={active}\n error={error}\n disabled={disabled}\n >\n {label}\n <div\n {...containerProps}\n className={switchStyles({\n clickable: !disabled && !readOnly,\n className: containerProps?.className,\n currentColor: active || error,\n })}\n >\n <SwitchTrack\n style={trackStyle}\n {...trackProps}\n className={cnb(trackClassName, trackProps?.className)}\n disabled={disabled}\n ballAddon={ballAddon}\n ballProps={ballProps}\n ballStyle={ballStyle}\n ballClassName={ballClassName}\n >\n <input\n {...remaining}\n id={id}\n ref={ref}\n role=\"switch\"\n type=\"checkbox\"\n className={cnb(\n \"rmd-switch__input rmd-hidden-input\",\n disabled && \"rmd-hidden-input--disabled\"\n )}\n disabled={disabled}\n />\n </SwitchTrack>\n </div>\n </Label>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["cnb","forwardRef","useEnsuredId","FormMessageContainer","Label","SwitchTrack","switchStyles","Switch","props","ref","id","propId","label","labelProps","style","className","containerProps","ballProps","ballStyle","ballClassName","ballAddon","trackProps","trackStyle","trackClassName","messageProps","messageContainerProps","disableLabelGap","error","active","stacked","iconAfter","disabled","readOnly","remaining","gap","reversed","div","clickable","currentColor","input","role","type"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAKEC,UAAU,QACL,QAAQ;AAGf,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AAEjE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,YAAY,QAAQ,oBAAoB;AAgCjD;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMC,uBAASN,WACpB,SAASM,OAAOC,KAAK,EAAEC,GAAG;IACxB,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAK,EACLC,UAAU,EACVC,KAAK,EACLC,SAAS,EACTC,cAAc,EACdC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,YAAY,EACZC,qBAAqB,EACrBC,kBAAkB,KAAK,EACvBC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,YAAY,KAAK,EACjBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChB,GAAGC,WACJ,GAAGzB;IACJ,MAAME,KAAKR,aAAaS,QAAQ;IAEhC,qBACE,KAACR;QACE,GAAGsB,qBAAqB;QACzBD,cAAcA;kBAEd,cAAA,MAACpB;YACCU,OAAOA;YACN,GAAGD,UAAU;YACdE,WAAWf,IAAIe,WAAWF,YAAYE;YACtCmB,KAAK,CAACR;YACNG,SAASA;YACTM,UAAU,CAACL;YACXF,QAAQA;YACRD,OAAOA;YACPI,UAAUA;;gBAETnB;8BACD,KAACwB;oBACE,GAAGpB,cAAc;oBAClBD,WAAWT,aAAa;wBACtB+B,WAAW,CAACN,YAAY,CAACC;wBACzBjB,WAAWC,gBAAgBD;wBAC3BuB,cAAcV,UAAUD;oBAC1B;8BAEA,cAAA,KAACtB;wBACCS,OAAOQ;wBACN,GAAGD,UAAU;wBACdN,WAAWf,IAAIuB,gBAAgBF,YAAYN;wBAC3CgB,UAAUA;wBACVX,WAAWA;wBACXH,WAAWA;wBACXC,WAAWA;wBACXC,eAAeA;kCAEf,cAAA,KAACoB;4BACE,GAAGN,SAAS;4BACbvB,IAAIA;4BACJD,KAAKA;4BACL+B,MAAK;4BACLC,MAAK;4BACL1B,WAAWf,IACT,sCACA+B,YAAY;4BAEdA,UAAUA;;;;;;;AAOxB,GACA"}
1
+ {"version":3,"sources":["../../src/form/Switch.tsx"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type ReactNode,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { type InputToggleLabelProps } from \"./InputToggle.js\";\nimport { Label } from \"./Label.js\";\nimport { SwitchTrack } from \"./SwitchTrack.js\";\nimport { switchStyles } from \"./switchStyles.js\";\nimport {\n type FormComponentStates,\n type FormMessageContainerExtension,\n} from \"./types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-switch-track-background-color\"?: string;\n \"--rmd-switch-ball-background-color\"?: string;\n }\n}\n\n/**\n * @since 6.0.0 Added `containerProps` and support for the\n * `FormMessage` behavior.\n */\nexport interface SwitchProps\n extends InputHTMLAttributes<HTMLInputElement>,\n InputToggleLabelProps,\n FormMessageContainerExtension,\n FormComponentStates {\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;\n trackProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;\n trackStyle?: CSSProperties;\n trackClassName?: string;\n ballAddon?: ReactNode;\n ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;\n ballStyle?: CSSProperties;\n ballClassName?: string;\n}\n\n/**\n * @example Simple Example\n * ```tsx\n * import { Form } from \"@react-md/core/form/Form\";\n * import { Switch } from \"@react-md/core/form/Switch\";\n * import type { ReactElement } from \"react\";\n * import { useState } from \"react\";\n *\n * function Example(): ReactElement {\n * const [checked, setChecked] = useState(false);\n *\n * return (\n * <Form>\n * <Switch\n * label=\"Label\"\n * name=\"enabled\"\n * checked={checked}\n * onChange={(event) => setChecked(event.currentTarget.checked)}\n * />\n * </Form>\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/switch | Switch Demos}\n * @since 6.0.0 Added support for `FormMessage` behavior.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n id: propId,\n label,\n labelProps,\n style,\n className,\n containerProps,\n ballProps,\n ballStyle,\n ballClassName,\n ballAddon,\n trackProps,\n trackStyle,\n trackClassName,\n messageProps,\n messageContainerProps,\n disableLabelGap = false,\n error = false,\n active = false,\n stacked = false,\n iconAfter = false,\n disabled = false,\n readOnly = false,\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"switch\");\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <Label\n style={style}\n {...labelProps}\n className={cnb(className, labelProps?.className)}\n gap={!disableLabelGap}\n stacked={stacked}\n reversed={!iconAfter}\n active={active}\n error={error}\n disabled={disabled}\n >\n {label}\n <div\n {...containerProps}\n className={switchStyles({\n clickable: !disabled && !readOnly,\n className: containerProps?.className,\n currentColor: active || error,\n })}\n >\n <SwitchTrack\n style={trackStyle}\n {...trackProps}\n className={cnb(trackClassName, trackProps?.className)}\n disabled={disabled}\n ballAddon={ballAddon}\n ballProps={ballProps}\n ballStyle={ballStyle}\n ballClassName={ballClassName}\n >\n <input\n {...remaining}\n id={id}\n ref={ref}\n role=\"switch\"\n type=\"checkbox\"\n className={cnb(\n \"rmd-switch__input rmd-hidden-input\",\n disabled && \"rmd-hidden-input--disabled\"\n )}\n disabled={disabled}\n />\n </SwitchTrack>\n </div>\n </Label>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["cnb","forwardRef","useEnsuredId","FormMessageContainer","Label","SwitchTrack","switchStyles","Switch","props","ref","id","propId","label","labelProps","style","className","containerProps","ballProps","ballStyle","ballClassName","ballAddon","trackProps","trackStyle","trackClassName","messageProps","messageContainerProps","disableLabelGap","error","active","stacked","iconAfter","disabled","readOnly","remaining","gap","reversed","div","clickable","currentColor","input","role","type"],"mappings":";AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAKEC,UAAU,QACL,QAAQ;AAGf,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AAEjE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,YAAY,QAAQ,oBAAoB;AAgCjD;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMC,uBAASN,WACpB,SAASM,OAAOC,KAAK,EAAEC,GAAG;IACxB,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAK,EACLC,UAAU,EACVC,KAAK,EACLC,SAAS,EACTC,cAAc,EACdC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,YAAY,EACZC,qBAAqB,EACrBC,kBAAkB,KAAK,EACvBC,QAAQ,KAAK,EACbC,SAAS,KAAK,EACdC,UAAU,KAAK,EACfC,YAAY,KAAK,EACjBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChB,GAAGC,WACJ,GAAGzB;IACJ,MAAME,KAAKR,aAAaS,QAAQ;IAEhC,qBACE,KAACR;QACE,GAAGsB,qBAAqB;QACzBD,cAAcA;kBAEd,cAAA,MAACpB;YACCU,OAAOA;YACN,GAAGD,UAAU;YACdE,WAAWf,IAAIe,WAAWF,YAAYE;YACtCmB,KAAK,CAACR;YACNG,SAASA;YACTM,UAAU,CAACL;YACXF,QAAQA;YACRD,OAAOA;YACPI,UAAUA;;gBAETnB;8BACD,KAACwB;oBACE,GAAGpB,cAAc;oBAClBD,WAAWT,aAAa;wBACtB+B,WAAW,CAACN,YAAY,CAACC;wBACzBjB,WAAWC,gBAAgBD;wBAC3BuB,cAAcV,UAAUD;oBAC1B;8BAEA,cAAA,KAACtB;wBACCS,OAAOQ;wBACN,GAAGD,UAAU;wBACdN,WAAWf,IAAIuB,gBAAgBF,YAAYN;wBAC3CgB,UAAUA;wBACVX,WAAWA;wBACXH,WAAWA;wBACXC,WAAWA;wBACXC,eAAeA;kCAEf,cAAA,KAACoB;4BACE,GAAGN,SAAS;4BACbvB,IAAIA;4BACJD,KAAKA;4BACL+B,MAAK;4BACLC,MAAK;4BACL1B,WAAWf,IACT,sCACA+B,YAAY;4BAEdA,UAAUA;;;;;;;AAOxB,GACA"}
@@ -4,7 +4,7 @@ export interface SwitchTrackProps extends HTMLAttributes<HTMLDivElement> {
4
4
  active?: boolean;
5
5
  disabled?: boolean;
6
6
  ballAddon?: ReactNode;
7
- ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;
7
+ ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;
8
8
  ballStyle?: CSSProperties;
9
9
  ballClassName?: string;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/SwitchTrack.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { switchBall, switchTrack } from \"./switchStyles.js\";\n\nexport interface SwitchTrackProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n disabled?: boolean;\n ballAddon?: ReactNode;\n ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;\n ballStyle?: CSSProperties;\n ballClassName?: string;\n}\n\n/**\n * Used to create the switch track styles\n * @internal\n */\nexport const SwitchTrack = forwardRef<HTMLDivElement, SwitchTrackProps>(\n function SwitchTrack(props, ref) {\n const {\n style,\n className,\n ballAddon,\n ballProps,\n ballStyle,\n ballClassName,\n active,\n children,\n disabled = false,\n ...remaining\n } = props;\n\n return (\n <div\n {...remaining}\n ref={ref}\n style={style}\n className={switchTrack({ disabled, className })}\n >\n {children}\n <span\n style={ballStyle}\n {...ballProps}\n className={switchBall({ className: ballClassName, active })}\n >\n {ballAddon}\n {ballProps?.children}\n </span>\n </div>\n );\n }\n);\n"],"names":["forwardRef","switchBall","switchTrack","SwitchTrack","props","ref","style","className","ballAddon","ballProps","ballStyle","ballClassName","active","children","disabled","remaining","div","span"],"mappings":";AAAA,SAIEA,UAAU,QACL,QAAQ;AAGf,SAASC,UAAU,EAAEC,WAAW,QAAQ,oBAAoB;AAW5D;;;CAGC,GACD,OAAO,MAAMC,4BAAcH,WACzB,SAASG,YAAYC,KAAK,EAAEC,GAAG;IAC7B,MAAM,EACJC,KAAK,EACLC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,WAAW,KAAK,EAChB,GAAGC,WACJ,GAAGX;IAEJ,qBACE,MAACY;QACE,GAAGD,SAAS;QACbV,KAAKA;QACLC,OAAOA;QACPC,WAAWL,YAAY;YAAEY;YAAUP;QAAU;;YAE5CM;0BACD,MAACI;gBACCX,OAAOI;gBACN,GAAGD,SAAS;gBACbF,WAAWN,WAAW;oBAAEM,WAAWI;oBAAeC;gBAAO;;oBAExDJ;oBACAC,WAAWI;;;;;AAIpB,GACA"}
1
+ {"version":3,"sources":["../../src/form/SwitchTrack.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { switchBall, switchTrack } from \"./switchStyles.js\";\n\nexport interface SwitchTrackProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n disabled?: boolean;\n ballAddon?: ReactNode;\n ballProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;\n ballStyle?: CSSProperties;\n ballClassName?: string;\n}\n\n/**\n * Used to create the switch track styles\n * @internal\n */\nexport const SwitchTrack = forwardRef<HTMLDivElement, SwitchTrackProps>(\n function SwitchTrack(props, ref) {\n const {\n style,\n className,\n ballAddon,\n ballProps,\n ballStyle,\n ballClassName,\n active,\n children,\n disabled = false,\n ...remaining\n } = props;\n\n return (\n <div\n {...remaining}\n ref={ref}\n style={style}\n className={switchTrack({ disabled, className })}\n >\n {children}\n <span\n style={ballStyle}\n {...ballProps}\n className={switchBall({ className: ballClassName, active })}\n >\n {ballAddon}\n {ballProps?.children}\n </span>\n </div>\n );\n }\n);\n"],"names":["forwardRef","switchBall","switchTrack","SwitchTrack","props","ref","style","className","ballAddon","ballProps","ballStyle","ballClassName","active","children","disabled","remaining","div","span"],"mappings":";AAAA,SAIEA,UAAU,QACL,QAAQ;AAGf,SAASC,UAAU,EAAEC,WAAW,QAAQ,oBAAoB;AAW5D;;;CAGC,GACD,OAAO,MAAMC,4BAAcH,WACzB,SAASG,YAAYC,KAAK,EAAEC,GAAG;IAC7B,MAAM,EACJC,KAAK,EACLC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,WAAW,KAAK,EAChB,GAAGC,WACJ,GAAGX;IAEJ,qBACE,MAACY;QACE,GAAGD,SAAS;QACbV,KAAKA;QACLC,OAAOA;QACPC,WAAWL,YAAY;YAAEY;YAAUP;QAAU;;YAE5CM;0BACD,MAACI;gBACCX,OAAOI;gBACN,GAAGD,SAAS;gBACbF,WAAWN,WAAW;oBAAEM,WAAWI;oBAAeC;gBAAO;;oBAExDJ;oBACAC,WAAWI;;;;;AAIpB,GACA"}
@@ -61,13 +61,13 @@ export interface TextAreaProps extends FormFieldOptions, TextareaHTMLAttributes<
61
61
  *
62
62
  * This will only be applied when {@link resize} is set to `"auto"`.
63
63
  */
64
- resizeContainerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
64
+ resizeContainerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
65
65
  /**
66
66
  * Optional props to provide to the {@link TextFieldContainer} component.
67
67
  * There probably isn't any real use for this prop other than if you need to
68
68
  * add a `ref` for some DOM behavior.
69
69
  */
70
- containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
70
+ containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
71
71
  }
72
72
  /**
73
73
  * **Client Component**
@@ -109,7 +109,7 @@ import { useResizingTextArea } from "./useResizingTextArea.js";
109
109
  "--rmd-text-area-height": height
110
110
  },
111
111
  className: textAreaContainer({
112
- animate: !disableTransition && resize == "auto",
112
+ animate: !disableTransition && resize === "auto",
113
113
  disabled,
114
114
  height: !!height,
115
115
  underlineLabelled: !!label && (theme === "underline" || theme === "filled"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/TextArea.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type TextareaHTMLAttributes,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { Label } from \"./Label.js\";\nimport { ResizingTextAreaWrapper } from \"./ResizingTextAreaWrapper.js\";\nimport { TextFieldContainer } from \"./TextFieldContainer.js\";\nimport { getFormConfig } from \"./formConfig.js\";\nimport { textArea, textAreaContainer } from \"./textAreaStyles.js\";\nimport { type FormFieldOptions } from \"./types.js\";\nimport {\n type TextAreaResize,\n useResizingTextArea,\n} from \"./useResizingTextArea.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-text-area-height\"?: string | number;\n \"--rmd-text-area-padding\"?: string | number;\n }\n}\n\n/**\n * @since 6.0.0 Added `containerProps`.\n */\nexport interface TextAreaProps\n extends FormFieldOptions,\n TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** @defaultValue `\"text-area-\" + useId()` */\n id?: string;\n\n /**\n * Optional placeholder text to display in the text field.\n *\n * @defaultValue `label ? \" \" : \"\"`\n */\n placeholder?: string;\n\n /**\n * Set this to `true` if the auto resizing textarea should not animate for new\n * height changes.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * An optional style to apply to the textarea element. The base `style` prop\n * is applied to the surrounding `div` instead.\n */\n areaStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the textarea element. The base `style`\n * prop is applied to the surrounding `div` instead.\n */\n areaClassName?: string;\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-rows\n * @defaultValue `2`\n */\n rows?: number;\n\n /**\n * The maximum number of rows a textarea can expand to before showing a\n * scrollbar. When this is set to `-1`, there will be no limit.\n *\n * @defaultValue `-1`\n */\n maxRows?: number;\n\n /**\n * @see {@link TextAreaResize}\n * @defaultValue `\"auto\"`\n */\n resize?: TextAreaResize;\n\n /**\n * When the {@link resize} prop is set to `\"auto\"`, an additional `<div>` is\n * added along with a hidden `<textarea>` mask. This prop can be used to add\n * any additional styling or props to that div.\n *\n * This will only be applied when {@link resize} is set to `\"auto\"`.\n */\n resizeContainerProps?: PropsWithRef<\n HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n\n /**\n * Optional props to provide to the {@link TextFieldContainer} component.\n * There probably isn't any real use for this prop other than if you need to\n * add a `ref` for some DOM behavior.\n */\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n}\n\n/**\n * **Client Component**\n *\n * @example Simple Example\n * ```tsx\n * import { TextArea } from \"@react-md/core/form/TextArea\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * return (\n * <TextArea\n * label=\"Label\"\n * placeholder=\"Placeholder\"\n * />\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/text-field#simple-textarea | TextArea Demos}\n */\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(props, ref) {\n const {\n id: propId,\n style,\n className,\n label,\n labelProps,\n labelStyle,\n labelClassName,\n areaStyle,\n areaClassName,\n resizeContainerProps,\n resize = \"auto\",\n dense,\n error,\n active,\n inline: propInline,\n leftAddon,\n rightAddon,\n disableLeftAddonStyles,\n disableRightAddonStyles,\n theme: propTheme,\n underlineDirection: propUnderlineDirection,\n messageProps,\n messageContainerProps,\n containerProps,\n rows = 2,\n maxRows = -1,\n onChange: propOnChange,\n disableTransition: propDisableTransition,\n ...remaining\n } = props;\n const { disabled = false, readOnly = false, value, defaultValue } = props;\n const id = useEnsuredId(propId, \"text-area\");\n const theme = getFormConfig(\"theme\", propTheme);\n const underlineDirection = getFormConfig(\n \"underlineDirection\",\n propUnderlineDirection\n );\n const [areaRef, areaRefCallback] = useEnsuredRef(ref);\n\n const {\n maskRef,\n containerRef,\n height,\n onChange,\n scrollable,\n disableTransition,\n } = useResizingTextArea({\n maxRows,\n resize,\n onChange: propOnChange,\n containerRef: containerProps?.ref,\n disableTransition: propDisableTransition,\n });\n\n let { placeholder = \"\" } = props;\n if (label && !placeholder) {\n // See the placeholder type definition comments for information\n placeholder = \" \";\n }\n\n // have to force it inline or else you won't be able to resize\n // it horizontally.\n const inline = resize === \"horizontal\" || resize === \"both\" || propInline;\n\n const area = (\n <textarea\n {...remaining}\n id={id}\n ref={areaRefCallback}\n rows={rows}\n disabled={disabled}\n onChange={onChange}\n placeholder={placeholder}\n style={areaStyle}\n className={textArea({\n resize,\n scrollable,\n className: areaClassName,\n placeholderHidden: !!label && !active,\n })}\n />\n );\n\n const labelNode = label && (\n <Label\n {...labelProps}\n htmlFor={id}\n style={labelProps?.style ?? labelStyle}\n className={labelProps?.className ?? labelClassName}\n floating\n dense={dense}\n error={error}\n active={active}\n disabled={disabled}\n >\n {label}\n </Label>\n );\n\n let children = (\n <>\n {area}\n {labelNode}\n </>\n );\n\n if (resize === \"auto\") {\n children = (\n <ResizingTextAreaWrapper\n {...resizeContainerProps}\n maskId={`${id}-mask`}\n maskRef={maskRef}\n rows={rows}\n areaStyle={areaStyle}\n areaClassName={areaClassName}\n defaultValue={value ?? defaultValue}\n disableTransition={disableTransition}\n >\n {children}\n </ResizingTextAreaWrapper>\n );\n }\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <TextFieldContainer\n {...containerProps}\n ref={containerRef}\n style={{\n ...style,\n \"--rmd-text-area-height\": height,\n }}\n className={textAreaContainer({\n animate: !disableTransition && resize == \"auto\",\n disabled,\n height: !!height,\n underlineLabelled:\n !!label && (theme === \"underline\" || theme === \"filled\"),\n className,\n })}\n theme={theme}\n label={!!label}\n error={error}\n dense={dense}\n inline={inline}\n active={active}\n readOnly={readOnly}\n disabled={disabled}\n leftAddon={leftAddon}\n rightAddon={rightAddon}\n underlineDirection={underlineDirection}\n disableLeftAddonStyles={disableLeftAddonStyles}\n disableRightAddonStyles={disableRightAddonStyles}\n onClick={(event) => {\n // The textarea container adds padding-top when there is a label so\n // that the label does not cover the text so this makes it so you\n // can still click anywhere in the \"box\" to focus the textarea.\n if (!disabled && event.target === event.currentTarget) {\n areaRef.current?.focus();\n }\n }}\n >\n {children}\n </TextFieldContainer>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["forwardRef","useEnsuredId","useEnsuredRef","FormMessageContainer","Label","ResizingTextAreaWrapper","TextFieldContainer","getFormConfig","textArea","textAreaContainer","useResizingTextArea","TextArea","props","ref","id","propId","style","className","label","labelProps","labelStyle","labelClassName","areaStyle","areaClassName","resizeContainerProps","resize","dense","error","active","inline","propInline","leftAddon","rightAddon","disableLeftAddonStyles","disableRightAddonStyles","theme","propTheme","underlineDirection","propUnderlineDirection","messageProps","messageContainerProps","containerProps","rows","maxRows","onChange","propOnChange","disableTransition","propDisableTransition","remaining","disabled","readOnly","value","defaultValue","areaRef","areaRefCallback","maskRef","containerRef","height","scrollable","placeholder","area","textarea","placeholderHidden","labelNode","htmlFor","floating","children","maskId","animate","underlineLabelled","onClick","event","target","currentTarget","current","focus"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/form/TextArea.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type TextareaHTMLAttributes,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { Label } from \"./Label.js\";\nimport { ResizingTextAreaWrapper } from \"./ResizingTextAreaWrapper.js\";\nimport { TextFieldContainer } from \"./TextFieldContainer.js\";\nimport { getFormConfig } from \"./formConfig.js\";\nimport { textArea, textAreaContainer } from \"./textAreaStyles.js\";\nimport { type FormFieldOptions } from \"./types.js\";\nimport {\n type TextAreaResize,\n useResizingTextArea,\n} from \"./useResizingTextArea.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-text-area-height\"?: string | number;\n \"--rmd-text-area-padding\"?: string | number;\n }\n}\n\n/**\n * @since 6.0.0 Added `containerProps`.\n */\nexport interface TextAreaProps\n extends FormFieldOptions,\n TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** @defaultValue `\"text-area-\" + useId()` */\n id?: string;\n\n /**\n * Optional placeholder text to display in the text field.\n *\n * @defaultValue `label ? \" \" : \"\"`\n */\n placeholder?: string;\n\n /**\n * Set this to `true` if the auto resizing textarea should not animate for new\n * height changes.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * An optional style to apply to the textarea element. The base `style` prop\n * is applied to the surrounding `div` instead.\n */\n areaStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the textarea element. The base `style`\n * prop is applied to the surrounding `div` instead.\n */\n areaClassName?: string;\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-rows\n * @defaultValue `2`\n */\n rows?: number;\n\n /**\n * The maximum number of rows a textarea can expand to before showing a\n * scrollbar. When this is set to `-1`, there will be no limit.\n *\n * @defaultValue `-1`\n */\n maxRows?: number;\n\n /**\n * @see {@link TextAreaResize}\n * @defaultValue `\"auto\"`\n */\n resize?: TextAreaResize;\n\n /**\n * When the {@link resize} prop is set to `\"auto\"`, an additional `<div>` is\n * added along with a hidden `<textarea>` mask. This prop can be used to add\n * any additional styling or props to that div.\n *\n * This will only be applied when {@link resize} is set to `\"auto\"`.\n */\n resizeContainerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;\n\n /**\n * Optional props to provide to the {@link TextFieldContainer} component.\n * There probably isn't any real use for this prop other than if you need to\n * add a `ref` for some DOM behavior.\n */\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;\n}\n\n/**\n * **Client Component**\n *\n * @example Simple Example\n * ```tsx\n * import { TextArea } from \"@react-md/core/form/TextArea\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * return (\n * <TextArea\n * label=\"Label\"\n * placeholder=\"Placeholder\"\n * />\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/text-field#simple-textarea | TextArea Demos}\n */\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(props, ref) {\n const {\n id: propId,\n style,\n className,\n label,\n labelProps,\n labelStyle,\n labelClassName,\n areaStyle,\n areaClassName,\n resizeContainerProps,\n resize = \"auto\",\n dense,\n error,\n active,\n inline: propInline,\n leftAddon,\n rightAddon,\n disableLeftAddonStyles,\n disableRightAddonStyles,\n theme: propTheme,\n underlineDirection: propUnderlineDirection,\n messageProps,\n messageContainerProps,\n containerProps,\n rows = 2,\n maxRows = -1,\n onChange: propOnChange,\n disableTransition: propDisableTransition,\n ...remaining\n } = props;\n const { disabled = false, readOnly = false, value, defaultValue } = props;\n const id = useEnsuredId(propId, \"text-area\");\n const theme = getFormConfig(\"theme\", propTheme);\n const underlineDirection = getFormConfig(\n \"underlineDirection\",\n propUnderlineDirection\n );\n const [areaRef, areaRefCallback] = useEnsuredRef(ref);\n\n const {\n maskRef,\n containerRef,\n height,\n onChange,\n scrollable,\n disableTransition,\n } = useResizingTextArea({\n maxRows,\n resize,\n onChange: propOnChange,\n containerRef: containerProps?.ref,\n disableTransition: propDisableTransition,\n });\n\n let { placeholder = \"\" } = props;\n if (label && !placeholder) {\n // See the placeholder type definition comments for information\n placeholder = \" \";\n }\n\n // have to force it inline or else you won't be able to resize\n // it horizontally.\n const inline = resize === \"horizontal\" || resize === \"both\" || propInline;\n\n const area = (\n <textarea\n {...remaining}\n id={id}\n ref={areaRefCallback}\n rows={rows}\n disabled={disabled}\n onChange={onChange}\n placeholder={placeholder}\n style={areaStyle}\n className={textArea({\n resize,\n scrollable,\n className: areaClassName,\n placeholderHidden: !!label && !active,\n })}\n />\n );\n\n const labelNode = label && (\n <Label\n {...labelProps}\n htmlFor={id}\n style={labelProps?.style ?? labelStyle}\n className={labelProps?.className ?? labelClassName}\n floating\n dense={dense}\n error={error}\n active={active}\n disabled={disabled}\n >\n {label}\n </Label>\n );\n\n let children = (\n <>\n {area}\n {labelNode}\n </>\n );\n\n if (resize === \"auto\") {\n children = (\n <ResizingTextAreaWrapper\n {...resizeContainerProps}\n maskId={`${id}-mask`}\n maskRef={maskRef}\n rows={rows}\n areaStyle={areaStyle}\n areaClassName={areaClassName}\n defaultValue={value ?? defaultValue}\n disableTransition={disableTransition}\n >\n {children}\n </ResizingTextAreaWrapper>\n );\n }\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={messageProps}\n >\n <TextFieldContainer\n {...containerProps}\n ref={containerRef}\n style={{\n ...style,\n \"--rmd-text-area-height\": height,\n }}\n className={textAreaContainer({\n animate: !disableTransition && resize === \"auto\",\n disabled,\n height: !!height,\n underlineLabelled:\n !!label && (theme === \"underline\" || theme === \"filled\"),\n className,\n })}\n theme={theme}\n label={!!label}\n error={error}\n dense={dense}\n inline={inline}\n active={active}\n readOnly={readOnly}\n disabled={disabled}\n leftAddon={leftAddon}\n rightAddon={rightAddon}\n underlineDirection={underlineDirection}\n disableLeftAddonStyles={disableLeftAddonStyles}\n disableRightAddonStyles={disableRightAddonStyles}\n onClick={(event) => {\n // The textarea container adds padding-top when there is a label so\n // that the label does not cover the text so this makes it so you\n // can still click anywhere in the \"box\" to focus the textarea.\n if (!disabled && event.target === event.currentTarget) {\n areaRef.current?.focus();\n }\n }}\n >\n {children}\n </TextFieldContainer>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["forwardRef","useEnsuredId","useEnsuredRef","FormMessageContainer","Label","ResizingTextAreaWrapper","TextFieldContainer","getFormConfig","textArea","textAreaContainer","useResizingTextArea","TextArea","props","ref","id","propId","style","className","label","labelProps","labelStyle","labelClassName","areaStyle","areaClassName","resizeContainerProps","resize","dense","error","active","inline","propInline","leftAddon","rightAddon","disableLeftAddonStyles","disableRightAddonStyles","theme","propTheme","underlineDirection","propUnderlineDirection","messageProps","messageContainerProps","containerProps","rows","maxRows","onChange","propOnChange","disableTransition","propDisableTransition","remaining","disabled","readOnly","value","defaultValue","areaRef","areaRefCallback","maskRef","containerRef","height","scrollable","placeholder","area","textarea","placeholderHidden","labelNode","htmlFor","floating","children","maskId","animate","underlineLabelled","onClick","event","target","currentTarget","current","focus"],"mappings":"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"}
@@ -49,7 +49,7 @@ export interface TextFieldProps extends TextFieldInputAttributes, UserAgentAutoc
49
49
  * There probably isn't any real use for this prop other than if you need to
50
50
  * add a `ref` for some DOM behavior.
51
51
  */
52
- containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
52
+ containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
53
53
  }
54
54
  /**
55
55
  * The structure for this component is:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/TextField.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { Label } from \"./Label.js\";\nimport { TextFieldContainer } from \"./TextFieldContainer.js\";\nimport { textField } from \"./textFieldStyles.js\";\nimport {\n type FormFieldOptions,\n type UserAgentAutocompleteProps,\n} from \"./types.js\";\n\n/**\n * These are all the \"supported\" input types for react-md so that they at least\n * render reasonably well by default. There is no built-in validation or\n * anything adding onto existing browser functionality for these types.\n *\n * @since 2.5.0 - `\"search\"` was added\n * @since 6.0.0 Dropped support for `\"week\"` and `\"month\"` input types since\n * they are not available in Firefox and Safari at this time.\n */\nexport type SupportedInputTypes =\n | \"text\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"email\"\n | \"date\"\n | \"time\"\n | \"datetime-local\"\n | \"url\"\n | \"color\"\n | \"search\";\n\n/**\n * @since 6.0.0 Renamed from `TextFieldAttributes` to\n * `TextFieldInputAttributes`\n */\nexport type TextFieldInputAttributes = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n>;\n\n/**\n * @since 6.0.0 Removed the `containerRef` prop.\n */\nexport interface TextFieldProps\n extends TextFieldInputAttributes,\n UserAgentAutocompleteProps,\n FormFieldOptions {\n /**\n * @defaultValue `\"text-field-\" + useId()`\n */\n id?: string;\n\n /**\n * Optional placeholder text to display in the text field.\n *\n * @defaultValue `label ? \" \" : \"\"`\n */\n placeholder?: string;\n\n /**\n * Any optional inline styles to set on the input.\n */\n inputStyle?: CSSProperties;\n\n /**\n * An optional `className` to add to the input.\n */\n inputClassName?: string;\n\n /**\n * The text field type.\n *\n * @defaultValue `\"text\"`\n */\n type?: SupportedInputTypes;\n\n /**\n * Optional props to provide to the {@link TextFieldContainer} component.\n * There probably isn't any real use for this prop other than if you need to\n * add a `ref` for some DOM behavior.\n */\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n}\n\n/**\n * The structure for this component is:\n * @example Component Structure\n * ```tsx\n * <FormMessageContainer {...messageContainerProps}>\n * <TextFieldContainer {...containerProps}>\n * <input {...props} />\n * <Label {...labelProps} />\n * </TextFieldContainer>\n * </FormMessageContainer>\n * ```\n *\n * @example Simple Example\n * ```tsx\n * import { TextField } from \"@react-md/core/form/TextField\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * return (\n * <TextField\n * label=\"Name\"\n * placeholder=\"Bob\"\n * defaultValue=\"\"\n * />\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/textfield | TextField Demos}\n */\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField(props, ref) {\n const {\n id: propId,\n style,\n className,\n type = \"text\",\n label,\n labelProps,\n labelStyle,\n labelClassName,\n autoCompleteValue,\n autoComplete = autoCompleteValue,\n name = autoCompleteValue,\n dense,\n error,\n active,\n inline,\n leftAddon,\n leftAddonProps,\n rightAddon,\n rightAddonProps,\n disableLeftAddonStyles,\n disableRightAddonStyles,\n inputStyle,\n inputClassName,\n theme,\n underlineDirection,\n messageProps,\n messageContainerProps,\n containerProps,\n ...remaining\n } = props;\n const { disabled, readOnly } = props;\n const id = useEnsuredId(propId, \"text-field\");\n\n let { placeholder = \"\" } = props;\n if (label && !placeholder) {\n // See the placeholder type definition comments for information\n placeholder = \" \";\n }\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={\n messageProps && {\n error,\n theme,\n ...messageProps,\n }\n }\n >\n <TextFieldContainer\n {...containerProps}\n style={style}\n className={className}\n theme={theme}\n label={!!label}\n error={error}\n dense={dense}\n inline={inline}\n active={active}\n readOnly={readOnly}\n disabled={disabled}\n leftAddon={leftAddon}\n leftAddonProps={leftAddonProps}\n rightAddon={rightAddon}\n rightAddonProps={rightAddonProps}\n underlineDirection={underlineDirection}\n disableLeftAddonStyles={disableLeftAddonStyles}\n disableRightAddonStyles={disableRightAddonStyles}\n >\n <input\n {...remaining}\n id={id}\n ref={ref}\n type={type}\n name={name}\n disabled={disabled}\n placeholder={placeholder}\n autoComplete={autoComplete}\n style={inputStyle}\n className={textField({\n className: inputClassName,\n placeholderHidden: !!label && !active,\n })}\n />\n {label && (\n <Label\n floating\n dense={dense}\n error={error}\n active={active}\n disabled={disabled}\n {...labelProps}\n htmlFor={id}\n style={labelProps?.style ?? labelStyle}\n className={labelProps?.className ?? labelClassName}\n >\n {label}\n </Label>\n )}\n </TextFieldContainer>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["forwardRef","useEnsuredId","FormMessageContainer","Label","TextFieldContainer","textField","TextField","props","ref","id","propId","style","className","type","label","labelProps","labelStyle","labelClassName","autoCompleteValue","autoComplete","name","dense","error","active","inline","leftAddon","leftAddonProps","rightAddon","rightAddonProps","disableLeftAddonStyles","disableRightAddonStyles","inputStyle","inputClassName","theme","underlineDirection","messageProps","messageContainerProps","containerProps","remaining","disabled","readOnly","placeholder","input","placeholderHidden","floating","htmlFor"],"mappings":";AAAA,SAIEA,UAAU,QACL,QAAQ;AAGf,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,SAAS,QAAQ,uBAAuB;AAiFjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GACD,OAAO,MAAMC,0BAAYN,WACvB,SAASM,UAAUC,KAAK,EAAEC,GAAG;IAC3B,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAK,EACLC,SAAS,EACTC,OAAO,MAAM,EACbC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,iBAAiB,EACjBC,eAAeD,iBAAiB,EAChCE,OAAOF,iBAAiB,EACxBG,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,cAAc,EACdC,UAAU,EACVC,eAAe,EACfC,sBAAsB,EACtBC,uBAAuB,EACvBC,UAAU,EACVC,cAAc,EACdC,KAAK,EACLC,kBAAkB,EAClBC,YAAY,EACZC,qBAAqB,EACrBC,cAAc,EACd,GAAGC,WACJ,GAAG/B;IACJ,MAAM,EAAEgC,QAAQ,EAAEC,QAAQ,EAAE,GAAGjC;IAC/B,MAAME,KAAKR,aAAaS,QAAQ;IAEhC,IAAI,EAAE+B,cAAc,EAAE,EAAE,GAAGlC;IAC3B,IAAIO,SAAS,CAAC2B,aAAa;QACzB,+DAA+D;QAC/DA,cAAc;IAChB;IAEA,qBACE,KAACvC;QACE,GAAGkC,qBAAqB;QACzBD,cACEA,gBAAgB;YACdb;YACAW;YACA,GAAGE,YAAY;QACjB;kBAGF,cAAA,MAAC/B;YACE,GAAGiC,cAAc;YAClB1B,OAAOA;YACPC,WAAWA;YACXqB,OAAOA;YACPnB,OAAO,CAAC,CAACA;YACTQ,OAAOA;YACPD,OAAOA;YACPG,QAAQA;YACRD,QAAQA;YACRiB,UAAUA;YACVD,UAAUA;YACVd,WAAWA;YACXC,gBAAgBA;YAChBC,YAAYA;YACZC,iBAAiBA;YACjBM,oBAAoBA;YACpBL,wBAAwBA;YACxBC,yBAAyBA;;8BAEzB,KAACY;oBACE,GAAGJ,SAAS;oBACb7B,IAAIA;oBACJD,KAAKA;oBACLK,MAAMA;oBACNO,MAAMA;oBACNmB,UAAUA;oBACVE,aAAaA;oBACbtB,cAAcA;oBACdR,OAAOoB;oBACPnB,WAAWP,UAAU;wBACnBO,WAAWoB;wBACXW,mBAAmB,CAAC,CAAC7B,SAAS,CAACS;oBACjC;;gBAEDT,uBACC,KAACX;oBACCyC,QAAQ;oBACRvB,OAAOA;oBACPC,OAAOA;oBACPC,QAAQA;oBACRgB,UAAUA;oBACT,GAAGxB,UAAU;oBACd8B,SAASpC;oBACTE,OAAOI,YAAYJ,SAASK;oBAC5BJ,WAAWG,YAAYH,aAAaK;8BAEnCH;;;;;AAMb,GACA"}
1
+ {"version":3,"sources":["../../src/form/TextField.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n forwardRef,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { FormMessageContainer } from \"./FormMessageContainer.js\";\nimport { Label } from \"./Label.js\";\nimport { TextFieldContainer } from \"./TextFieldContainer.js\";\nimport { textField } from \"./textFieldStyles.js\";\nimport {\n type FormFieldOptions,\n type UserAgentAutocompleteProps,\n} from \"./types.js\";\n\n/**\n * These are all the \"supported\" input types for react-md so that they at least\n * render reasonably well by default. There is no built-in validation or\n * anything adding onto existing browser functionality for these types.\n *\n * @since 2.5.0 - `\"search\"` was added\n * @since 6.0.0 Dropped support for `\"week\"` and `\"month\"` input types since\n * they are not available in Firefox and Safari at this time.\n */\nexport type SupportedInputTypes =\n | \"text\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"email\"\n | \"date\"\n | \"time\"\n | \"datetime-local\"\n | \"url\"\n | \"color\"\n | \"search\";\n\n/**\n * @since 6.0.0 Renamed from `TextFieldAttributes` to\n * `TextFieldInputAttributes`\n */\nexport type TextFieldInputAttributes = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n>;\n\n/**\n * @since 6.0.0 Removed the `containerRef` prop.\n */\nexport interface TextFieldProps\n extends TextFieldInputAttributes,\n UserAgentAutocompleteProps,\n FormFieldOptions {\n /**\n * @defaultValue `\"text-field-\" + useId()`\n */\n id?: string;\n\n /**\n * Optional placeholder text to display in the text field.\n *\n * @defaultValue `label ? \" \" : \"\"`\n */\n placeholder?: string;\n\n /**\n * Any optional inline styles to set on the input.\n */\n inputStyle?: CSSProperties;\n\n /**\n * An optional `className` to add to the input.\n */\n inputClassName?: string;\n\n /**\n * The text field type.\n *\n * @defaultValue `\"text\"`\n */\n type?: SupportedInputTypes;\n\n /**\n * Optional props to provide to the {@link TextFieldContainer} component.\n * There probably isn't any real use for this prop other than if you need to\n * add a `ref` for some DOM behavior.\n */\n containerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;\n}\n\n/**\n * The structure for this component is:\n * @example Component Structure\n * ```tsx\n * <FormMessageContainer {...messageContainerProps}>\n * <TextFieldContainer {...containerProps}>\n * <input {...props} />\n * <Label {...labelProps} />\n * </TextFieldContainer>\n * </FormMessageContainer>\n * ```\n *\n * @example Simple Example\n * ```tsx\n * import { TextField } from \"@react-md/core/form/TextField\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * return (\n * <TextField\n * label=\"Name\"\n * placeholder=\"Bob\"\n * defaultValue=\"\"\n * />\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/textfield | TextField Demos}\n */\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField(props, ref) {\n const {\n id: propId,\n style,\n className,\n type = \"text\",\n label,\n labelProps,\n labelStyle,\n labelClassName,\n autoCompleteValue,\n autoComplete = autoCompleteValue,\n name = autoCompleteValue,\n dense,\n error,\n active,\n inline,\n leftAddon,\n leftAddonProps,\n rightAddon,\n rightAddonProps,\n disableLeftAddonStyles,\n disableRightAddonStyles,\n inputStyle,\n inputClassName,\n theme,\n underlineDirection,\n messageProps,\n messageContainerProps,\n containerProps,\n ...remaining\n } = props;\n const { disabled, readOnly } = props;\n const id = useEnsuredId(propId, \"text-field\");\n\n let { placeholder = \"\" } = props;\n if (label && !placeholder) {\n // See the placeholder type definition comments for information\n placeholder = \" \";\n }\n\n return (\n <FormMessageContainer\n {...messageContainerProps}\n messageProps={\n messageProps && {\n error,\n theme,\n ...messageProps,\n }\n }\n >\n <TextFieldContainer\n {...containerProps}\n style={style}\n className={className}\n theme={theme}\n label={!!label}\n error={error}\n dense={dense}\n inline={inline}\n active={active}\n readOnly={readOnly}\n disabled={disabled}\n leftAddon={leftAddon}\n leftAddonProps={leftAddonProps}\n rightAddon={rightAddon}\n rightAddonProps={rightAddonProps}\n underlineDirection={underlineDirection}\n disableLeftAddonStyles={disableLeftAddonStyles}\n disableRightAddonStyles={disableRightAddonStyles}\n >\n <input\n {...remaining}\n id={id}\n ref={ref}\n type={type}\n name={name}\n disabled={disabled}\n placeholder={placeholder}\n autoComplete={autoComplete}\n style={inputStyle}\n className={textField({\n className: inputClassName,\n placeholderHidden: !!label && !active,\n })}\n />\n {label && (\n <Label\n floating\n dense={dense}\n error={error}\n active={active}\n disabled={disabled}\n {...labelProps}\n htmlFor={id}\n style={labelProps?.style ?? labelStyle}\n className={labelProps?.className ?? labelClassName}\n >\n {label}\n </Label>\n )}\n </TextFieldContainer>\n </FormMessageContainer>\n );\n }\n);\n"],"names":["forwardRef","useEnsuredId","FormMessageContainer","Label","TextFieldContainer","textField","TextField","props","ref","id","propId","style","className","type","label","labelProps","labelStyle","labelClassName","autoCompleteValue","autoComplete","name","dense","error","active","inline","leftAddon","leftAddonProps","rightAddon","rightAddonProps","disableLeftAddonStyles","disableRightAddonStyles","inputStyle","inputClassName","theme","underlineDirection","messageProps","messageContainerProps","containerProps","remaining","disabled","readOnly","placeholder","input","placeholderHidden","floating","htmlFor"],"mappings":";AAAA,SAIEA,UAAU,QACL,QAAQ;AAGf,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,SAAS,QAAQ,uBAAuB;AAiFjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GACD,OAAO,MAAMC,0BAAYN,WACvB,SAASM,UAAUC,KAAK,EAAEC,GAAG;IAC3B,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAK,EACLC,SAAS,EACTC,OAAO,MAAM,EACbC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,iBAAiB,EACjBC,eAAeD,iBAAiB,EAChCE,OAAOF,iBAAiB,EACxBG,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,cAAc,EACdC,UAAU,EACVC,eAAe,EACfC,sBAAsB,EACtBC,uBAAuB,EACvBC,UAAU,EACVC,cAAc,EACdC,KAAK,EACLC,kBAAkB,EAClBC,YAAY,EACZC,qBAAqB,EACrBC,cAAc,EACd,GAAGC,WACJ,GAAG/B;IACJ,MAAM,EAAEgC,QAAQ,EAAEC,QAAQ,EAAE,GAAGjC;IAC/B,MAAME,KAAKR,aAAaS,QAAQ;IAEhC,IAAI,EAAE+B,cAAc,EAAE,EAAE,GAAGlC;IAC3B,IAAIO,SAAS,CAAC2B,aAAa;QACzB,+DAA+D;QAC/DA,cAAc;IAChB;IAEA,qBACE,KAACvC;QACE,GAAGkC,qBAAqB;QACzBD,cACEA,gBAAgB;YACdb;YACAW;YACA,GAAGE,YAAY;QACjB;kBAGF,cAAA,MAAC/B;YACE,GAAGiC,cAAc;YAClB1B,OAAOA;YACPC,WAAWA;YACXqB,OAAOA;YACPnB,OAAO,CAAC,CAACA;YACTQ,OAAOA;YACPD,OAAOA;YACPG,QAAQA;YACRD,QAAQA;YACRiB,UAAUA;YACVD,UAAUA;YACVd,WAAWA;YACXC,gBAAgBA;YAChBC,YAAYA;YACZC,iBAAiBA;YACjBM,oBAAoBA;YACpBL,wBAAwBA;YACxBC,yBAAyBA;;8BAEzB,KAACY;oBACE,GAAGJ,SAAS;oBACb7B,IAAIA;oBACJD,KAAKA;oBACLK,MAAMA;oBACNO,MAAMA;oBACNmB,UAAUA;oBACVE,aAAaA;oBACbtB,cAAcA;oBACdR,OAAOoB;oBACPnB,WAAWP,UAAU;wBACnBO,WAAWoB;wBACXW,mBAAmB,CAAC,CAAC7B,SAAS,CAACS;oBACjC;;gBAEDT,uBACC,KAACX;oBACCyC,QAAQ;oBACRvB,OAAOA;oBACPC,OAAOA;oBACPC,QAAQA;oBACRgB,UAAUA;oBACT,GAAGxB,UAAU;oBACd8B,SAASpC;oBACTE,OAAOI,YAAYJ,SAASK;oBAC5BJ,WAAWG,YAAYH,aAAaK;8BAEnCH;;;;;AAMb,GACA"}
@@ -4,6 +4,7 @@
4
4
 
5
5
  @use "sass:map";
6
6
  @use "../utils";
7
+ @use "../spacing";
7
8
  @use "../icon/icon";
8
9
  @use "../typography/typography";
9
10
  @use "base";
@@ -37,16 +38,16 @@ $typography-styles: map.merge(
37
38
  /// The `gap` between elements in the `FormMessageCounter` component .
38
39
  ///
39
40
  /// @type Number
40
- $counter-spacing: icon.$spacing !default;
41
+ $counter-spacing: spacing.get-var(sm) !default;
41
42
 
42
43
  /// The `margin-top` for the `FormMessage` component.
43
44
  /// @type Number
44
- $margin-top: 0.5rem !default;
45
+ $margin-top: spacing.get-var(sm) !default;
45
46
 
46
47
  /// The `margin-bottom` for the `FormMessage` component.
47
48
  ///
48
49
  /// @type Number
49
- $margin-bottom: 1rem !default;
50
+ $margin-bottom: spacing.get-var(md) !default;
50
51
 
51
52
  /// The `min-height` for the `FormMessage` component.
52
53
  /// @type Number
@@ -5,6 +5,7 @@
5
5
  @use "sass:color";
6
6
  @use "sass:map";
7
7
  @use "../utils";
8
+ @use "../border-radius";
8
9
  @use "../theme/theme";
9
10
  @use "../icon/icon";
10
11
  @use "../interaction/interaction";
@@ -32,7 +33,7 @@ $disable-uncontrolled: false !default;
32
33
 
33
34
  /// The default border-radius for `Checkbox` and `Radio` components.
34
35
  /// @type Number
35
- $border-radius: 50% !default;
36
+ $border-radius: border-radius.get-var(full) !default;
36
37
 
37
38
  /// The amount of padding to apply around the `Checkbox` and `Radio` icons
38
39
  /// @type Number
@@ -4,6 +4,7 @@
4
4
 
5
5
  @use "sass:map";
6
6
  @use "../utils";
7
+ @use "../spacing";
7
8
  @use "../icon/icon";
8
9
  @use "../transition/transition";
9
10
  @use "../typography/typography";
@@ -58,7 +59,7 @@ $disable-stacked-reversed: $disable-everything !default;
58
59
  ///
59
60
  /// @see $disable-gap
60
61
  /// @type Number
61
- $gap: icon.$spacing !default;
62
+ $gap: spacing.get-var(sm) !default;
62
63
 
63
64
  /// The default `Label` font size.
64
65
  ///
@@ -95,7 +96,7 @@ $floating-scale: 0.75 !default;
95
96
  /// the outline and add some general spacing.
96
97
  ///
97
98
  /// @type Number
98
- $floating-padding: 0.25rem !default;
99
+ $floating-padding: spacing.get-var(xs) !default;
99
100
 
100
101
  /// The available configurable css variables and mostly used internally for the
101
102
  /// `get-var`, `set-var`, and `use-var` utils.
@@ -4,6 +4,7 @@
4
4
 
5
5
  @use "sass:map";
6
6
  @use "../utils";
7
+ @use "../spacing";
7
8
  @use "../button/button";
8
9
  @use "base";
9
10
  @use "text-field";
@@ -15,7 +16,7 @@ $disable-everything: text-field.$disable-everything !default;
15
16
  /// The `padding-left` to apply to a `Password` when there is a visibility
16
17
  /// icon.
17
18
  /// @type Number
18
- $visibility-toggle-spacing: 0.25rem !default;
19
+ $visibility-toggle-spacing: spacing.get-var(xs) !default;
19
20
 
20
21
  /// Generates all the styles based on feature flags.
21
22
  ///
@@ -60,10 +60,10 @@ $option-selected-styles: (
60
60
  /// prop has not been enabled.
61
61
  ///
62
62
  /// @type Number
63
- $option-padding-left: list.$item-horizontal-padding - math.div(
64
- icon.$size - $option-selected-icon-size,
65
- 2
66
- ) !default;
63
+ $option-padding-left: calc(
64
+ list.$item-horizontal-padding -
65
+ #{math.div(icon.$size - $option-selected-icon-size, 2)}
66
+ ) !default;
67
67
 
68
68
  /// The spacing between the selected icon and the `Option` content.
69
69
  /// @type Number
@@ -3,6 +3,7 @@
3
3
  ////
4
4
 
5
5
  @use "../utils";
6
+ @use "../border-radius";
6
7
  @use "../theme/colors";
7
8
  @use "../theme/theme";
8
9
  @use "../icon/icon";
@@ -136,7 +137,7 @@ $mark-width: $track-inactive-size !default;
136
137
 
137
138
  /// The default border-radius for a discrete `Slider` tick mark.
138
139
  /// @type Number
139
- $mark-border-radius: 50% !default;
140
+ $mark-border-radius: border-radius.get-var(full) !default;
140
141
 
141
142
  /// The light theme `Slider` tick mark color.
142
143
  /// @type Color
@@ -216,7 +217,7 @@ $thumb-size: 1.25rem !default;
216
217
 
217
218
  /// The `border-radius` for the `Slider` thumb.
218
219
  /// @type Number
219
- $thumb-border-radius: 50% !default;
220
+ $thumb-border-radius: border-radius.get-var(full) !default;
220
221
 
221
222
  /// The amount of opacity to apply to the focused/active state of the `Slider`
222
223
  /// thumb.
@@ -266,7 +267,7 @@ $tooltip-caret-size: 0.3rem !default;
266
267
 
267
268
  /// The top/left for the discrete `Slider` tooltip.
268
269
  /// @type Number
269
- $tooltip-offset: -($thumb-size + icon.$spacing) !default;
270
+ $tooltip-offset: calc(-1 * ($thumb-size + icon.$spacing)) !default;
270
271
 
271
272
  /// The `z-index` for the discrete `Slider` tooltip.
272
273
  /// @type Number
@@ -5,6 +5,7 @@
5
5
  @use "sass:color";
6
6
  @use "sass:map";
7
7
  @use "../utils";
8
+ @use "../border-radius";
8
9
  @use "../box-shadows";
9
10
  @use "../theme/colors";
10
11
  @use "../theme/theme";
@@ -41,7 +42,7 @@ $ball-size: 1.25em !default;
41
42
 
42
43
  /// The `Switch` border radius.
43
44
  /// @type Number
44
- $ball-border-radius: 50% !default;
45
+ $ball-border-radius: border-radius.get-var(full) !default;
45
46
 
46
47
  /// The distance from the `left` and `right` of the `Switch` track to display
47
48
  /// the ball.
@@ -8,6 +8,7 @@
8
8
  @use "base";
9
9
  @use "label";
10
10
  @use "text-field";
11
+ @use "../spacing";
11
12
 
12
13
  /// Set to `true` to disable the `TextArea` styles
13
14
  /// @type Boolean
@@ -31,14 +32,14 @@ $disable-resize-vertical: $disable-everything !default;
31
32
 
32
33
  /// The default position for addons within a `TextArea`.
33
34
  /// @type Number
34
- $addon-top: 1rem !default;
35
+ $addon-top: spacing.get-var(lg) !default;
35
36
 
36
37
  /// The default vertical padding to apply to `TextArea` which is useful when
37
38
  /// there is a scrollbar visible. This should normally be enough so that the
38
39
  /// floating label does not cover the content.
39
40
  ///
40
41
  /// @type Number
41
- $vertical-padding: 0.75rem !default;
42
+ $vertical-padding: calc(spacing.get-var(sm) * 1.5) !default;
42
43
 
43
44
  /// The available configurable css variables and mostly used internally for the
44
45
  /// `get-var`, `set-var`, and `use-var` utils.
@@ -4,6 +4,8 @@
4
4
 
5
5
  @use "sass:map";
6
6
  @use "../utils";
7
+ @use "../border-radius";
8
+ @use "../spacing";
7
9
  @use "../box/box";
8
10
  @use "../theme/colors";
9
11
  @use "../theme/theme";
@@ -81,7 +83,7 @@ $label-dense-height: 3.25rem !default;
81
83
 
82
84
  /// The `border-radius` for a `TextField`.
83
85
  /// @type Number
84
- $border-radius: 0.25rem !default;
86
+ $border-radius: border-radius.get-var(xs) !default;
85
87
 
86
88
  /// The `border-width` for a `TextField`.
87
89
  /// @type Number
@@ -94,12 +96,12 @@ $border-width-active: 2px !default;
94
96
  /// The amount of horizontal padding to apply to a `TextField` with the
95
97
  /// `theme="filled"`.
96
98
  /// @type Number
97
- $filled-padding: 0.75rem !default;
99
+ $filled-padding: calc(spacing.get-var(sm) * 1.5) !default;
98
100
 
99
101
  /// The amount of horizontal padding to apply to a `TextField` with the
100
102
  /// `theme="outline"`.
101
103
  /// @type Number
102
- $outlined-padding: 1rem !default;
104
+ $outlined-padding: spacing.get-var(md) !default;
103
105
 
104
106
  /// The amount of horizontal padding to apply to a `TextField` with the
105
107
  /// `theme="underline"`.
@@ -122,7 +124,7 @@ $underlined-placeholder-height: 2.5rem !default;
122
124
  /// `null`.
123
125
  ///
124
126
  /// @type Number
125
- $underlined-placeholder-padding-top: 0.5rem !default;
127
+ $underlined-placeholder-padding-top: spacing.get-var(sm) !default;
126
128
 
127
129
  /// The amount of padding-top to apply to addons in a `TextField` while the
128
130
  /// `theme="underline"`.
@@ -131,7 +133,7 @@ $underlined-placeholder-padding-top: 0.5rem !default;
131
133
  /// `null`.
132
134
  ///
133
135
  /// @type Number
134
- $underlined-placeholder-addon-padding-top: 0.25rem !default;
136
+ $underlined-placeholder-addon-padding-top: spacing.get-var(xs) !default;
135
137
 
136
138
  /// The amount of padding-top to apply to the `TextFieldContainer` while the
137
139
  /// `theme="underline"` and a `label` was provided.
@@ -139,13 +141,13 @@ $underlined-placeholder-addon-padding-top: 0.25rem !default;
139
141
  /// NOTE: This is the default height of the label with line-height
140
142
  ///
141
143
  /// @type Number
142
- $underlined-label-padding-top: 1.5rem !default;
144
+ $underlined-label-padding-top: spacing.get-var(lg) !default;
143
145
 
144
146
  /// The position in the `TextFieldContainer` for a `Label` while the
145
147
  /// `theme="underline"`.
146
148
  ///
147
149
  /// @type Number
148
- $underlined-label-left-offset: icon.$spacing !default;
150
+ $underlined-label-left-offset: spacing.get-var(sm) !default;
149
151
 
150
152
  /// Set this to `null` if not using `<TextField type="color" />` since this is
151
153
  /// used to apply a `min-width` to color inputs.
@@ -157,18 +159,18 @@ $color-min-width: 5rem !default;
157
159
  /// i.e. `leftAddon={<><FavoriteIcon /><CloseIcon /></>}`
158
160
  ///
159
161
  /// @type Number
160
- $addon-gap: 0.25rem !default;
162
+ $addon-gap: spacing.get-var(xs) !default;
161
163
 
162
164
  /// The amount of margin to apply to addons when the `TextField`
163
165
  /// `theme="underline"`.
164
166
  /// @type Number
165
- $addon-margin: icon.$spacing !default;
167
+ $addon-margin: spacing.get-var(sm) !default;
166
168
 
167
169
  /// The amount of spacing between a `TextField` addon and the `<input>`
168
170
  /// element.
169
171
  ///
170
172
  /// @type Number
171
- $addon-spacing: icon.get-var(spacing) !default;
173
+ $addon-spacing: spacing.get-var(sm) !default;
172
174
 
173
175
  /// The border-color for a `theme="outline"` `TextField` in the light theme.
174
176
  /// @type Color
@@ -547,17 +549,19 @@ $variables: (
547
549
  }
548
550
 
549
551
  @if not $disable-addon {
550
- $addon-offset: "#{icon.get-var(size)} + #{$underlined-label-left-offset * 2}";
551
- @if $underlined-padding {
552
- $addon-offset: "#{$addon-offset} + #{$underlined-padding}";
553
- }
552
+ $addon-offset: calc(
553
+ #{icon.get-var(size) +
554
+ if($underlined-padding, "#{$underlined-padding} + ", "")} +
555
+ $underlined-label-left-offset *
556
+ 2
557
+ );
554
558
 
555
559
  &--underline-left-addon {
556
- @include set-var(padding-left, calc(#{$addon-offset}));
560
+ @include set-var(padding-left, $addon-offset);
557
561
  }
558
562
 
559
563
  &--underline-right-addon {
560
- @include set-var(padding-right, calc(#{$addon-offset}));
564
+ @include set-var(padding-right, $addon-offset);
561
565
  }
562
566
  }
563
567
  }
@@ -242,7 +242,7 @@ export interface FormMessageContainerExtension {
242
242
  * component, these props are optional. It kind of eliminates the whole
243
243
  * purpose of this component though.
244
244
  */
245
- messageProps?: PropsWithRef<FormMessageProps & Partial<FormMessageInputLengthCounterProps>, HTMLDivElement>;
245
+ messageProps?: PropsWithRef<FormMessageProps & Partial<FormMessageInputLengthCounterProps>>;
246
246
  /**
247
247
  * Any props (and an optional ref) to provide to the `<div>` surrounding the
248
248
  * children and `FormMessage` component.
@@ -250,7 +250,7 @@ export interface FormMessageContainerExtension {
250
250
  * Note: This will not be used if the `messageProps` are not provided since
251
251
  * only the `children` will be returned without the container.
252
252
  */
253
- messageContainerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
253
+ messageContainerProps?: PropsWithRef<HTMLAttributes<HTMLDivElement>>;
254
254
  }
255
255
  /** @since 6.0.0 */
256
256
  export interface LabelClassNameOptions {
@@ -385,7 +385,7 @@ export interface TextFieldContainerOptions extends FormThemeOptions, FormCompone
385
385
  *
386
386
  * @since 6.0.0
387
387
  */
388
- leftAddonProps?: PropsWithRef<ConfigurableTextFieldAddonProps, HTMLSpanElement>;
388
+ leftAddonProps?: PropsWithRef<ConfigurableTextFieldAddonProps>;
389
389
  /**
390
390
  * @see {@link TextFieldAddonProps.disabled}
391
391
  *
@@ -402,7 +402,7 @@ export interface TextFieldContainerOptions extends FormThemeOptions, FormCompone
402
402
  *
403
403
  * @since 6.0.0
404
404
  */
405
- rightAddonProps?: PropsWithRef<ConfigurableTextFieldAddonProps, HTMLSpanElement>;
405
+ rightAddonProps?: PropsWithRef<ConfigurableTextFieldAddonProps>;
406
406
  /**
407
407
  * @see {@link TextFieldAddonProps.disabled}
408
408
  *
@@ -433,7 +433,7 @@ export interface FormFieldOptions extends TextFieldContainerOptions, FormMessage
433
433
  * }}
434
434
  * ```
435
435
  */
436
- labelProps?: PropsWithRef<LabelProps, HTMLLabelElement>;
436
+ labelProps?: PropsWithRef<LabelProps>;
437
437
  /**
438
438
  * A convenience prop to apply a custom style to a label. This is equivalent
439
439
  * to: