@bspk/ui 1.1.20 → 1.1.22

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 (211) hide show
  1. package/dist/Avatar.d.ts +18 -2
  2. package/dist/Avatar.js +18 -2
  3. package/dist/Avatar.js.map +1 -1
  4. package/dist/AvatarGroup.d.ts +14 -0
  5. package/dist/AvatarGroup.js +14 -0
  6. package/dist/AvatarGroup.js.map +1 -1
  7. package/dist/Badge.d.ts +23 -2
  8. package/dist/Badge.js +12 -3
  9. package/dist/Badge.js.map +1 -1
  10. package/dist/BannerAlert.d.ts +17 -0
  11. package/dist/BannerAlert.js +17 -0
  12. package/dist/BannerAlert.js.map +1 -1
  13. package/dist/Button.d.ts +16 -0
  14. package/dist/Button.js +16 -0
  15. package/dist/Button.js.map +1 -1
  16. package/dist/Card.d.ts +12 -0
  17. package/dist/Card.js +12 -0
  18. package/dist/Card.js.map +1 -1
  19. package/dist/Checkbox.d.ts +21 -0
  20. package/dist/Checkbox.js +21 -0
  21. package/dist/Checkbox.js.map +1 -1
  22. package/dist/CheckboxGroup.d.ts +30 -0
  23. package/dist/CheckboxGroup.js +23 -0
  24. package/dist/CheckboxGroup.js.map +1 -1
  25. package/dist/CheckboxOption.d.ts +23 -1
  26. package/dist/CheckboxOption.js +25 -2
  27. package/dist/CheckboxOption.js.map +1 -1
  28. package/dist/Chip.d.ts +11 -0
  29. package/dist/Chip.js +11 -0
  30. package/dist/Chip.js.map +1 -1
  31. package/dist/Dialog.d.ts +19 -0
  32. package/dist/Dialog.js +19 -0
  33. package/dist/Dialog.js.map +1 -1
  34. package/dist/Divider.d.ts +13 -0
  35. package/dist/Divider.js +13 -0
  36. package/dist/Divider.js.map +1 -1
  37. package/dist/Dropdown.d.ts +30 -0
  38. package/dist/Dropdown.js +30 -0
  39. package/dist/Dropdown.js.map +1 -1
  40. package/dist/DropdownField.d.ts +22 -0
  41. package/dist/DropdownField.js +22 -0
  42. package/dist/DropdownField.js.map +1 -1
  43. package/dist/EmptyState.d.ts +11 -0
  44. package/dist/EmptyState.js +11 -0
  45. package/dist/EmptyState.js.map +1 -1
  46. package/dist/Fab.d.ts +8 -0
  47. package/dist/Fab.js +8 -0
  48. package/dist/Fab.js.map +1 -1
  49. package/dist/FormField.d.ts +25 -0
  50. package/dist/FormField.js +25 -0
  51. package/dist/FormField.js.map +1 -1
  52. package/dist/Img.d.ts +7 -0
  53. package/dist/Img.js +7 -0
  54. package/dist/Img.js.map +1 -1
  55. package/dist/InlineAlert.d.ts +7 -0
  56. package/dist/InlineAlert.js +7 -0
  57. package/dist/InlineAlert.js.map +1 -1
  58. package/dist/Layout.d.ts +7 -0
  59. package/dist/Layout.js +7 -0
  60. package/dist/Layout.js.map +1 -1
  61. package/dist/Link.d.ts +7 -0
  62. package/dist/Link.js +7 -0
  63. package/dist/Link.js.map +1 -1
  64. package/dist/ListItem.d.ts +15 -0
  65. package/dist/ListItem.js +15 -0
  66. package/dist/ListItem.js.map +1 -1
  67. package/dist/Menu.d.ts +28 -0
  68. package/dist/Menu.js +29 -1
  69. package/dist/Menu.js.map +1 -1
  70. package/dist/MenuButton.d.ts +7 -0
  71. package/dist/MenuButton.js +7 -0
  72. package/dist/MenuButton.js.map +1 -1
  73. package/dist/Modal.d.ts +23 -1
  74. package/dist/Modal.js +23 -1
  75. package/dist/Modal.js.map +1 -1
  76. package/dist/NumberField.d.ts +19 -0
  77. package/dist/NumberField.js +19 -0
  78. package/dist/NumberField.js.map +1 -1
  79. package/dist/NumberInput.d.ts +16 -0
  80. package/dist/NumberInput.js +16 -0
  81. package/dist/NumberInput.js.map +1 -1
  82. package/dist/Popover.d.ts +29 -2
  83. package/dist/Popover.js +30 -3
  84. package/dist/Popover.js.map +1 -1
  85. package/dist/ProgressBar.d.ts +8 -0
  86. package/dist/ProgressBar.js +9 -1
  87. package/dist/ProgressBar.js.map +1 -1
  88. package/dist/ProgressCircle.d.ts +8 -0
  89. package/dist/ProgressCircle.js +8 -0
  90. package/dist/ProgressCircle.js.map +1 -1
  91. package/dist/ProgressionStepper.d.ts +12 -0
  92. package/dist/ProgressionStepper.js +12 -0
  93. package/dist/ProgressionStepper.js.map +1 -1
  94. package/dist/RadioGroup.d.ts +38 -6
  95. package/dist/RadioGroup.js +34 -5
  96. package/dist/RadioGroup.js.map +1 -1
  97. package/dist/RadioOption.d.ts +3 -1
  98. package/dist/RadioOption.js +5 -2
  99. package/dist/RadioOption.js.map +1 -1
  100. package/dist/SearchBar.d.ts +41 -3
  101. package/dist/SearchBar.js +34 -0
  102. package/dist/SearchBar.js.map +1 -1
  103. package/dist/SegmentedControl.d.ts +35 -8
  104. package/dist/SegmentedControl.js +24 -2
  105. package/dist/SegmentedControl.js.map +1 -1
  106. package/dist/Skeleton.d.ts +3 -1
  107. package/dist/Skeleton.js +3 -1
  108. package/dist/Skeleton.js.map +1 -1
  109. package/dist/Switch.d.ts +18 -1
  110. package/dist/Switch.js +18 -1
  111. package/dist/Switch.js.map +1 -1
  112. package/dist/SwitchOption.d.ts +4 -2
  113. package/dist/SwitchOption.js +5 -2
  114. package/dist/SwitchOption.js.map +1 -1
  115. package/dist/TabGroup.d.ts +26 -5
  116. package/dist/TabGroup.js +20 -0
  117. package/dist/TabGroup.js.map +1 -1
  118. package/dist/Tag.d.ts +13 -1
  119. package/dist/Tag.js +13 -1
  120. package/dist/Tag.js.map +1 -1
  121. package/dist/TextField.d.ts +21 -2
  122. package/dist/TextField.js +22 -2
  123. package/dist/TextField.js.map +1 -1
  124. package/dist/TextInput.d.ts +22 -3
  125. package/dist/TextInput.js +20 -2
  126. package/dist/TextInput.js.map +1 -1
  127. package/dist/Textarea.d.ts +23 -4
  128. package/dist/Textarea.js +27 -7
  129. package/dist/Textarea.js.map +1 -1
  130. package/dist/TextareaField.d.ts +21 -1
  131. package/dist/TextareaField.js +24 -2
  132. package/dist/TextareaField.js.map +1 -1
  133. package/dist/ToggleOption.d.ts +8 -5
  134. package/dist/ToggleOption.js +3 -3
  135. package/dist/ToggleOption.js.map +1 -1
  136. package/dist/Tooltip.d.ts +15 -3
  137. package/dist/Tooltip.js +20 -3
  138. package/dist/Tooltip.js.map +1 -1
  139. package/dist/Txt.d.ts +9 -1
  140. package/dist/Txt.js +9 -1
  141. package/dist/Txt.js.map +1 -1
  142. package/dist/badge.css +1 -1
  143. package/dist/demo/examples.js +3 -0
  144. package/dist/demo/examples.js.map +1 -1
  145. package/dist/progress-bar.css +1 -1
  146. package/dist/radio-group.css +1 -0
  147. package/dist/textarea.css +1 -1
  148. package/dist/toggle-option.css +1 -1
  149. package/meta.ts +8 -6
  150. package/package.json +1 -1
  151. package/src/Avatar.tsx +18 -2
  152. package/src/AvatarGroup.tsx +14 -0
  153. package/src/Badge.tsx +30 -4
  154. package/src/BannerAlert.tsx +17 -0
  155. package/src/Button.tsx +16 -0
  156. package/src/Card.tsx +12 -0
  157. package/src/Checkbox.tsx +21 -0
  158. package/src/CheckboxGroup.tsx +30 -0
  159. package/src/CheckboxOption.tsx +29 -4
  160. package/src/Chip.tsx +11 -0
  161. package/src/Dialog.tsx +19 -0
  162. package/src/Divider.tsx +13 -0
  163. package/src/Dropdown.tsx +30 -0
  164. package/src/DropdownField.tsx +22 -0
  165. package/src/EmptyState.tsx +11 -0
  166. package/src/Fab.tsx +8 -0
  167. package/src/FormField.tsx +25 -0
  168. package/src/Img.tsx +7 -0
  169. package/src/InlineAlert.tsx +7 -0
  170. package/src/Layout.tsx +7 -0
  171. package/src/Link.tsx +7 -0
  172. package/src/ListItem.tsx +15 -0
  173. package/src/Menu.tsx +29 -0
  174. package/src/MenuButton.tsx +7 -0
  175. package/src/Modal.tsx +23 -1
  176. package/src/NumberField.tsx +19 -0
  177. package/src/NumberInput.tsx +16 -0
  178. package/src/Popover.tsx +53 -5
  179. package/src/ProgressBar.tsx +8 -0
  180. package/src/ProgressCircle.tsx +8 -0
  181. package/src/ProgressionStepper.tsx +12 -0
  182. package/src/RadioGroup.tsx +68 -25
  183. package/src/RadioOption.tsx +9 -4
  184. package/src/SearchBar.tsx +54 -6
  185. package/src/SegmentedControl.tsx +57 -14
  186. package/src/Skeleton.tsx +3 -1
  187. package/src/Switch.tsx +18 -1
  188. package/src/SwitchOption.tsx +11 -6
  189. package/src/TabGroup.tsx +30 -6
  190. package/src/Tag.tsx +13 -1
  191. package/src/TextField.tsx +37 -6
  192. package/src/TextInput.tsx +36 -5
  193. package/src/Textarea.tsx +41 -9
  194. package/src/TextareaField.tsx +33 -4
  195. package/src/ToggleOption.tsx +9 -6
  196. package/src/Tooltip.tsx +29 -5
  197. package/src/Txt.tsx +14 -2
  198. package/src/badge.scss +17 -4
  199. package/src/demo/examples.tsx +3 -0
  200. package/src/progress-bar.scss +0 -2
  201. package/src/radio-group.scss +5 -0
  202. package/src/textarea.scss +4 -0
  203. package/src/toggle-option.scss +1 -20
  204. package/dist/SwitchGroup.d.ts +0 -42
  205. package/dist/SwitchGroup.js +0 -16
  206. package/dist/SwitchGroup.js.map +0 -1
  207. package/dist/hooks/useSwitchGroupState.d.ts +0 -37
  208. package/dist/hooks/useSwitchGroupState.js +0 -57
  209. package/dist/hooks/useSwitchGroupState.js.map +0 -1
  210. package/src/SwitchGroup.tsx +0 -72
  211. package/src/hooks/useSwitchGroupState.ts +0 -75
