@atom-learning/components 5.5.0-beta.1 → 5.6.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 (223) hide show
  1. package/CHANGELOG.md +207 -0
  2. package/dist/components/accordion/Accordion.d.ts +5 -0
  3. package/dist/components/accordion/AccordionContent.d.ts +5 -0
  4. package/dist/components/accordion/AccordionItem.d.ts +5 -0
  5. package/dist/components/accordion/AccordionTrigger.d.ts +5 -0
  6. package/dist/components/action-icon/ActionIcon.d.ts +6 -1
  7. package/dist/components/alert-dialog/AlertDialog.d.ts +10 -0
  8. package/dist/components/alert-dialog/AlertDialogContent.d.ts +5 -0
  9. package/dist/components/avatar/Avatar.d.ts +10 -0
  10. package/dist/components/badge/Badge.d.ts +30 -0
  11. package/dist/components/badge/BadgeIcon.d.ts +10 -0
  12. package/dist/components/badge/BadgeText.d.ts +10 -0
  13. package/dist/components/banner/Banner.d.ts +2 -2
  14. package/dist/components/banner/BannerContainer.d.ts +10 -0
  15. package/dist/components/banner/banner-regular/BannerRegular.d.ts +489 -102
  16. package/dist/components/banner/banner-regular/BannerRegularContent.d.ts +10 -0
  17. package/dist/components/banner/banner-regular/BannerRegularDismiss.d.ts +13 -3
  18. package/dist/components/banner/banner-slim/BannerSlim.d.ts +501 -114
  19. package/dist/components/banner/banner-slim/BannerSlimContainer.d.ts +5 -0
  20. package/dist/components/banner/banner-slim/BannerSlimContent.d.ts +10 -0
  21. package/dist/components/banner/banner-slim/BannerSlimDismiss.d.ts +13 -3
  22. package/dist/components/box/Box.d.ts +5 -0
  23. package/dist/components/button/Button.d.ts +6 -1
  24. package/dist/components/calendar/Day.d.ts +5 -0
  25. package/dist/components/carousel/Carousel.d.ts +15 -0
  26. package/dist/components/carousel/CarouselPagination.d.ts +5 -0
  27. package/dist/components/carousel/CarouselSlide.d.ts +5 -0
  28. package/dist/components/carousel/CarouselSlider.d.ts +5 -0
  29. package/dist/components/checkbox/Checkbox.d.ts +5 -0
  30. package/dist/components/checkbox-field/CheckboxField.js +1 -1
  31. package/dist/components/checkbox-field/CheckboxField.js.map +1 -1
  32. package/dist/components/checkbox-group/CheckboxGroup.d.ts +105 -90
  33. package/dist/components/checkbox-tree/CheckboxTree.d.ts +364 -344
  34. package/dist/components/chip/Chip.d.ts +35 -0
  35. package/dist/components/chip-dismissible-group/ChipDismissibleGroupItem.d.ts +15 -0
  36. package/dist/components/chip-toggle-group/ChipToggleGroupItem.d.ts +15 -0
  37. package/dist/components/combobox/Combobox.d.ts +25 -0
  38. package/dist/components/combobox/ComboboxInput.d.ts +5 -0
  39. package/dist/components/combobox/ComboboxList.d.ts +5 -0
  40. package/dist/components/combobox/ComboboxOption.d.ts +5 -0
  41. package/dist/components/combobox/ComboboxPopover.d.ts +5 -0
  42. package/dist/components/create-password-field/CreatePasswordField.d.ts +1 -1
  43. package/dist/components/create-password-field/CreatePasswordField.js +1 -1
  44. package/dist/components/create-password-field/CreatePasswordField.js.map +1 -1
  45. package/dist/components/data-table/DataTable.d.ts +153 -110
  46. package/dist/components/data-table/DataTableLoading.d.ts +5 -0
  47. package/dist/components/data-table/pagination/Pagination.d.ts +5 -0
  48. package/dist/components/date-field/DateField.d.ts +1 -1
  49. package/dist/components/date-field/DateField.js +1 -1
  50. package/dist/components/date-field/DateField.js.map +1 -1
  51. package/dist/components/dialog/Dialog.d.ts +27 -2
  52. package/dist/components/dialog/DialogBackground.d.ts +10 -0
  53. package/dist/components/dialog/DialogClose.d.ts +5 -0
  54. package/dist/components/dialog/DialogContent.d.ts +5 -0
  55. package/dist/components/dismissible/index.d.ts +2 -2
  56. package/dist/components/dismissible-group/index.d.ts +3 -3
  57. package/dist/components/divider/Divider.d.ts +5 -0
  58. package/dist/components/drawer/Drawer.d.ts +20 -0
  59. package/dist/components/drawer/DrawerContent.d.ts +5 -0
  60. package/dist/components/drawer/DrawerFooter.d.ts +5 -0
  61. package/dist/components/drawer/DrawerHeader.d.ts +5 -0
  62. package/dist/components/drawer/DrawerMain.d.ts +5 -0
  63. package/dist/components/drawer/DrawerOverlay.d.ts +5 -0
  64. package/dist/components/drawer/DrawerTrigger.d.ts +5 -0
  65. package/dist/components/dropdown-menu/DropdownMenu.d.ts +25 -0
  66. package/dist/components/dropdown-menu/DropdownMenuContent.d.ts +5 -0
  67. package/dist/components/dropdown-menu/DropdownMenuItem.d.ts +5 -0
  68. package/dist/components/dropdown-menu/DropdownMenuSeparator.d.ts +5 -0
  69. package/dist/components/dropdown-menu/DropdownMenuTrigger.d.ts +5 -0
  70. package/dist/components/empty-state/EmptyState.d.ts +35 -0
  71. package/dist/components/empty-state/EmptyStateBody.d.ts +10 -0
  72. package/dist/components/empty-state/EmptyStateImage.d.ts +10 -0
  73. package/dist/components/empty-state/EmptyStateTitle.d.ts +5 -0
  74. package/dist/components/field-wrapper/FieldWrapper.d.ts +1 -3
  75. package/dist/components/field-wrapper/FieldWrapper.js +1 -1
  76. package/dist/components/field-wrapper/FieldWrapper.js.map +1 -1
  77. package/dist/components/flex/Flex.d.ts +5 -0
  78. package/dist/components/form/Form.d.ts +7 -3
  79. package/dist/components/form/Form.js +1 -1
  80. package/dist/components/form/Form.js.map +1 -1
  81. package/dist/components/form/index.d.ts +0 -1
  82. package/dist/components/grid/Grid.d.ts +5 -0
  83. package/dist/components/heading/Heading.d.ts +5 -1
  84. package/dist/components/heading/Heading.js +1 -1
  85. package/dist/components/heading/Heading.js.map +1 -1
  86. package/dist/components/icon/Icon.d.ts +5 -0
  87. package/dist/components/image/Image.d.ts +5 -0
  88. package/dist/components/inline-message/InlineMessage.d.ts +10 -0
  89. package/dist/components/input/Input.d.ts +16 -3
  90. package/dist/components/input/Input.js +1 -1
  91. package/dist/components/input/Input.js.map +1 -1
  92. package/dist/components/input-field/InputField.d.ts +1 -1
  93. package/dist/components/input-field/InputField.js +1 -1
  94. package/dist/components/input-field/InputField.js.map +1 -1
  95. package/dist/components/keyboard-shortcut/KeyboardShortcut.d.ts +10 -0
  96. package/dist/components/keyboard-shortcut/index.d.ts +17 -2
  97. package/dist/components/label/Label.d.ts +6 -2
  98. package/dist/components/label/Label.js +1 -1
  99. package/dist/components/label/Label.js.map +1 -1
  100. package/dist/components/link/Link.d.ts +5 -0
  101. package/dist/components/list/List.d.ts +10 -0
  102. package/dist/components/markdown-content/MarkdownContent.d.ts +10 -0
  103. package/dist/components/markdown-content/components/MarkdownEmphasis.d.ts +5 -0
  104. package/dist/components/navigation/NavigationMenu.d.ts +45 -0
  105. package/dist/components/navigation/NavigationMenuDropdownContent.d.ts +5 -0
  106. package/dist/components/navigation/NavigationMenuDropdownItem.d.ts +10 -0
  107. package/dist/components/navigation/NavigationMenuDropdownTrigger.d.ts +5 -0
  108. package/dist/components/navigation/NavigationMenuLink.d.ts +5 -0
  109. package/dist/components/navigation-menu-vertical/NavigationMenuVertical.d.ts +217 -162
  110. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalAccordionContent.d.ts +5 -0
  111. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalAccordionTrigger.d.ts +5 -0
  112. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalIcon.d.ts +10 -0
  113. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalItem.d.ts +5 -0
  114. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalLink.d.ts +5 -0
  115. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalList.d.ts +5 -0
  116. package/dist/components/navigation-menu-vertical/NavigationMenuVerticalText.d.ts +10 -0
  117. package/dist/components/number-input/NumberInput.d.ts +1 -2
  118. package/dist/components/number-input/NumberInput.js +1 -1
  119. package/dist/components/number-input/NumberInput.js.map +1 -1
  120. package/dist/components/number-input/NumberInputStepper.d.ts +1 -756
  121. package/dist/components/number-input/NumberInputStepper.js +1 -1
  122. package/dist/components/number-input/NumberInputStepper.js.map +1 -1
  123. package/dist/components/number-input-field/NumberInputField.d.ts +1 -1
  124. package/dist/components/number-input-field/NumberInputField.js +1 -1
  125. package/dist/components/number-input-field/NumberInputField.js.map +1 -1
  126. package/dist/components/pagination/PaginationNextButton.d.ts +13 -3
  127. package/dist/components/pagination/PaginationPopover.js +1 -1
  128. package/dist/components/pagination/PaginationPopover.js.map +1 -1
  129. package/dist/components/pagination/PaginationPreviousButton.d.ts +13 -3
  130. package/dist/components/password-field/PasswordField.d.ts +1 -1
  131. package/dist/components/password-field/PasswordField.js +1 -1
  132. package/dist/components/password-field/PasswordField.js.map +1 -1
  133. package/dist/components/popover/Popover.d.ts +10 -0
  134. package/dist/components/popover/PopoverContent.d.ts +5 -0
  135. package/dist/components/progress-bar/ProgressBar.d.ts +5 -0
  136. package/dist/components/radio-button/RadioButton.d.ts +5 -0
  137. package/dist/components/radio-button/RadioButtonGroup.d.ts +5 -0
  138. package/dist/components/radio-button-field/RadioButtonField.d.ts +5 -0
  139. package/dist/components/radio-button-field/RadioButtonField.js +1 -1
  140. package/dist/components/radio-button-field/RadioButtonField.js.map +1 -1
  141. package/dist/components/radio-card/RadioCard.d.ts +5 -0
  142. package/dist/components/search-field/SearchField.d.ts +1 -1
  143. package/dist/components/search-field/SearchField.js +1 -1
  144. package/dist/components/search-field/SearchField.js.map +1 -1
  145. package/dist/components/search-input/SearchInput.js +1 -1
  146. package/dist/components/search-input/SearchInput.js.map +1 -1
  147. package/dist/components/section-message/SectionMessage.d.ts +11 -1
  148. package/dist/components/segmented-control/SegmentedControl.d.ts +49 -9
  149. package/dist/components/segmented-control/SegmentedControlContent.d.ts +5 -0
  150. package/dist/components/segmented-control/SegmentedControlDescription.d.ts +10 -0
  151. package/dist/components/segmented-control/SegmentedControlHeading.d.ts +10 -0
  152. package/dist/components/segmented-control/SegmentedControlItem.d.ts +10 -0
  153. package/dist/components/segmented-control/SegmentedControlRoot.d.ts +25 -0
  154. package/dist/components/select/Select.d.ts +5 -1
  155. package/dist/components/select/Select.js +1 -1
  156. package/dist/components/select/Select.js.map +1 -1
  157. package/dist/components/select-field/SelectField.d.ts +1 -1
  158. package/dist/components/select-field/SelectField.js +1 -1
  159. package/dist/components/select-field/SelectField.js.map +1 -1
  160. package/dist/components/side-bar/SideBar.d.ts +40 -0
  161. package/dist/components/side-bar/SideBarComponents.d.ts +36 -1
  162. package/dist/components/slider/Slider.d.ts +5 -0
  163. package/dist/components/sortable/Handle.d.ts +13 -3
  164. package/dist/components/sortable/index.d.ts +3 -3
  165. package/dist/components/spacer/Spacer.d.ts +5 -0
  166. package/dist/components/stepper/StepperStepBullet.d.ts +10 -0
  167. package/dist/components/stepper/StepperStepContainer.d.ts +10 -0
  168. package/dist/components/stepper/StepperStepLabel.d.ts +11 -1
  169. package/dist/components/switch/Switch.d.ts +5 -0
  170. package/dist/components/table/Table.d.ts +40 -0
  171. package/dist/components/table/TableBody.d.ts +5 -0
  172. package/dist/components/table/TableCell.d.ts +5 -0
  173. package/dist/components/table/TableFooter.d.ts +5 -0
  174. package/dist/components/table/TableFooterCell.d.ts +5 -0
  175. package/dist/components/table/TableHeader.d.ts +5 -0
  176. package/dist/components/table/TableHeaderCell.d.ts +5 -0
  177. package/dist/components/table/TableRow.d.ts +5 -0
  178. package/dist/components/tabs/Tabs.d.ts +20 -0
  179. package/dist/components/tabs/TabsContent.d.ts +5 -0
  180. package/dist/components/tabs/TabsTrigger.d.ts +5 -0
  181. package/dist/components/tabs/TabsTriggerList.d.ts +5 -0
  182. package/dist/components/text/Text.d.ts +5 -0
  183. package/dist/components/textarea/Textarea.d.ts +5 -1
  184. package/dist/components/textarea/Textarea.js +1 -1
  185. package/dist/components/textarea/Textarea.js.map +1 -1
  186. package/dist/components/textarea-field/TextareaField.d.ts +1 -1
  187. package/dist/components/textarea-field/TextareaField.js +1 -1
  188. package/dist/components/textarea-field/TextareaField.js.map +1 -1
  189. package/dist/components/tile/Tile.d.ts +5 -1
  190. package/dist/components/tile/Tile.js +1 -1
  191. package/dist/components/tile/Tile.js.map +1 -1
  192. package/dist/components/tile/TileGroup.d.ts +5 -0
  193. package/dist/components/tile-interactive/TileInteractive.d.ts +11 -2
  194. package/dist/components/tile-toggle-group/TileToggleGroupItem.d.ts +16 -2
  195. package/dist/components/toast/Toast.d.ts +10 -0
  196. package/dist/components/toggle-group/ToggleGroupButton.d.ts +10 -0
  197. package/dist/components/toggle-group/ToggleGroupItem.d.ts +10 -0
  198. package/dist/components/toggle-group/ToggleGroupRoot.d.ts +5 -0
  199. package/dist/components/toggle-group/index.d.ts +32 -2
  200. package/dist/components/tooltip/Tooltip.d.ts +10 -0
  201. package/dist/components/tooltip/TooltipContent.d.ts +5 -0
  202. package/dist/components/top-bar/TopBar.d.ts +29 -5
  203. package/dist/components/top-bar/TopBar.js +1 -1
  204. package/dist/components/top-bar/TopBar.js.map +1 -1
  205. package/dist/components/top-bar/TopBarBrand.d.ts +15 -0
  206. package/dist/components/tree/Tree.d.ts +303 -243
  207. package/dist/components/tree/TreeCollapsible.d.ts +5 -0
  208. package/dist/components/tree/TreeCollapsibleContent.d.ts +5 -0
  209. package/dist/components/tree/TreeIcon.d.ts +10 -0
  210. package/dist/components/tree/TreeItemContent.d.ts +5 -0
  211. package/dist/components/tree/TreeListItem.d.ts +5 -0
  212. package/dist/components/video/Video.d.ts +5 -0
  213. package/dist/docgen.json +1 -1
  214. package/dist/experiments/color-scheme/ColorScheme.d.ts +5 -0
  215. package/dist/index.cjs.js +1 -1
  216. package/dist/index.cjs.js.map +1 -1
  217. package/dist/index.js +1 -1
  218. package/dist/stitches.d.ts +55 -0
  219. package/dist/utilities/no-overflow-wrapper/NoOverflowWrapper.d.ts +10 -0
  220. package/package.json +3 -3
  221. package/dist/components/form/useFormCustomContext.d.ts +0 -7
  222. package/dist/components/form/useFormCustomContext.js +0 -2
  223. package/dist/components/form/useFormCustomContext.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type CSS } from '../../stitches';