package/dist/TabGroup.js CHANGED
@@ -11,6 +11,26 @@ const TAB_BADGE_SIZES = {
11
11
  /**
12
12
  * Navigation tool that organizes content across different screens and views.
13
13
  *
14
+ * @example
15
+ * import { useState } from 'react';
16
+ * import { TabGroup } from '@bspk/ui/TabGroup';
17
+ *
18
+ * export function Example() {
19
+ * const [selectedTab, setSelectedTab] = useState<string>();
20
+ *
21
+ * return (
22
+ * <TabGroup
23
+ * onChange={setSelectedTab}
24
+ * options={[
25
+ * { value: '1', label: 'Option 1' },
26
+ * { value: '2', label: 'Option 2' },
27
+ * { value: '3', label: 'Option 3' },
28
+ * ]}
29
+ * value={selectedTab}
30
+ * />
31
+ * );
32
+ * }
33
+ *
14
34
  * @name TabGroup
15
35
  */
16
36
  function TabGroup({
@@ -1 +1 @@
1
- {"version":3,"file":"TabGroup.js","sourceRoot":"","sources":["../src/TabGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAMtE,MAAM,eAAe,GAA6C;IAC9D,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;CACnB,CAAC;AAyFF;;;;GAIG;AACH,SAAS,QAAQ,CAAC;AACd,EAAE;AACF,QAAQ,EAAE,WAAW,EACrB,KAAK,EACL,IAAI,GAAG,QAAQ,EACf,OAAO,EAAE,WAAW,EACpB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,GAAG,cAAc,EACgB;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,CACH,iBACQ,cAAc,eACR,WAAW,qBACJ,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,eAClD,IAAI,gBACH,KAAK,YAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;YAEtC,OAAO,CACH,gCACiB,QAAQ,IAAI,SAAS,EAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,EAEpC,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACrD,CAAC,YAED,2BACK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAC1C,KAAC,KAAK,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,GAAI,CAC5D,IACE,IAXF,IAAI,CAAC,KAAK,CAYV,CACZ,CAAC;QACN,CAAC,CAAC,GACA,CACT,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"TabGroup.js","sourceRoot":"","sources":["../src/TabGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAMtE,MAAM,eAAe,GAA6C;IAC9D,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;CACnB,CAAC;AA0FF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,QAAQ,CAAC;AACd,EAAE;AACF,QAAQ,EAAE,WAAW,EACrB,KAAK,EACL,IAAI,GAAG,QAAQ,EACf,OAAO,EAAE,WAAW,EACpB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,GAAG,cAAc,EACgB;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,CACH,iBACQ,cAAc,eACR,WAAW,qBACJ,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,eAClD,IAAI,gBACH,KAAK,YAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;YAEtC,OAAO,CACH,gCACiB,QAAQ,IAAI,SAAS,EAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,EAEpC,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACrD,CAAC,YAED,2BACK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAC1C,KAAC,KAAK,IACF,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,GAC7B,CACL,IACE,IAdF,IAAI,CAAC,KAAK,CAeV,CACZ,CAAC;QACN,CAAC,CAAC,GACA,CACT,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/Tag.d.ts CHANGED
@@ -47,7 +47,19 @@ export type TagProps<As extends ElementType = 'span'> = {
47
47
  wrap?: boolean;
48
48
  };
49
49
  /**
50
- * A non-interactive visual indicators to draw attention or categorization of a component.
50
+ * A non-interactive visual indicators to draw attention or categorization of a
51
+ * component.
52
+ *
53
+ * @example
54
+ * import { Tag } from '@bspk/ui/Tag';
55
+ *
56
+ * export function Example() {
57
+ * return (
58
+ * <Tag variant="flat" color="primary">
59
+ * Example Tag
60
+ * </Tag>
61
+ * );
62
+ * }
51
63
  *
52
64
  * @name Tag
53
65
  */
package/dist/Tag.js CHANGED
@@ -2,7 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { styleAdd } from './utils/styleAdd';
3
3
  styleAdd(`[data-bspk=tag]{display:flex;flex-direction:column;justify-content:center;width:fit-content;position:relative;padding:0 var(--spacing-sizing-03);border-radius:var(--radius-small);color:var(--foreground) !important;background:var(--background);font:unset;text-decoration:unset;white-space:nowrap;pointer-events:none}[data-bspk=tag][data-wrap]{height:auto}[data-bspk=tag][data-variant=pill]{border-radius:var(--radius-circular)}[data-bspk=tag][data-variant=corner-wrap]{border-bottom-right-radius:0}[data-bspk=tag][data-size=small]{font:var(--labels-small);height:var(--spacing-sizing-08)}[data-bspk=tag][data-size=x-small]{font:var(--labels-x-small);height:var(--spacing-sizing-06)}[data-bspk=tag][data-color=white]{box-shadow:var(--drop-shadow-south)}[data-bspk=tag] [data-triangle]{position:absolute;bottom:-12px;right:0;width:0;height:0;border-style:solid;border-width:12px 12px 0 0;border-color:var(--foreground) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:rotate(0deg)}`);;
4
4
  /**
5
- * A non-interactive visual indicators to draw attention or categorization of a component.
5
+ * A non-interactive visual indicators to draw attention or categorization of a
6
+ * component.
7
+ *
8
+ * @example
9
+ * import { Tag } from '@bspk/ui/Tag';
10
+ *
11
+ * export function Example() {
12
+ * return (
13
+ * <Tag variant="flat" color="primary">
14
+ * Example Tag
15
+ * </Tag>
16
+ * );
17
+ * }
6
18
  *
7
19
  * @name Tag
8
20
  */
package/dist/Tag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../src/Tag.tsx"],"names":[],"mappings":";AAKA,OAAO,YAAY,CAAC;AA+CpB;;;;GAIG;AACH,SAAS,GAAG,CAAkC,EAC1C,QAAQ,EACR,EAAE,EACF,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,MAAM,EAChB,IAAI,EACJ,GAAG,KAAK,EACqB;IAC7B,MAAM,EAAE,GAAgB,EAAE,IAAI,MAAM,CAAC;IAErC,OAAO,CACH,MAAC,EAAE,OACK,KAAK,eACC,KAAK,gBACH,KAAK,eACN,IAAI,kBACD,OAAO,eACV,IAAI,IAAI,SAAS,aAE3B,QAAQ,EACR,OAAO,KAAK,aAAa,IAAI,sCAAqB,IAClD,CACR,CAAC;AACN,CAAC;AAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AAErB,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../src/Tag.tsx"],"names":[],"mappings":";AAKA,OAAO,YAAY,CAAC;AA+CpB;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,GAAG,CAAkC,EAC1C,QAAQ,EACR,EAAE,EACF,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,MAAM,EAChB,IAAI,EACJ,GAAG,KAAK,EACqB;IAC7B,MAAM,EAAE,GAAgB,EAAE,IAAI,MAAM,CAAC;IAErC,OAAO,CACH,MAAC,EAAE,OACK,KAAK,eACC,KAAK,gBACH,KAAK,eACN,IAAI,kBACD,OAAO,eACV,IAAI,IAAI,SAAS,aAE3B,QAAQ,EACR,OAAO,KAAK,aAAa,IAAI,sCAAqB,IAClD,CACR,CAAC;AACN,CAAC;AAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AAErB,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -1,12 +1,31 @@
1
1
  import { FormFieldProps } from './FormField';
2
2
  import { TextInputProps } from './TextInput';
3
3
  import { InvalidPropsLibrary } from '.';
4
- export type TextFieldProps = InvalidPropsLibrary & Pick<TextInputProps, 'autoComplete' | 'disabled' | 'inputRef' | 'leading' | 'name' | 'onChange' | 'placeholder' | 'readOnly' | 'required' | 'size' | 'trailing' | 'type' | 'value'> & Pick<FormFieldProps, 'controlId' | 'errorMessage' | 'helperText' | 'label' | 'labelTrailing'>;
4
+ export type TextFieldProps = InvalidPropsLibrary & Pick<FormFieldProps, 'controlId' | 'errorMessage' | 'helperText' | 'label' | 'labelTrailing'> & Pick<TextInputProps, 'autoComplete' | 'disabled' | 'inputRef' | 'leading' | 'name' | 'onChange' | 'placeholder' | 'readOnly' | 'required' | 'size' | 'trailing' | 'type' | 'value'>;
5
5
  /**
6
- * A text input that allows users to enter text, numbers or symbols in a singular line.
6
+ * A text input that allows users to enter text, numbers or symbols in a
7
+ * singular line.
7
8
  *
8
9
  * This component takes properties from the FormField and TextInput components.
9
10
  *
11
+ * @example
12
+ * import { useState } from 'react';
13
+ * import { TextField } from '@bspk/ui/TextField';
14
+ *
15
+ * export function Example() {
16
+ * const [value, setValue] = useState<string>('');
17
+ *
18
+ * return (
19
+ * <TextField
20
+ * controlId="Example controlId"
21
+ * label="Example label"
22
+ * name="Example name"
23
+ * onChange={setValue}
24
+ * value={value}
25
+ * />
26
+ * );
27
+ * }
28
+ *
10
29
  * @name TextField
11
30
  */
12
31
  declare function TextField({ label, errorMessage: errorMessageProp, helperText, controlId, labelTrailing, required, ...inputProps }: TextFieldProps): import("react/jsx-runtime").JSX.Element;
package/dist/TextField.js CHANGED
@@ -2,14 +2,34 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { FormField } from './FormField';
3
3
  import { TextInput } from './TextInput';
4
4
  /**
5
- * A text input that allows users to enter text, numbers or symbols in a singular line.
5
+ * A text input that allows users to enter text, numbers or symbols in a
6
+ * singular line.
6
7
  *
7
8
  * This component takes properties from the FormField and TextInput components.
8
9
  *
10
+ * @example
11
+ * import { useState } from 'react';
12
+ * import { TextField } from '@bspk/ui/TextField';
13
+ *
14
+ * export function Example() {
15
+ * const [value, setValue] = useState<string>('');
16
+ *
17
+ * return (
18
+ * <TextField
19
+ * controlId="Example controlId"
20
+ * label="Example label"
21
+ * name="Example name"
22
+ * onChange={setValue}
23
+ * value={value}
24
+ * />
25
+ * );
26
+ * }
27
+ *
9
28
  * @name TextField
10
29
  */
11
30
  function TextField({ label, errorMessage: errorMessageProp, helperText, controlId, labelTrailing, required, ...inputProps }) {
12
- const errorMessage = (!inputProps.readOnly && !inputProps.disabled && errorMessageProp) || undefined;
31
+ const errorMessage = (!inputProps.readOnly && !inputProps.disabled && errorMessageProp) ||
32
+ undefined;
13
33
  return (_jsx(FormField, { controlId: controlId, "data-bspk": "text-field", errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: labelTrailing, required: required, children: (fieldProps) => (_jsx(TextInput, { ...inputProps, ...fieldProps, "aria-label": label, id: controlId, required: required })) }));
14
34
  }
15
35
  TextField.bspkName = 'TextField';
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../src/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AAuBxD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,EACf,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,GAAG,UAAU,EACA;IACb,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAErG,OAAO,CACH,KAAC,SAAS,IACN,SAAS,EAAE,SAAS,eACV,YAAY,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,YAEjB,CAAC,UAAU,EAAE,EAAE,CAAC,CACb,KAAC,SAAS,OAAK,UAAU,KAAM,UAAU,gBAAc,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACtG,GACO,CACf,CAAC;AACN,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../src/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AA2BxD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,SAAS,CAAC,EACf,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,GAAG,UAAU,EACA;IACb,MAAM,YAAY,GACd,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAClE,SAAS,CAAC;IAEd,OAAO,CACH,KAAC,SAAS,IACN,SAAS,EAAE,SAAS,eACV,YAAY,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,YAEjB,CAAC,UAAU,EAAE,EAAE,CAAC,CACb,KAAC,SAAS,OACF,UAAU,KACV,UAAU,gBACF,KAAK,EACjB,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,QAAQ,GACpB,CACL,GACO,CACf,CAAC;AACN,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -31,7 +31,8 @@ export type TextInputProps = CommonProps<'aria-label' | 'disabled' | 'id' | 'nam
31
31
  */
32
32
  type?: Extract<HTMLInputTypeAttribute, 'number' | 'text'>;
33
33
  /**
34
- * Specifies if user agent has any permission to provide automated assistance in filling out form field values.
34
+ * Specifies if user agent has any permission to provide automated
35
+ * assistance in filling out form field values.
35
36
  * https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
36
37
  *
37
38
  * @default off
@@ -39,8 +40,26 @@ export type TextInputProps = CommonProps<'aria-label' | 'disabled' | 'id' | 'nam
39
40
  autoComplete?: HTMLInputAutoCompleteAttribute;
40
41
  };
41
42
  /**
42
- * A text input that allows users to enter text, numbers or symbols in a singular line. This is the base element and is
43
- * not intended to be used directly. Use the TextField component.
43
+ * A text input that allows users to enter text, numbers or symbols in a
44
+ * singular line. This is the base element and is not intended to be used
45
+ * directly. Use the TextField component.
46
+ *
47
+ * @example
48
+ * import { useState } from 'react';
49
+ * import { TextInput } from '@bspk/ui/TextInput';
50
+ *
51
+ * export function Example() {
52
+ * const [value, setValue] = useState<string>('');
53
+ *
54
+ * return (
55
+ * <TextInput
56
+ * aria-label="Example aria-label"
57
+ * name="Example name"
58
+ * onChange={setValue}
59
+ * value={value}
60
+ * />
61
+ * );
62
+ * }
44
63
  *
45
64
  * @element
46
65
  *
package/dist/TextInput.js CHANGED
@@ -10,8 +10,26 @@ export const DEFAULT = {
10
10
  autoComplete: 'off',
11
11
  };
12
12
  /**
13
- * A text input that allows users to enter text, numbers or symbols in a singular line. This is the base element and is
14
- * not intended to be used directly. Use the TextField component.
13
+ * A text input that allows users to enter text, numbers or symbols in a
14
+ * singular line. This is the base element and is not intended to be used
15
+ * directly. Use the TextField component.
16
+ *
17
+ * @example
18
+ * import { useState } from 'react';
19
+ * import { TextInput } from '@bspk/ui/TextInput';
20
+ *
21
+ * export function Example() {
22
+ * const [value, setValue] = useState<string>('');
23
+ *
24
+ * return (
25
+ * <TextInput
26
+ * aria-label="Example aria-label"
27
+ * name="Example name"
28
+ * onChange={setValue}
29
+ * value={value}
30
+ * />
31
+ * );
32
+ * }
15
33
  *
16
34
  * @element
17
35
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../src/TextInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,MAA4D;IAClE,YAAY,EAAE,KAAK;CACb,CAAC;AAqCX;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,EACf,OAAO,EAAE,WAAW,EACpB,QAAQ,EACR,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,KAAK,GAAG,OAAO,CAAC,KAAK,EACrB,IAAI,EACJ,YAAY,EAAE,SAAS,EACvB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,EAAE,EAAE,MAAM,EACV,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,GAAG,OAAO,CAAC,YAAY,EACnC,YAAY,EACZ,YAAY,EACZ,GAAG,UAAU,EACqB;IAClC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAEtD,OAAO,CACH,4BACc,YAAY,mBACP,QAAQ,IAAI,SAAS,gBACxB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,SAAS,kBACnC,OAAO,IAAI,SAAS,mBACnB,QAAQ,IAAI,SAAS,mBACrB,QAAQ,IAAI,SAAS,eACzB,IAAI,EACf,GAAG,EAAE,YAAY,KACb,UAAU,aAEb,OAAO,IAAI,+CAAoB,OAAO,GAAQ,EAC/C,qCACuB,YAAY,IAAI,SAAS,kBAC9B,OAAO,IAAI,SAAS,gBACtB,SAAS,EACrB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxC,CAAC,EACD,WAAW,EAAE,WAAW,IAAI,GAAG,EAC/B,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GACd,EACD,QAAQ,IAAI,gDAAqB,QAAQ,GAAQ,EAClD,+BAAmB,OAAO,sBAAY,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,YAC7D,KAAC,SAAS,KAAG,GACR,IACP,CACT,CAAC;AACN,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../src/TextInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,MAA4D;IAClE,YAAY,EAAE,KAAK;CACb,CAAC;AA6CX;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,SAAS,CAAC,EACf,OAAO,EAAE,WAAW,EACpB,QAAQ,EACR,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,KAAK,GAAG,OAAO,CAAC,KAAK,EACrB,IAAI,EACJ,YAAY,EAAE,SAAS,EACvB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,EAAE,EAAE,MAAM,EACV,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,GAAG,OAAO,CAAC,YAAY,EACnC,YAAY,EACZ,YAAY,EACZ,GAAG,UAAU,EACqB;IAClC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAEtD,OAAO,CACH,4BACc,YAAY,mBACP,QAAQ,IAAI,SAAS,gBACxB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,SAAS,kBACnC,OAAO,IAAI,SAAS,mBACnB,QAAQ,IAAI,SAAS,mBACrB,QAAQ,IAAI,SAAS,eACzB,IAAI,EACf,GAAG,EAAE,YAAY,KACb,UAAU,aAEb,OAAO,IAAI,+CAAoB,OAAO,GAAQ,EAC/C,qCACuB,YAAY,IAAI,SAAS,kBAC9B,OAAO,IAAI,SAAS,gBACtB,SAAS,EACrB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxC,CAAC,EACD,WAAW,EAAE,WAAW,IAAI,GAAG,EAC/B,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GACd,EACD,QAAQ,IAAI,gDAAqB,QAAQ,GAAQ,EAClD,+BAAmB,OAAO,sBAAY,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,YAC7D,KAAC,SAAS,KAAG,GACR,IACP,CACT,CAAC;AACN,CAAC;AAED,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -55,11 +55,30 @@ export type TextareaProps = CommonProps<'aria-label' | 'disabled' | 'id' | 'read
55
55
  maxRows?: number;
56
56
  };
57
57
  /**
58
- * A component that allows users to input large amounts of text that could span multiple lines.
58
+ * A component that allows users to input large amounts of text that could span
59
+ * multiple lines.
59
60
  *
60
- * This component gives you a textarea HTML element that automatically adjusts its height to match the length of the
61
- * content within maximum and minimum rows. A character counter when a maxLength is set to show the number of characters
62
- * remaining below the limit.
61
+ * This component gives you a textarea HTML element that automatically adjusts
62
+ * its height to match the length of the content within maximum and minimum
63
+ * rows. A character counter when a maxLength is set to show the number of
64
+ * characters remaining below the limit.
65
+ *
66
+ * @example
67
+ * import { useState } from 'react';
68
+ * import { Textarea } from '@bspk/ui/Textarea';
69
+ *
70
+ * export function Example() {
71
+ * const [value, setValue] = useState<string>('');
72
+ *
73
+ * return (
74
+ * <Textarea
75
+ * aria-label="Example aria-label"
76
+ * name="Example name"
77
+ * onChange={setValue}
78
+ * value={value}
79
+ * />
80
+ * );
81
+ * }
63
82
  *
64
83
  * @element
65
84
  *
package/dist/Textarea.js CHANGED
@@ -3,7 +3,7 @@ import { styleAdd } from './utils/styleAdd';
3
3
  styleAdd(`[data-bspk=textarea]{/*!
4
4
  --min-rows: is set via inline style
5
5
  --max-rows: is set via inline style
6
- */display:grid;width:100%;--font: var(--body-base);--line-height: 20px;--padding: var(--spacing-sizing-03)}[data-bspk=textarea][data-size=small]{--font: var(--body-small);--line-height: 20px;--padding: var(--spacing-sizing-02)}[data-bspk=textarea][data-size=large]{--font: var(--body-large);--line-height: 24px;--padding: var(--spacing-sizing-03)}[data-bspk=textarea] [data-replicated-value]{white-space:pre-wrap;visibility:hidden}[data-bspk=textarea] textarea,[data-bspk=textarea] [data-replicated-value]{width:100%;font:var(--font);border:1px solid var(--border-color);padding:var(--padding);grid-area:1/1/2/2;min-height:calc(var(--line-height)*var(--min-rows) + var(--padding)*2);max-height:calc(var(--line-height)*var(--max-rows) + var(--padding)*2)}[data-bspk=textarea] textarea{--border-color: var(--stroke-neutral-base);resize:none;color:var(--foreground-neutral-on-surface);background-color:var(--surface-neutral-t1-base);border-radius:var(--radius-small)}[data-bspk=textarea] textarea::placeholder{color:var(--foreground-neutral-on-surface-variant-03)}[data-bspk=textarea] textarea:focus-within{--border-color: var(--stroke-neutral-focus);outline:none;color:var(--foreground-neutral-on-surface)}[data-bspk=textarea] textarea:disabled{pointer-events:none;background:linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));color:var(--foreground-neutral-disabled-on-surface)}[data-bspk=textarea] textarea:read-only{background:linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));cursor:not-allowed}[data-bspk=textarea] textarea[aria-invalid]{--border-color: var(--status-error)}`);;
6
+ */display:grid;width:100%;--font: var(--body-base);--line-height: 20px;--padding: var(--spacing-sizing-03)}[data-bspk=textarea][data-size=small]{--font: var(--body-small);--line-height: 20px;--padding: var(--spacing-sizing-02)}[data-bspk=textarea][data-size=large]{--font: var(--body-large);--line-height: 24px;--padding: var(--spacing-sizing-03)}[data-bspk=textarea] [data-replicated-value]{white-space:pre-wrap;visibility:hidden;overflow-y:hidden}[data-bspk=textarea] textarea,[data-bspk=textarea] [data-replicated-value]{width:100%;font:var(--font);border:1px solid var(--border-color);padding:var(--padding);grid-area:1/1/2/2;min-height:calc(var(--line-height)*var(--min-rows) + var(--padding)*2);max-height:calc(var(--line-height)*var(--max-rows) + var(--padding)*2);max-width:100%}[data-bspk=textarea] textarea{--border-color: var(--stroke-neutral-base);text-wrap:break-word;resize:none;color:var(--foreground-neutral-on-surface);background-color:var(--surface-neutral-t1-base);border-radius:var(--radius-small)}[data-bspk=textarea] textarea::placeholder{color:var(--foreground-neutral-on-surface-variant-03)}[data-bspk=textarea] textarea:focus-within{--border-color: var(--stroke-neutral-focus);outline:none;color:var(--foreground-neutral-on-surface)}[data-bspk=textarea] textarea:disabled{pointer-events:none;background:linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));color:var(--foreground-neutral-disabled-on-surface)}[data-bspk=textarea] textarea:read-only{background:linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)),linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base));cursor:not-allowed}[data-bspk=textarea] textarea[aria-invalid]{--border-color: var(--status-error)}`);;
7
7
  import { useId } from './hooks/useId';
8
8
  const DEFAULT = {
9
9
  minRows: 3,
@@ -11,11 +11,30 @@ const DEFAULT = {
11
11
  textSize: 'medium',
12
12
  };
13
13
  /**
14
- * A component that allows users to input large amounts of text that could span multiple lines.
14
+ * A component that allows users to input large amounts of text that could span
15
+ * multiple lines.
15
16
  *
16
- * This component gives you a textarea HTML element that automatically adjusts its height to match the length of the
17
- * content within maximum and minimum rows. A character counter when a maxLength is set to show the number of characters
18
- * remaining below the limit.
17
+ * This component gives you a textarea HTML element that automatically adjusts
18
+ * its height to match the length of the content within maximum and minimum
19
+ * rows. A character counter when a maxLength is set to show the number of
20
+ * characters remaining below the limit.
21
+ *
22
+ * @example
23
+ * import { useState } from 'react';
24
+ * import { Textarea } from '@bspk/ui/Textarea';
25
+ *
26
+ * export function Example() {
27
+ * const [value, setValue] = useState<string>('');
28
+ *
29
+ * return (
30
+ * <Textarea
31
+ * aria-label="Example aria-label"
32
+ * name="Example name"
33
+ * onChange={setValue}
34
+ * value={value}
35
+ * />
36
+ * );
37
+ * }
19
38
  *
20
39
  * @element
21
40
  *
@@ -38,8 +57,9 @@ function Textarea({ invalid: invalidProp, onChange, textSize = DEFAULT.textSize,
38
57
  // we know the textarea was resized, so we don't want to auto-size it
39
58
  if (target.style.height)
40
59
  return;
41
- target.nextSibling.innerText = `${target.value}\n`;
42
- }, placeholder: placeholder, ref: innerRef, value: value }), _jsx("div", { "aria-hidden": true, "data-replicated-value": true })] }));
60
+ target.nextSibling.innerText =
61
+ `${target.value}\n`;
62
+ }, placeholder: placeholder, ref: innerRef, value: value, wrap: "hard" }), _jsx("div", { "aria-hidden": true, "data-replicated-value": true })] }));
43
63
  }
44
64
  Textarea.bspkName = 'Textarea';
45
65
  export { Textarea };
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../src/Textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,iBAAiB,CAAC;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,MAAM,OAAO,GAAG;IACZ,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;CACZ,CAAC;AAyDX;;;;;;;;;;GAUG;AACH,SAAS,QAAQ,CAAC,EACd,OAAO,EAAE,WAAW,EACpB,QAAQ,EACR,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,KAAK,GAAG,EAAE,EACV,IAAI,EACJ,YAAY,EAAE,SAAS,EACvB,QAAQ,EACR,WAAW,EACX,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EACtC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EACtC,YAAY,EACZ,GAAG,UAAU,EACD;IACZ,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC5E,+CAA+C;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAElF,OAAO,CACH,4BACc,UAAU,eACT,QAAQ,EACnB,KAAK,EACD;YACI,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;SACP,aAGtB,sBACQ,UAAU,uBACK,YAAY,IAAI,SAAS,kBAC9B,OAAO,IAAI,SAAS,gBACtB,SAAS,EACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBACd,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B,CAAC;oBACnD,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;gBACzB,CAAC,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACxD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B,CAAC;oBACnD,qEAAqE;oBACrE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;wBAAE,OAAO;oBAC/B,MAAM,CAAC,WAA2B,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;gBACxE,CAAC,EACD,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,GACd,EACF,mEAAyC,IACvC,CACT,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../src/Textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,iBAAiB,CAAC;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,MAAM,OAAO,GAAG;IACZ,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,QAAQ;CACZ,CAAC;AA8DX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAS,QAAQ,CAAC,EACd,OAAO,EAAE,WAAW,EACpB,QAAQ,EACR,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,KAAK,GAAG,EAAE,EACV,IAAI,EACJ,YAAY,EAAE,SAAS,EACvB,QAAQ,EACR,WAAW,EACX,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EACtC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EACtC,YAAY,EACZ,GAAG,UAAU,EACD;IACZ,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC5E,+CAA+C;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACpB,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CACzC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACpB,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CACzC,CAAC;IAEF,OAAO,CACH,4BACc,UAAU,eACT,QAAQ,EACnB,KAAK,EACD;YACI,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,OAAO;SACP,aAGtB,sBACQ,UAAU,uBACK,YAAY,IAAI,SAAS,kBAC9B,OAAO,IAAI,SAAS,gBACtB,SAAS,EACrB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBACd,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B,CAAC;oBACnD,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;gBACzB,CAAC,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACxD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAA6B,CAAC;oBACnD,qEAAqE;oBACrE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;wBAAE,OAAO;oBAC/B,MAAM,CAAC,WAA2B,CAAC,SAAS;wBACzC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;gBAC5B,CAAC,EACD,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,MAAM,GACb,EACF,mEAAyC,IACvC,CACT,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -2,10 +2,30 @@ import { FormFieldProps } from './FormField';
2
2
  import { TextareaProps } from './Textarea';
3
3
  export type TextareaFieldProps = Pick<FormFieldProps, 'controlId' | 'errorMessage' | 'helperText' | 'label'> & TextareaProps;
4
4
  /**
5
- * A component that allows users to input large amounts of text that could span multiple lines.
5
+ * A component that allows users to input large amounts of text that could span
6
+ * multiple lines.
6
7
  *
7
8
  * This component takes properties from the FormField and Textarea components.
8
9
  *
10
+ * @example
11
+ * import { useState } from 'react';
12
+ * import { TextareaField } from '@bspk/ui/TextareaField';
13
+ *
14
+ * export function Example() {
15
+ * const [value, setValue] = useState<string>();
16
+ *
17
+ * return (
18
+ * <TextareaField
19
+ * aria-label="Example aria-label"
20
+ * controlId="Example controlId"
21
+ * label="Example label"
22
+ * name="Example name"
23
+ * onChange={setValue}
24
+ * value={value}
25
+ * />
26
+ * );
27
+ * }
28
+ *
9
29
  * @name TextareaField
10
30
  */
11
31
  declare function TextareaField({ label, errorMessage: errorMessageProp, helperText, controlId: id, onChange, maxLength: maxLengthProp, invalid, readOnly, disabled, required, ...textareaProps }: TextareaFieldProps): import("react/jsx-runtime").JSX.Element | null;
@@ -4,10 +4,30 @@ import { Textarea } from './Textarea';
4
4
  import { Txt } from './Txt';
5
5
  import { tryIntParse } from './utils/tryIntPsrse';
6
6
  /**
7
- * A component that allows users to input large amounts of text that could span multiple lines.
7
+ * A component that allows users to input large amounts of text that could span
8
+ * multiple lines.
8
9
  *
9
10
  * This component takes properties from the FormField and Textarea components.
10
11
  *
12
+ * @example
13
+ * import { useState } from 'react';
14
+ * import { TextareaField } from '@bspk/ui/TextareaField';
15
+ *
16
+ * export function Example() {
17
+ * const [value, setValue] = useState<string>();
18
+ *
19
+ * return (
20
+ * <TextareaField
21
+ * aria-label="Example aria-label"
22
+ * controlId="Example controlId"
23
+ * label="Example label"
24
+ * name="Example name"
25
+ * onChange={setValue}
26
+ * value={value}
27
+ * />
28
+ * );
29
+ * }
30
+ *
11
31
  * @name TextareaField
12
32
  */
13
33
  function TextareaField({ label, errorMessage: errorMessageProp, helperText, controlId: id, onChange, maxLength: maxLengthProp, invalid, readOnly, disabled, required, ...textareaProps }) {
@@ -15,7 +35,9 @@ function TextareaField({ label, errorMessage: errorMessageProp, helperText, cont
15
35
  const errorMessage = (!readOnly && !disabled && errorMessageProp) || undefined;
16
36
  if (typeof onChange !== 'function')
17
37
  return null;
18
- return (_jsx(FormField, { controlId: id, "data-bspk": "textarea-field", errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: _jsx(Txt, { style: { color: 'var(--foreground-neutral-on-surface-variant-02)' }, variant: "body-small", children: `${textareaProps?.value?.length || 0}${maxLength > 0 ? `/${maxLength}` : ''}` }), required: required, children: (fieldProps) => (_jsx(Textarea, { ...textareaProps, ...fieldProps, "aria-label": textareaProps['aria-label'] || label, id: id, invalid: invalid, onChange: (next, event) => {
38
+ return (_jsx(FormField, { controlId: id, "data-bspk": "textarea-field", errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: _jsx(Txt, { style: {
39
+ color: 'var(--foreground-neutral-on-surface-variant-02)',
40
+ }, variant: "body-small", children: `${textareaProps?.value?.length || 0}${maxLength > 0 ? `/${maxLength}` : ''}` }), required: required, children: (fieldProps) => (_jsx(Textarea, { ...textareaProps, ...fieldProps, "aria-label": textareaProps['aria-label'] || label, id: id, invalid: invalid, onChange: (next, event) => {
19
41
  onChange(next, event);
20
42
  }, required: required })) }));
21
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextareaField.js","sourceRoot":"","sources":["../src/TextareaField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,EACnB,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,SAAS,EAAE,EAAE,EACb,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,aAAa,EACC;IACjB,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAE/E,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAEhD,OAAO,CACH,KAAC,SAAS,IACN,SAAS,EAAE,EAAE,eACH,gBAAgB,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EACT,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iDAAiD,EAAE,EAAE,OAAO,EAAC,YAAY,YACzF,GAAG,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAC5E,EAEV,QAAQ,EAAE,QAAQ,YAEjB,CAAC,UAAU,EAAE,EAAE,CAAC,CACb,KAAC,QAAQ,OACD,aAAa,KACb,UAAU,gBACF,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,EAChD,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC,EACD,QAAQ,EAAE,QAAQ,GACpB,CACL,GACO,CACf,CAAC;AACN,CAAC;AAED,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"TextareaField.js","sourceRoot":"","sources":["../src/TextareaField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOlD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,aAAa,CAAC,EACnB,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,SAAS,EAAE,EAAE,EACb,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,aAAa,EACC;IACjB,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GACd,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAE9D,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAEhD,OAAO,CACH,KAAC,SAAS,IACN,SAAS,EAAE,EAAE,eACH,gBAAgB,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EACT,KAAC,GAAG,IACA,KAAK,EAAE;gBACH,KAAK,EAAE,iDAAiD;aAC3D,EACD,OAAO,EAAC,YAAY,YAEnB,GAAG,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAC5E,EAEV,QAAQ,EAAE,QAAQ,YAEjB,CAAC,UAAU,EAAE,EAAE,CAAC,CACb,KAAC,QAAQ,OACD,aAAa,KACb,UAAU,gBACF,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,EAChD,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC,EACD,QAAQ,EAAE,QAAQ,GACpB,CACL,GACO,CACf,CAAC;AACN,CAAC;AAED,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -2,24 +2,27 @@ import './toggle-option.scss';
2
2
  import { ReactElement } from 'react';
3
3
  export type ToggleOptionProps = {
4
4
  /**
5
- * The label of the field. Also used as the aria-label of the checkbox.
5
+ * The label of the option. Also used as the aria-label of the checkbox.
6
6
  *
7
7
  * @required
8
8
  */
9
9
  label: string;
10
- /** The description of the field. */
10
+ /**
11
+ * The description of the option.
12
+ *
13
+ * @type multiline
14
+ * @type multiline
15
+ */
11
16
  description?: string;
12
17
  /** The control element to use. */
13
18
  children?: ReactElement;
14
- /** The size of the control option label. */
15
- size?: 'base' | 'large' | 'small';
16
19
  };
17
20
  /**
18
21
  * A utility component that wraps a checkbox, radio, and switch.
19
22
  *
20
23
  * @name ToggleOption
21
24
  */
22
- declare function ToggleOption({ label, description, children, size }: ToggleOptionProps): import("react/jsx-runtime").JSX.Element;
25
+ declare function ToggleOption({ label, description, children }: ToggleOptionProps): import("react/jsx-runtime").JSX.Element;
23
26
  declare namespace ToggleOption {
24
27
  var bspkName: string;
25
28
  }
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { styleAdd } from './utils/styleAdd';
3
- styleAdd(`[data-bspk=toggle-option]{display:flex;width:100%;box-sizing:border-box;flex-direction:row;padding:0 var(--spacing-sizing-01) 0 0;gap:var(--spacing-sizing-02);user-select:none;background:unset;border:unset;cursor:pointer;min-height:var(--spacing-sizing-08);align-items:center}[data-bspk=toggle-option]:has([data-description]){align-items:unset}@media(any-pointer: coarse){[data-bspk=toggle-option]{min-height:var(--spacing-sizing-12)}}[data-bspk=toggle-option] [data-content]{display:flex;flex-direction:column;padding:2px 0}[data-bspk=toggle-option] [data-label]{color:var(--foreground-neutral-on-surface);font:var(--labels-base)}[data-bspk=toggle-option] [data-description]{font:var(--body-small);color:var(--foreground-neutral-on-surface-variant-01)}[data-bspk=toggle-option][data-size=small] [data-label]{font:var(--labels-small)}[data-bspk=toggle-option][data-size=small] [data-description]{font:var(--body-x-small)}[data-bspk=toggle-option][data-size=large] [data-label]{font:var(--labels-large)}[data-bspk=toggle-option][data-size=large] [data-description]{font:var(--body-base)}[data-pseudo=focus] [data-bspk=toggle-option]:not(:has(:disabled)),[data-bspk=toggle-option]:not(:has(:disabled)):focus-visible,[data-bspk=toggle-option]:not(:has(:disabled)):has(*:focus-visible){outline:var(--stroke-neutral-focus) 2px solid}[data-bspk=toggle-option]:has(:disabled) [data-label]{color:var(--foreground-neutral-disabled-on-surface)}[data-bspk=toggle-option]:has(:disabled) [data-description]{color:var(--foreground-neutral-disabled-on-surface)}`);;
3
+ styleAdd(`[data-bspk=toggle-option]{display:flex;width:100%;box-sizing:border-box;flex-direction:row;padding:0 var(--spacing-sizing-01) 0 0;gap:var(--spacing-sizing-02);user-select:none;background:unset;border:unset;cursor:pointer;min-height:var(--spacing-sizing-08);align-items:center}[data-bspk=toggle-option]:has([data-description]){align-items:unset}@media(any-pointer: coarse){[data-bspk=toggle-option]{min-height:var(--spacing-sizing-12)}}[data-bspk=toggle-option] [data-content]{display:flex;flex-direction:column;padding:2px 0}[data-bspk=toggle-option] [data-label]{color:var(--foreground-neutral-on-surface);font:var(--labels-base)}[data-bspk=toggle-option] [data-description]{font:var(--body-small);color:var(--foreground-neutral-on-surface-variant-01)}[data-pseudo=focus] [data-bspk=toggle-option]:not(:has(:disabled)),[data-bspk=toggle-option]:not(:has(:disabled)):focus-visible,[data-bspk=toggle-option]:not(:has(:disabled)):has(*:focus-visible){outline:var(--stroke-neutral-focus) 2px solid}[data-bspk=toggle-option]:has(:disabled) [data-label]{color:var(--foreground-neutral-disabled-on-surface)}[data-bspk=toggle-option]:has(:disabled) [data-description]{color:var(--foreground-neutral-disabled-on-surface)}`);;
4
4
  /**
5
5
  * A utility component that wraps a checkbox, radio, and switch.
6
6
  *
7
7
  * @name ToggleOption
8
8
  */
9
- function ToggleOption({ label, description, children, size }) {
10
- return (_jsxs("label", { "data-bspk": "toggle-option", "data-size": size, children: [_jsx("span", { "data-control": true, children: children }), _jsxs("span", { "data-content": true, children: [_jsx("span", { "data-label": true, children: label }), description && _jsx("span", { "data-description": true, children: description })] })] }));
9
+ function ToggleOption({ label, description, children }) {
10
+ return (_jsxs("label", { "data-bspk": "toggle-option", children: [_jsx("span", { "data-control": true, children: children }), _jsxs("span", { "data-content": true, children: [_jsx("span", { "data-label": true, children: label }), description && _jsx("span", { "data-description": true, children: description })] })] }));
11
11
  }
12
12
  ToggleOption.bspkName = 'ToggleOption';
13
13
  export { ToggleOption };
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleOption.js","sourceRoot":"","sources":["../src/ToggleOption.tsx"],"names":[],"mappings":";AAAA,OAAO,sBAAsB,CAAC;AAkB9B;;;;GAIG;AACH,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAqB;IAC3E,OAAO,CACH,8BAAiB,eAAe,eAAY,IAAI,aAC5C,+CAAoB,QAAQ,GAAQ,EACpC,iDACI,6CAAkB,KAAK,GAAQ,EAC9B,WAAW,IAAI,mDAAwB,WAAW,GAAQ,IACxD,IACH,CACX,CAAC;AACN,CAAC;AAED,YAAY,CAAC,QAAQ,GAAG,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"ToggleOption.js","sourceRoot":"","sources":["../src/ToggleOption.tsx"],"names":[],"mappings":";AAAA,OAAO,sBAAsB,CAAC;AAqB9B;;;;GAIG;AACH,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAqB;IACrE,OAAO,CACH,8BAAiB,eAAe,aAC5B,+CAAoB,QAAQ,GAAQ,EACpC,iDACI,6CAAkB,KAAK,GAAQ,EAC9B,WAAW,IAAI,mDAAwB,WAAW,GAAQ,IACxD,IACH,CACX,CAAC;AACN,CAAC;AAED,YAAY,CAAC,QAAQ,GAAG,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,CAAC"}
package/dist/Tooltip.d.ts CHANGED
@@ -7,7 +7,7 @@ export type TooltipProps = {
7
7
  *
8
8
  * @default top
9
9
  */
10
- placement?: Placement;
10
+ placement?: Extract<Placement, 'bottom' | 'left' | 'right' | 'top'>;
11
11
  /** The tooltip content. */
12
12
  label: string;
13
13
  /**
@@ -24,14 +24,26 @@ export type TooltipProps = {
24
24
  *
25
25
  * @default true
26
26
  */
27
- tail?: boolean;
27
+ showTail?: boolean;
28
28
  };
29
29
  /**
30
30
  * Brief message that provide additional guidance and helps users perform an action if needed.
31
31
  *
32
+ * @example
33
+ * import { Tooltip } from '@bspk/ui/Tooltip';
34
+ * import { Button } from '@bspk/ui/Button';
35
+ *
36
+ * export function Example() {
37
+ * return (
38
+ * <Tooltip label="I explain what this button does" placement="top">
39
+ * <Button>Click me</Button>
40
+ * </Tooltip>
41
+ * );
42
+ * }
43
+ *
32
44
  * @name Tooltip
33
45
  */
34
- declare function Tooltip({ placement, label, children, disabled, tail }: TooltipProps): import("react/jsx-runtime").JSX.Element;
46
+ declare function Tooltip({ placement, label, children, disabled, showTail, }: TooltipProps): import("react/jsx-runtime").JSX.Element;
35
47
  declare namespace Tooltip {
36
48
  var bspkName: string;
37
49
  }
package/dist/Tooltip.js CHANGED
@@ -4,12 +4,29 @@ styleAdd(`[data-bspk=tooltip]{position:fixed;pointer-events:none;z-index:var(--z
4
4
  import { cloneElement, useId, useMemo, useRef, useState } from 'react';
5
5
  import { Portal } from './Portal';
6
6
  import { useFloating } from './hooks/useFloating';
7
+ const DEFAULT = {
8
+ placement: 'top',
9
+ showTail: true,
10
+ disabled: false,
11
+ };
7
12
  /**
8
13
  * Brief message that provide additional guidance and helps users perform an action if needed.
9
14
  *
15
+ * @example
16
+ * import { Tooltip } from '@bspk/ui/Tooltip';
17
+ * import { Button } from '@bspk/ui/Button';
18
+ *
19
+ * export function Example() {
20
+ * return (
21
+ * <Tooltip label="I explain what this button does" placement="top">
22
+ * <Button>Click me</Button>
23
+ * </Tooltip>
24
+ * );
25
+ * }
26
+ *
10
27
  * @name Tooltip
11
28
  */
12
- function Tooltip({ placement = 'top', label, children, disabled = false, tail = true }) {
29
+ function Tooltip({ placement = DEFAULT.placement, label, children, disabled = DEFAULT.disabled, showTail = DEFAULT.showTail, }) {
13
30
  const id = useId();
14
31
  const [show, setShow] = useState(false);
15
32
  const child = useMemo(() => !disabled &&
@@ -23,14 +40,14 @@ function Tooltip({ placement = 'top', label, children, disabled = false, tail =
23
40
  const { floatingStyles, middlewareData, elements } = useFloating({
24
41
  placement: placement,
25
42
  strategy: 'fixed',
26
- offsetOptions: 8,
43
+ offsetOptions: 4,
27
44
  arrowRef,
28
45
  hide: !show,
29
46
  });
30
47
  return disabled ? (children) : (_jsxs(_Fragment, { children: [child, label && (_jsx(Portal, { children: _jsxs("div", { "data-bspk": "tooltip", "data-placement": middlewareData?.offset?.placement, id: id, ref: (node) => {
31
48
  elements.setFloating(node);
32
49
  elements.setTrigger(document.querySelector(`[aria-describedby="${id}"]`));
33
- }, role: "tooltip", style: floatingStyles, children: [_jsx("span", { "data-text": true, children: label }), tail !== false && (_jsx("span", { "aria-hidden": true, "data-arrow": true, ref: (node) => {
50
+ }, role: "tooltip", style: floatingStyles, children: [_jsx("span", { "data-text": true, children: label }), showTail !== false && (_jsx("span", { "aria-hidden": true, "data-arrow": true, ref: (node) => {
34
51
  arrowRef.current = node;
35
52
  }, style: {
36
53
  left: `${middlewareData?.arrow?.x}px`,
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAgB,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAa,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA4B7D;;;;GAIG;AACH,SAAS,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,EAAgB;IAChG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CACjB,GAAG,EAAE,CACD,CAAC,QAAQ;QACT,QAAQ;QACR,YAAY,CAAC,QAAQ,EAAE;YACnB,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAChC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,kBAAkB,EAAE,EAAE;SACzB,CAAC,EACN,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3B,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAElD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QAC7D,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,CAAC;QAChB,QAAQ;QACR,IAAI,EAAE,CAAC,IAAI;KACd,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,CACd,QAAQ,CACX,CAAC,CAAC,CAAC,CACA,8BACK,KAAK,EACL,KAAK,IAAI,CACN,KAAC,MAAM,cACH,4BACc,SAAS,oBACH,cAAc,EAAE,MAAM,EAAE,SAAS,EACjD,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;wBACV,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC3B,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAc,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC3F,CAAC,EACD,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,cAAc,aAErB,4CAAiB,KAAK,GAAQ,EAC7B,IAAI,KAAK,KAAK,IAAI,CACf,wDAGI,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;gCACV,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC5B,CAAC,EACD,KAAK,EAAE;gCACH,IAAI,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI;gCACrC,GAAG,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI;6BACvC,GACH,CACL,IACC,GACD,CACZ,IACF,CACN,CAAC;AACN,CAAC;AAED,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,EAAgB,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAa,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,GAAG;IACZ,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;CACT,CAAC;AA4BX;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,OAAO,CAAC,EACb,SAAS,GAAG,OAAO,CAAC,SAAS,EAC7B,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAChB;IACX,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CACjB,GAAG,EAAE,CACD,CAAC,QAAQ;QACT,QAAQ;QACR,YAAY,CAAC,QAAQ,EAAE;YACnB,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAChC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,kBAAkB,EAAE,EAAE;SACzB,CAAC,EACN,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3B,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAElD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QAC7D,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,CAAC;QAChB,QAAQ;QACR,IAAI,EAAE,CAAC,IAAI;KACd,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,CACd,QAAQ,CACX,CAAC,CAAC,CAAC,CACA,8BACK,KAAK,EACL,KAAK,IAAI,CACN,KAAC,MAAM,cACH,4BACc,SAAS,oBACH,cAAc,EAAE,MAAM,EAAE,SAAS,EACjD,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;wBACV,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC3B,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAc,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC3F,CAAC,EACD,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,cAAc,aAErB,4CAAiB,KAAK,GAAQ,EAC7B,QAAQ,KAAK,KAAK,IAAI,CACnB,wDAGI,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;gCACV,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC5B,CAAC,EACD,KAAK,EAAE;gCACH,IAAI,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI;gCACrC,GAAG,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI;6BACvC,GACH,CACL,IACC,GACD,CACZ,IACF,CACN,CAAC;AACN,CAAC;AAED,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/Txt.d.ts CHANGED
@@ -26,7 +26,15 @@ export type TxtProps<As extends ElementType = 'span'> = {
26
26
  id?: string;
27
27
  };
28
28
  /**
29
- * A text component that applies the correct font styles based on the variant and size. variant
29
+ * A text component that applies the correct font styles based on the variant
30
+ * and size. variant
31
+ *
32
+ * @example
33
+ * import { Txt } from '@bspk/ui/Txt';
34
+ *
35
+ * export function Example() {
36
+ * return <Txt>Example Txt</Txt>;
37
+ * }
30
38
  *
31
39
  * @name Txt
32
40
  */