2
+ import type { CSS } from '../../stitches';
3
3
  export interface NumberInputProps {
4
4
  name: string;
5
5
  min?: number;
@@ -10,7 +10,6 @@ export interface NumberInputProps {
10
10
  disabled?: boolean;
11
11
  readonly?: boolean;
12
12
  size?: 'sm' | 'md' | 'lg';
13
- appearance?: 'standard' | 'modern';
14
13
  onValueChange?: (value: number) => void;
15
14
  stepperButtonLabels?: {
16
15
  increment?: string;
@@ -1,2 +1,2 @@
1
- import{Minus as F,Plus as H}from"@atom-learning/icons";import*as r from"react";import{styled as $}from"../../stitches.js";import"../../utilities/css-wrapper/CSSWrapper.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import"color2k";import"../../utilities/style/keyframe-animations.js";import{getFieldIconSize as V}from"../../utilities/style/get-icon-size.js";import{Flex as X}from"../flex/Flex.js";import{Input as _}from"../input/Input.js";import{NumberInputStepper as k}from"./NumberInputStepper.js";const G=$(X,{variants:{appearance:{standard:{},modern:{gap:"1px"}}}}),N=r.forwardRef(({value:u,defaultValue:T=0,onValueChange:w,min:n=0,max:o=Number.MAX_SAFE_INTEGER,step:m=1,disabled:s=!1,readonly:p=!1,size:x="md",stepperButtonLabels:A,disabledTooltipContent:I,css:M,appearance:d="standard",...z},L)=>{const[a,E]=r.useState(u||T);r.useEffect(()=>{typeof u<"u"&&E(u)},[u]);const l=r.useRef(null);r.useImperativeHandle(L,()=>l.current);const R=r.useMemo(()=>V(x),[x]),h={increment:"increment",decrement:"decrement",...A},y={decrement:`Cannot enter values below ${n}`,increment:`Cannot enter values above ${o}`,...I},c=a>=o,b=a<=n,f=r.useCallback(e=>Math.min(Math.max(e,n),o),[o,n]),t=r.useCallback(e=>{w==null||w(e),E(e)},[w]),B=r.useCallback(e=>{const i=Number(e.target.value.replace(/\D/g,""));t(i)},[t]),v=r.useCallback(()=>{var e;if(c||p)return;(e=l==null?void 0:l.current)==null||e.focus();const i=Number(a)+m;t(f(i))},[f,c,p,m,t,a]),C=r.useCallback(()=>{var e;if(b||p)return;(e=l==null?void 0:l.current)==null||e.focus();const i=Number(a)-m;t(f(i))},[f,b,p,n,m,t,a]),D=r.useCallback(e=>{if(e.nativeEvent.isComposing)return;const i=e.key,g={ArrowUp:v,ArrowRight:v,ArrowDown:C,ArrowLeft:C,Home:()=>t(n),End:()=>t(o)}[i];g&&(e.preventDefault(),g(e))},[v,C,t,n,o]),S={type:"number",value:a,...z,onChange:B,onKeyDown:D,size:x,appearance:d,css:{borderRadius:"0px",width:"$6","&:disabled":{opacity:.3,pointerEvents:"none"}},ref:l,readOnly:p,disabled:s,"aria-valuemin":n,"aria-valuemax":o,"aria-valuenow":a,role:"spinbutton"};return r.createElement(G,{appearance:d,css:M},r.createElement(k,{onClick:C,icon:F,css:{borderRight:"none",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"},size:R,fieldAppearance:d,disabled:b||s,showTooltip:b&&!s,disabledTooltipContent:y.decrement,label:h.decrement}),r.createElement(_,{...S}),r.createElement(k,{onClick:v,icon:H,css:{borderLeft:"none",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"},size:R,fieldAppearance:d,disabled:c||s,showTooltip:c&&!s,disabledTooltipContent:y.increment,label:h.increment}))});N.displayName="NumberInput";export{N as NumberInput};
1
+ import{Minus as B,Plus as F}from"@atom-learning/icons";import*as t from"react";import"../../stitches.js";import"../../utilities/css-wrapper/CSSWrapper.js";import"../../utilities/no-overflow-wrapper/NoOverflowWrapper.js";import"color2k";import"../../utilities/style/keyframe-animations.js";import{getFieldIconSize as H}from"../../utilities/style/get-icon-size.js";import{Flex as $}from"../flex/Flex.js";import{Input as V}from"../input/Input.js";import{NumberInputStepper as k}from"./NumberInputStepper.js";const N=t.forwardRef(({value:m,defaultValue:T=0,onValueChange:C,min:n=0,max:a=Number.MAX_SAFE_INTEGER,step:d=1,disabled:s=!1,readonly:u=!1,size:w="md",stepperButtonLabels:y,disabledTooltipContent:A,css:M,...z},I)=>{const[o,E]=t.useState(m||T);t.useEffect(()=>{typeof m<"u"&&E(m)},[m]);const l=t.useRef(null);t.useImperativeHandle(I,()=>l.current);const R=t.useMemo(()=>H(w),[w]),g={increment:"increment",decrement:"decrement",...y},h={decrement:`Cannot enter values below ${n}`,increment:`Cannot enter values above ${a}`,...A},c=o>=a,p=o<=n,b=t.useCallback(e=>Math.min(Math.max(e,n),a),[a,n]),r=t.useCallback(e=>{C==null||C(e),E(e)},[C]),L=t.useCallback(e=>{const i=Number(e.target.value.replace(/\D/g,""));r(i)},[r]),f=t.useCallback(()=>{var e;if(c||u)return;(e=l==null?void 0:l.current)==null||e.focus();const i=Number(o)+d;r(b(i))},[b,c,u,d,r,o]),v=t.useCallback(()=>{var e;if(p||u)return;(e=l==null?void 0:l.current)==null||e.focus();const i=Number(o)-d;r(b(i))},[b,p,u,n,d,r,o]),D=t.useCallback(e=>{if(e.nativeEvent.isComposing)return;const i=e.key,x={ArrowUp:f,ArrowRight:f,ArrowDown:v,ArrowLeft:v,Home:()=>r(n),End:()=>r(a)}[i];x&&(e.preventDefault(),x(e))},[f,v,r,n,a]),S={type:"number",value:o,...z,onChange:L,onKeyDown:D,size:w,css:{borderRadius:"0px",width:"$6","&:disabled":{opacity:.3,pointerEvents:"none"}},ref:l,readOnly:u,disabled:s,"aria-valuemin":n,"aria-valuemax":a,"aria-valuenow":o,role:"spinbutton"};return t.createElement($,{css:M},t.createElement(k,{onClick:v,icon:B,css:{borderRight:"none",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"},size:R,disabled:p||s,showTooltip:p&&!s,disabledTooltipContent:h.decrement,label:g.decrement}),t.createElement(V,{...S}),t.createElement(k,{onClick:f,icon:F,css:{borderLeft:"none",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"},size:R,disabled:c||s,showTooltip:c&&!s,disabledTooltipContent:h.increment,label:g.increment}))});N.displayName="NumberInput";export{N as NumberInput};
2
2
  //# sourceMappingURL=NumberInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport { styled, type CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n appearance?: 'standard' | 'modern'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nconst NumberInputContainer = styled(Flex, {\n variants: {\n appearance: {\n standard: {},\n modern: { gap: '1px' }\n }\n }\n})\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n appearance = 'standard',\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n appearance,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <NumberInputContainer appearance={appearance} css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n fieldAppearance={appearance}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </NumberInputContainer>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n"],"names":["NumberInputContainer","styled","Flex","NumberInput","React","value","defaultValue","onValueChange","min","max","step","isDisabled","isReadOnly","size","stepperButtonLabelsProp","disabledTooltipContentProp","css","appearance","rest","ref","internalValue","setInternalValue","inputRef","iconSize","getFieldIconSize","stepperButtonLabels","disabledTooltipContent","isAtMax","isAtMin","clamp","updateValue","newValue","onInputChange","event","parsedValue","increment","_a","decrement","onKeyDown","eventKey","action","inputProps","NumberInputStepper","Minus","Input","Plus"],"mappings":"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"}
1
+ {"version":3,"file":"NumberInput.js","sources":["../../../src/components/number-input/NumberInput.tsx"],"sourcesContent":["import { Minus, Plus } from '@atom-learning/icons'\nimport * as React from 'react'\n\nimport type { CSS } from '~/stitches'\nimport { getFieldIconSize } from '~/utilities'\n\nimport { Flex } from '../flex'\nimport { Input } from '../input'\nimport { NumberInputStepper } from './NumberInputStepper'\n\nexport interface NumberInputProps {\n name: string\n min?: number\n max?: number\n step?: number\n value?: number\n defaultValue?: number\n disabled?: boolean\n readonly?: boolean\n size?: 'sm' | 'md' | 'lg'\n onValueChange?: (value: number) => void\n stepperButtonLabels?: { increment?: string; decrement?: string }\n disabledTooltipContent?: { increment?: string; decrement?: string }\n css?: CSS\n}\n\nexport const NumberInput: React.ForwardRefExoticComponent<\n NumberInputProps & { ref: React.Ref<HTMLInputElement> }\n> = React.forwardRef(\n (\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = Number.MAX_SAFE_INTEGER,\n step = 1,\n disabled: isDisabled = false,\n readonly: isReadOnly = false,\n size = 'md',\n stepperButtonLabels: stepperButtonLabelsProp,\n disabledTooltipContent: disabledTooltipContentProp,\n css,\n ...rest\n },\n ref\n ): JSX.Element => {\n const [internalValue, setInternalValue] = React.useState<number>(\n value || defaultValue\n )\n React.useEffect(() => {\n // Update the internal value to match what is passed in.\n if (typeof value !== 'undefined') setInternalValue(value)\n }, [value])\n\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n\n React.useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n const iconSize = React.useMemo(() => getFieldIconSize(size), [size])\n\n const stepperButtonLabels = {\n increment: 'increment',\n decrement: 'decrement',\n ...stepperButtonLabelsProp\n }\n\n const disabledTooltipContent = {\n decrement: `Cannot enter values below ${min}`,\n increment: `Cannot enter values above ${max}`,\n ...disabledTooltipContentProp\n }\n\n const isAtMax = internalValue >= max\n const isAtMin = internalValue <= min\n\n const clamp = React.useCallback(\n (internalValue: number) => Math.min(Math.max(internalValue, min), max),\n [max, min]\n )\n\n const updateValue = React.useCallback(\n (newValue: number) => {\n onValueChange?.(newValue)\n setInternalValue(newValue)\n },\n [onValueChange]\n )\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const parsedValue = Number(event.target.value.replace(/\\D/g, ''))\n updateValue(parsedValue)\n },\n [updateValue]\n )\n\n const increment = React.useCallback(() => {\n if (isAtMax || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) + step\n updateValue(clamp(newValue))\n }, [clamp, isAtMax, isReadOnly, step, updateValue, internalValue])\n\n const decrement = React.useCallback(() => {\n if (isAtMin || isReadOnly) return\n inputRef?.current?.focus()\n const newValue = Number(internalValue) - step\n updateValue(clamp(newValue))\n }, [clamp, isAtMin, isReadOnly, min, step, updateValue, internalValue])\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.nativeEvent.isComposing) return\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const eventKey = event.key\n\n const keyMap: Record<string, React.KeyboardEventHandler> = {\n ArrowUp: increment,\n ArrowRight: increment,\n ArrowDown: decrement,\n ArrowLeft: decrement,\n Home: () => updateValue(min),\n End: () => updateValue(max)\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [increment, decrement, updateValue, min, max]\n )\n\n const inputProps: React.ComponentProps<typeof Input> = {\n type: 'number',\n value: internalValue,\n ...rest,\n onChange: onInputChange,\n onKeyDown,\n size,\n css: {\n borderRadius: '0px',\n width: '$6',\n '&:disabled': { opacity: 0.3, pointerEvents: 'none' }\n },\n ref: inputRef,\n readOnly: isReadOnly,\n disabled: isDisabled,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': internalValue,\n role: 'spinbutton'\n }\n\n return (\n <Flex css={css}>\n <NumberInputStepper\n onClick={decrement}\n icon={Minus}\n css={{\n borderRight: 'none',\n borderTopRightRadius: '0px',\n borderBottomRightRadius: '0px'\n }}\n size={iconSize}\n disabled={isAtMin || isDisabled}\n showTooltip={isAtMin && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.decrement}\n label={stepperButtonLabels.decrement}\n />\n <Input {...inputProps} />\n <NumberInputStepper\n onClick={increment}\n icon={Plus}\n css={{\n borderLeft: 'none',\n borderTopLeftRadius: '0px',\n borderBottomLeftRadius: '0px'\n }}\n size={iconSize}\n disabled={isAtMax || isDisabled}\n showTooltip={isAtMax && !isDisabled}\n disabledTooltipContent={disabledTooltipContent.increment}\n label={stepperButtonLabels.increment}\n />\n </Flex>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n"],"names":["NumberInput","React","value","defaultValue","onValueChange","min","max","step","isDisabled","isReadOnly","size","stepperButtonLabelsProp","disabledTooltipContentProp","css","rest","ref","internalValue","setInternalValue","inputRef","iconSize","getFieldIconSize","stepperButtonLabels","disabledTooltipContent","isAtMax","isAtMin","clamp","updateValue","newValue","onInputChange","event","parsedValue","increment","_a","decrement","onKeyDown","eventKey","action","inputProps","Flex","NumberInputStepper","Minus","Input","Plus"],"mappings":"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"}