@ifloppy/maxcraftmc-ui-svelte 0.1.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 (495) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +11 -0
  4. package/README.md +122 -0
  5. package/css/_popover.scss +325 -0
  6. package/css/all.css +1 -0
  7. package/css/all.scss +81 -0
  8. package/css/g10.css +1 -0
  9. package/css/g10.scss +34 -0
  10. package/css/g100.css +1 -0
  11. package/css/g100.scss +33 -0
  12. package/css/g80.css +1 -0
  13. package/css/g80.scss +34 -0
  14. package/css/g90.css +1 -0
  15. package/css/g90.scss +33 -0
  16. package/css/maxcraft.css +3239 -0
  17. package/css/white.css +1 -0
  18. package/css/white.scss +33 -0
  19. package/docs/compatibility.md +53 -0
  20. package/docs/component-catalog.md +99 -0
  21. package/docs/consumer-checklist.md +42 -0
  22. package/docs/contributing.md +80 -0
  23. package/docs/hugo-integration.md +94 -0
  24. package/docs/installation.md +89 -0
  25. package/docs/publishing.md +74 -0
  26. package/docs/svelte-migration.md +123 -0
  27. package/docs/theme-tokens.md +60 -0
  28. package/examples/component-gallery/index.html +12 -0
  29. package/examples/component-gallery/src/App.svelte +474 -0
  30. package/examples/component-gallery/src/main.js +6 -0
  31. package/examples/component-gallery/vite.config.js +6 -0
  32. package/examples/hugo-head.html +25 -0
  33. package/examples/hugo-module-mounts.toml +34 -0
  34. package/examples/svelte-basic/+layout.svelte +11 -0
  35. package/examples/svelte-basic/+page.svelte +150 -0
  36. package/package.json +80 -0
  37. package/src/Accordion/Accordion.svelte +60 -0
  38. package/src/Accordion/AccordionItem.svelte +79 -0
  39. package/src/Accordion/AccordionSkeleton.svelte +63 -0
  40. package/src/Accordion/index.js +3 -0
  41. package/src/AspectRatio/AspectRatio.svelte +25 -0
  42. package/src/AspectRatio/index.js +1 -0
  43. package/src/Breadcrumb/Breadcrumb.svelte +40 -0
  44. package/src/Breadcrumb/BreadcrumbItem.svelte +46 -0
  45. package/src/Breadcrumb/BreadcrumbSkeleton.svelte +26 -0
  46. package/src/Breadcrumb/index.js +3 -0
  47. package/src/Breakpoint/Breakpoint.svelte +47 -0
  48. package/src/Breakpoint/breakpointObserver.d.ts +28 -0
  49. package/src/Breakpoint/breakpointObserver.js +82 -0
  50. package/src/Breakpoint/breakpoints.d.ts +11 -0
  51. package/src/Breakpoint/breakpoints.js +13 -0
  52. package/src/Breakpoint/index.d.ts +4 -0
  53. package/src/Breakpoint/index.js +3 -0
  54. package/src/Button/Button.svelte +212 -0
  55. package/src/Button/ButtonSet.svelte +12 -0
  56. package/src/Button/ButtonSkeleton.svelte +54 -0
  57. package/src/Button/index.js +3 -0
  58. package/src/Checkbox/Checkbox.svelte +130 -0
  59. package/src/Checkbox/CheckboxSkeleton.svelte +14 -0
  60. package/src/Checkbox/InlineCheckbox.svelte +41 -0
  61. package/src/Checkbox/index.js +3 -0
  62. package/src/CodeSnippet/CodeSnippet.svelte +280 -0
  63. package/src/CodeSnippet/CodeSnippetSkeleton.svelte +27 -0
  64. package/src/CodeSnippet/index.js +2 -0
  65. package/src/ComboBox/ComboBox.svelte +432 -0
  66. package/src/ComboBox/index.js +1 -0
  67. package/src/ComposedModal/ComposedModal.svelte +172 -0
  68. package/src/ComposedModal/ModalBody.svelte +22 -0
  69. package/src/ComposedModal/ModalFooter.svelte +90 -0
  70. package/src/ComposedModal/ModalHeader.svelte +65 -0
  71. package/src/ComposedModal/index.js +4 -0
  72. package/src/ContentSwitcher/ContentSwitcher.svelte +74 -0
  73. package/src/ContentSwitcher/Switch.svelte +72 -0
  74. package/src/ContentSwitcher/index.js +2 -0
  75. package/src/ContextMenu/ContextMenu.svelte +196 -0
  76. package/src/ContextMenu/ContextMenuDivider.svelte +1 -0
  77. package/src/ContextMenu/ContextMenuGroup.svelte +36 -0
  78. package/src/ContextMenu/ContextMenuOption.svelte +286 -0
  79. package/src/ContextMenu/ContextMenuRadioGroup.svelte +34 -0
  80. package/src/ContextMenu/index.js +5 -0
  81. package/src/CopyButton/CopyButton.svelte +82 -0
  82. package/src/CopyButton/index.js +1 -0
  83. package/src/DataTable/DataTable.svelte +609 -0
  84. package/src/DataTable/DataTableSkeleton.svelte +102 -0
  85. package/src/DataTable/DataTableTypes.d.ts +18 -0
  86. package/src/DataTable/Table.svelte +60 -0
  87. package/src/DataTable/TableBody.svelte +3 -0
  88. package/src/DataTable/TableCell.svelte +4 -0
  89. package/src/DataTable/TableContainer.svelte +28 -0
  90. package/src/DataTable/TableHead.svelte +5 -0
  91. package/src/DataTable/TableHeader.svelte +76 -0
  92. package/src/DataTable/TableRow.svelte +4 -0
  93. package/src/DataTable/Toolbar.svelte +34 -0
  94. package/src/DataTable/ToolbarBatchActions.svelte +99 -0
  95. package/src/DataTable/ToolbarContent.svelte +3 -0
  96. package/src/DataTable/ToolbarMenu.svelte +23 -0
  97. package/src/DataTable/ToolbarMenuItem.svelte +9 -0
  98. package/src/DataTable/ToolbarSearch.svelte +122 -0
  99. package/src/DataTable/index.js +15 -0
  100. package/src/DatePicker/DatePicker.svelte +271 -0
  101. package/src/DatePicker/DatePickerInput.svelte +173 -0
  102. package/src/DatePicker/DatePickerSkeleton.svelte +36 -0
  103. package/src/DatePicker/createCalendar.js +100 -0
  104. package/src/DatePicker/index.js +3 -0
  105. package/src/Dropdown/Dropdown.svelte +336 -0
  106. package/src/Dropdown/DropdownSkeleton.svelte +23 -0
  107. package/src/Dropdown/index.js +2 -0
  108. package/src/FileUploader/FileUploader.svelte +177 -0
  109. package/src/FileUploader/FileUploaderButton.svelte +125 -0
  110. package/src/FileUploader/FileUploaderDropContainer.svelte +129 -0
  111. package/src/FileUploader/FileUploaderItem.svelte +79 -0
  112. package/src/FileUploader/FileUploaderSkeleton.svelte +19 -0
  113. package/src/FileUploader/Filename.svelte +57 -0
  114. package/src/FileUploader/index.js +6 -0
  115. package/src/FluidForm/FluidForm.svelte +23 -0
  116. package/src/FluidForm/index.js +1 -0
  117. package/src/Form/Form.svelte +20 -0
  118. package/src/Form/index.js +1 -0
  119. package/src/FormGroup/FormGroup.svelte +44 -0
  120. package/src/FormGroup/index.js +1 -0
  121. package/src/FormItem/FormItem.svelte +12 -0
  122. package/src/FormItem/index.js +1 -0
  123. package/src/FormLabel/FormLabel.svelte +18 -0
  124. package/src/FormLabel/index.js +1 -0
  125. package/src/Grid/Column.svelte +119 -0
  126. package/src/Grid/Grid.svelte +58 -0
  127. package/src/Grid/Row.svelte +54 -0
  128. package/src/Grid/index.js +3 -0
  129. package/src/ImageLoader/ImageLoader.svelte +117 -0
  130. package/src/ImageLoader/index.js +1 -0
  131. package/src/InlineLoading/InlineLoading.svelte +82 -0
  132. package/src/InlineLoading/index.js +1 -0
  133. package/src/Link/Link.svelte +89 -0
  134. package/src/Link/OutboundLink.svelte +18 -0
  135. package/src/Link/index.js +2 -0
  136. package/src/ListBox/ListBox.svelte +64 -0
  137. package/src/ListBox/ListBoxField.svelte +67 -0
  138. package/src/ListBox/ListBoxMenu.svelte +18 -0
  139. package/src/ListBox/ListBoxMenuIcon.svelte +38 -0
  140. package/src/ListBox/ListBoxMenuItem.svelte +38 -0
  141. package/src/ListBox/ListBoxSelection.svelte +114 -0
  142. package/src/ListBox/index.js +6 -0
  143. package/src/ListItem/ListItem.svelte +12 -0
  144. package/src/ListItem/index.js +1 -0
  145. package/src/Loading/Loading.svelte +76 -0
  146. package/src/Loading/index.js +1 -0
  147. package/src/LocalStorage/LocalStorage.svelte +71 -0
  148. package/src/LocalStorage/index.js +1 -0
  149. package/src/Modal/Modal.svelte +304 -0
  150. package/src/Modal/index.js +1 -0
  151. package/src/Modal/modalStore.js +36 -0
  152. package/src/MultiSelect/MultiSelect.svelte +557 -0
  153. package/src/MultiSelect/index.js +1 -0
  154. package/src/Notification/InlineNotification.svelte +114 -0
  155. package/src/Notification/NotificationActionButton.svelte +18 -0
  156. package/src/Notification/NotificationButton.svelte +47 -0
  157. package/src/Notification/NotificationIcon.svelte +41 -0
  158. package/src/Notification/ToastNotification.svelte +131 -0
  159. package/src/Notification/index.js +5 -0
  160. package/src/NumberInput/NumberInput.svelte +279 -0
  161. package/src/NumberInput/NumberInputSkeleton.svelte +20 -0
  162. package/src/NumberInput/index.js +2 -0
  163. package/src/OrderedList/OrderedList.svelte +26 -0
  164. package/src/OrderedList/index.js +1 -0
  165. package/src/OverflowMenu/OverflowMenu.svelte +259 -0
  166. package/src/OverflowMenu/OverflowMenuItem.svelte +117 -0
  167. package/src/OverflowMenu/index.js +2 -0
  168. package/src/Pagination/Pagination.svelte +216 -0
  169. package/src/Pagination/PaginationSkeleton.svelte +24 -0
  170. package/src/Pagination/index.js +2 -0
  171. package/src/PaginationNav/PaginationItem.svelte +23 -0
  172. package/src/PaginationNav/PaginationNav.svelte +190 -0
  173. package/src/PaginationNav/PaginationOverflow.svelte +56 -0
  174. package/src/PaginationNav/index.js +1 -0
  175. package/src/Popover/Popover.svelte +73 -0
  176. package/src/Popover/index.js +1 -0
  177. package/src/ProgressBar/ProgressBar.svelte +110 -0
  178. package/src/ProgressBar/index.js +1 -0
  179. package/src/ProgressIndicator/ProgressIndicator.svelte +79 -0
  180. package/src/ProgressIndicator/ProgressIndicatorSkeleton.svelte +38 -0
  181. package/src/ProgressIndicator/ProgressStep.svelte +107 -0
  182. package/src/ProgressIndicator/index.js +3 -0
  183. package/src/RadioButton/RadioButton.svelte +93 -0
  184. package/src/RadioButton/RadioButtonSkeleton.svelte +13 -0
  185. package/src/RadioButton/index.js +2 -0
  186. package/src/RadioButtonGroup/RadioButtonGroup.svelte +120 -0
  187. package/src/RadioButtonGroup/index.js +1 -0
  188. package/src/RecursiveList/RecursiveList.svelte +38 -0
  189. package/src/RecursiveList/RecursiveListItem.svelte +19 -0
  190. package/src/RecursiveList/index.js +1 -0
  191. package/src/Search/Search.svelte +173 -0
  192. package/src/Search/SearchSkeleton.svelte +24 -0
  193. package/src/Search/index.js +2 -0
  194. package/src/Select/Select.svelte +248 -0
  195. package/src/Select/SelectItem.svelte +63 -0
  196. package/src/Select/SelectItemGroup.svelte +11 -0
  197. package/src/Select/SelectSkeleton.svelte +22 -0
  198. package/src/Select/index.js +4 -0
  199. package/src/SkeletonPlaceholder/SkeletonPlaceholder.svelte +10 -0
  200. package/src/SkeletonPlaceholder/index.js +1 -0
  201. package/src/SkeletonText/SkeletonText.svelte +50 -0
  202. package/src/SkeletonText/index.js +1 -0
  203. package/src/Slider/Slider.svelte +232 -0
  204. package/src/Slider/SliderSkeleton.svelte +28 -0
  205. package/src/Slider/index.js +2 -0
  206. package/src/StructuredList/StructuredList.svelte +53 -0
  207. package/src/StructuredList/StructuredListBody.svelte +13 -0
  208. package/src/StructuredList/StructuredListCell.svelte +22 -0
  209. package/src/StructuredList/StructuredListHead.svelte +13 -0
  210. package/src/StructuredList/StructuredListInput.svelte +45 -0
  211. package/src/StructuredList/StructuredListRow.svelte +44 -0
  212. package/src/StructuredList/StructuredListSkeleton.svelte +36 -0
  213. package/src/StructuredList/index.js +7 -0
  214. package/src/Tabs/Tab.svelte +74 -0
  215. package/src/Tabs/TabContent.svelte +26 -0
  216. package/src/Tabs/Tabs.svelte +168 -0
  217. package/src/Tabs/TabsSkeleton.svelte +34 -0
  218. package/src/Tabs/index.js +4 -0
  219. package/src/Tag/Tag.svelte +172 -0
  220. package/src/Tag/TagSkeleton.svelte +17 -0
  221. package/src/Tag/index.js +2 -0
  222. package/src/TextArea/TextArea.svelte +134 -0
  223. package/src/TextArea/TextAreaSkeleton.svelte +20 -0
  224. package/src/TextArea/index.js +2 -0
  225. package/src/TextInput/PasswordInput.svelte +265 -0
  226. package/src/TextInput/TextInput.svelte +249 -0
  227. package/src/TextInput/TextInputSkeleton.svelte +20 -0
  228. package/src/TextInput/index.js +3 -0
  229. package/src/Theme/Theme.svelte +120 -0
  230. package/src/Theme/index.js +1 -0
  231. package/src/Tile/ClickableTile.svelte +43 -0
  232. package/src/Tile/ExpandableTile.svelte +104 -0
  233. package/src/Tile/RadioTile.svelte +95 -0
  234. package/src/Tile/SelectableTile.svelte +95 -0
  235. package/src/Tile/Tile.svelte +18 -0
  236. package/src/Tile/TileGroup.svelte +66 -0
  237. package/src/Tile/index.js +6 -0
  238. package/src/TimePicker/TimePicker.svelte +115 -0
  239. package/src/TimePicker/TimePickerSelect.svelte +78 -0
  240. package/src/TimePicker/index.js +2 -0
  241. package/src/Toggle/Toggle.svelte +107 -0
  242. package/src/Toggle/ToggleSkeleton.svelte +51 -0
  243. package/src/Toggle/index.js +2 -0
  244. package/src/Tooltip/Tooltip.svelte +269 -0
  245. package/src/Tooltip/TooltipFooter.svelte +29 -0
  246. package/src/Tooltip/index.js +2 -0
  247. package/src/TooltipDefinition/TooltipDefinition.svelte +85 -0
  248. package/src/TooltipDefinition/index.js +1 -0
  249. package/src/TooltipIcon/TooltipIcon.svelte +83 -0
  250. package/src/TooltipIcon/index.js +1 -0
  251. package/src/TreeView/TreeView.svelte +266 -0
  252. package/src/TreeView/TreeViewNode.svelte +133 -0
  253. package/src/TreeView/TreeViewNodeList.svelte +179 -0
  254. package/src/TreeView/index.d.ts +1 -0
  255. package/src/TreeView/index.js +1 -0
  256. package/src/Truncate/Truncate.svelte +12 -0
  257. package/src/Truncate/index.js +2 -0
  258. package/src/Truncate/truncate.d.ts +12 -0
  259. package/src/Truncate/truncate.js +29 -0
  260. package/src/UIShell/Content.svelte +24 -0
  261. package/src/UIShell/HamburgerMenu.svelte +45 -0
  262. package/src/UIShell/Header.svelte +103 -0
  263. package/src/UIShell/HeaderAction.svelte +160 -0
  264. package/src/UIShell/HeaderActionLink.svelte +43 -0
  265. package/src/UIShell/HeaderGlobalAction.svelte +33 -0
  266. package/src/UIShell/HeaderNav.svelte +13 -0
  267. package/src/UIShell/HeaderNavItem.svelte +66 -0
  268. package/src/UIShell/HeaderNavMenu.svelte +106 -0
  269. package/src/UIShell/HeaderPanelDivider.svelte +22 -0
  270. package/src/UIShell/HeaderPanelLink.svelte +23 -0
  271. package/src/UIShell/HeaderPanelLinks.svelte +3 -0
  272. package/src/UIShell/HeaderSearch.svelte +338 -0
  273. package/src/UIShell/HeaderUtilities.svelte +3 -0
  274. package/src/UIShell/SideNav.svelte +84 -0
  275. package/src/UIShell/SideNavDivider.svelte +1 -0
  276. package/src/UIShell/SideNavItems.svelte +3 -0
  277. package/src/UIShell/SideNavLink.svelte +54 -0
  278. package/src/UIShell/SideNavMenu.svelte +59 -0
  279. package/src/UIShell/SideNavMenuItem.svelte +32 -0
  280. package/src/UIShell/SkipToContent.svelte +11 -0
  281. package/src/UIShell/index.js +20 -0
  282. package/src/UIShell/navStore.js +7 -0
  283. package/src/UnorderedList/UnorderedList.svelte +22 -0
  284. package/src/UnorderedList/index.js +1 -0
  285. package/src/icons/Add.svelte +28 -0
  286. package/src/icons/ArrowUp.svelte +28 -0
  287. package/src/icons/ArrowsVertical.svelte +28 -0
  288. package/src/icons/Calendar.svelte +28 -0
  289. package/src/icons/CaretDown.svelte +26 -0
  290. package/src/icons/CaretLeft.svelte +26 -0
  291. package/src/icons/CaretRight.svelte +26 -0
  292. package/src/icons/Checkmark.svelte +26 -0
  293. package/src/icons/CheckmarkFilled.svelte +32 -0
  294. package/src/icons/CheckmarkOutline.svelte +30 -0
  295. package/src/icons/ChevronDown.svelte +26 -0
  296. package/src/icons/ChevronRight.svelte +26 -0
  297. package/src/icons/CircleDash.svelte +28 -0
  298. package/src/icons/Close.svelte +28 -0
  299. package/src/icons/Copy.svelte +28 -0
  300. package/src/icons/EditOff.svelte +28 -0
  301. package/src/icons/ErrorFilled.svelte +33 -0
  302. package/src/icons/IconSearch.svelte +28 -0
  303. package/src/icons/Incomplete.svelte +28 -0
  304. package/src/icons/Information.svelte +30 -0
  305. package/src/icons/InformationFilled.svelte +32 -0
  306. package/src/icons/InformationSquareFilled.svelte +32 -0
  307. package/src/icons/Launch.svelte +30 -0
  308. package/src/icons/Menu.svelte +26 -0
  309. package/src/icons/OverflowMenuHorizontal.svelte +27 -0
  310. package/src/icons/OverflowMenuVertical.svelte +27 -0
  311. package/src/icons/Settings.svelte +30 -0
  312. package/src/icons/Subtract.svelte +26 -0
  313. package/src/icons/Switcher.svelte +28 -0
  314. package/src/icons/View.svelte +30 -0
  315. package/src/icons/ViewOff.svelte +30 -0
  316. package/src/icons/Warning.svelte +29 -0
  317. package/src/icons/WarningAltFilled.svelte +34 -0
  318. package/src/icons/WarningFilled.svelte +33 -0
  319. package/src/index.js +155 -0
  320. package/src/utils/toHierarchy.d.ts +21 -0
  321. package/src/utils/toHierarchy.js +49 -0
  322. package/tokens/maxcraft.css +84 -0
  323. package/types/Accordion/Accordion.svelte.d.ts +39 -0
  324. package/types/Accordion/AccordionItem.svelte.d.ts +48 -0
  325. package/types/Accordion/AccordionSkeleton.svelte.d.ts +45 -0
  326. package/types/AspectRatio/AspectRatio.svelte.d.ts +31 -0
  327. package/types/Breadcrumb/Breadcrumb.svelte.d.ts +27 -0
  328. package/types/Breadcrumb/BreadcrumbItem.svelte.d.ts +33 -0
  329. package/types/Breadcrumb/BreadcrumbSkeleton.svelte.d.ts +33 -0
  330. package/types/Breakpoint/Breakpoint.svelte.d.ts +30 -0
  331. package/types/Breakpoint/breakpointObserver.d.ts +28 -0
  332. package/types/Breakpoint/breakpoints.d.ts +11 -0
  333. package/types/Breakpoint/index.d.ts +4 -0
  334. package/types/Button/Button.svelte.d.ts +140 -0
  335. package/types/Button/ButtonSet.svelte.d.ts +22 -0
  336. package/types/Button/ButtonSkeleton.svelte.d.ts +35 -0
  337. package/types/Checkbox/Checkbox.svelte.d.ts +109 -0
  338. package/types/Checkbox/CheckboxSkeleton.svelte.d.ts +21 -0
  339. package/types/CodeSnippet/CodeSnippet.svelte.d.ts +140 -0
  340. package/types/CodeSnippet/CodeSnippetSkeleton.svelte.d.ts +27 -0
  341. package/types/ComboBox/ComboBox.svelte.d.ts +189 -0
  342. package/types/ComposedModal/ComposedModal.svelte.d.ts +69 -0
  343. package/types/ComposedModal/ModalBody.svelte.d.ts +28 -0
  344. package/types/ComposedModal/ModalFooter.svelte.d.ts +65 -0
  345. package/types/ComposedModal/ModalHeader.svelte.d.ts +58 -0
  346. package/types/ContentSwitcher/ContentSwitcher.svelte.d.ts +34 -0
  347. package/types/ContentSwitcher/Switch.svelte.d.ts +53 -0
  348. package/types/ContextMenu/ContextMenu.svelte.d.ts +53 -0
  349. package/types/ContextMenu/ContextMenuDivider.svelte.d.ts +9 -0
  350. package/types/ContextMenu/ContextMenuGroup.svelte.d.ts +20 -0
  351. package/types/ContextMenu/ContextMenuOption.svelte.d.ts +86 -0
  352. package/types/ContextMenu/ContextMenuRadioGroup.svelte.d.ts +21 -0
  353. package/types/CopyButton/CopyButton.svelte.d.ts +50 -0
  354. package/types/DataTable/DataTable.svelte.d.ts +238 -0
  355. package/types/DataTable/DataTableSkeleton.svelte.d.ts +67 -0
  356. package/types/DataTable/DataTableTypes.d.ts +18 -0
  357. package/types/DataTable/Table.svelte.d.ts +52 -0
  358. package/types/DataTable/TableBody.svelte.d.ts +16 -0
  359. package/types/DataTable/TableCell.svelte.d.ts +21 -0
  360. package/types/DataTable/TableContainer.svelte.d.ts +40 -0
  361. package/types/DataTable/TableHead.svelte.d.ts +21 -0
  362. package/types/DataTable/TableHeader.svelte.d.ts +57 -0
  363. package/types/DataTable/TableRow.svelte.d.ts +21 -0
  364. package/types/DataTable/Toolbar.svelte.d.ts +22 -0
  365. package/types/DataTable/ToolbarBatchActions.svelte.d.ts +28 -0
  366. package/types/DataTable/ToolbarContent.svelte.d.ts +9 -0
  367. package/types/DataTable/ToolbarMenu.svelte.d.ts +10 -0
  368. package/types/DataTable/ToolbarMenuItem.svelte.d.ts +10 -0
  369. package/types/DataTable/ToolbarSearch.svelte.d.ts +84 -0
  370. package/types/DatePicker/DatePicker.svelte.d.ts +105 -0
  371. package/types/DatePicker/DatePickerInput.svelte.d.ts +118 -0
  372. package/types/DatePicker/DatePickerSkeleton.svelte.d.ts +33 -0
  373. package/types/Dropdown/Dropdown.svelte.d.ts +160 -0
  374. package/types/Dropdown/DropdownSkeleton.svelte.d.ts +27 -0
  375. package/types/FileUploader/FileUploader.svelte.d.ts +104 -0
  376. package/types/FileUploader/FileUploaderButton.svelte.d.ts +98 -0
  377. package/types/FileUploader/FileUploaderDropContainer.svelte.d.ts +92 -0
  378. package/types/FileUploader/FileUploaderItem.svelte.d.ts +69 -0
  379. package/types/FileUploader/FileUploaderSkeleton.svelte.d.ts +21 -0
  380. package/types/FileUploader/Filename.svelte.d.ts +36 -0
  381. package/types/FluidForm/FluidForm.svelte.d.ts +23 -0
  382. package/types/Form/Form.svelte.d.ts +29 -0
  383. package/types/FormGroup/FormGroup.svelte.d.ts +57 -0
  384. package/types/FormItem/FormItem.svelte.d.ts +21 -0
  385. package/types/FormLabel/FormLabel.svelte.d.ts +27 -0
  386. package/types/Grid/Column.svelte.d.ts +92 -0
  387. package/types/Grid/Grid.svelte.d.ts +65 -0
  388. package/types/Grid/Row.svelte.d.ts +59 -0
  389. package/types/ImageLoader/ImageLoader.svelte.d.ts +64 -0
  390. package/types/InlineLoading/InlineLoading.svelte.d.ts +47 -0
  391. package/types/Link/Link.svelte.d.ts +64 -0
  392. package/types/Link/OutboundLink.svelte.d.ts +15 -0
  393. package/types/ListBox/ListBox.svelte.d.ts +70 -0
  394. package/types/ListBox/ListBoxField.svelte.d.ts +67 -0
  395. package/types/ListBox/ListBoxMenu.svelte.d.ts +28 -0
  396. package/types/ListBox/ListBoxMenuIcon.svelte.d.ts +35 -0
  397. package/types/ListBox/ListBoxMenuItem.svelte.d.ts +38 -0
  398. package/types/ListBox/ListBoxSelection.svelte.d.ts +47 -0
  399. package/types/ListItem/ListItem.svelte.d.ts +21 -0
  400. package/types/Loading/Loading.svelte.d.ts +40 -0
  401. package/types/LocalStorage/LocalStorage.svelte.d.ts +34 -0
  402. package/types/Modal/Modal.svelte.d.ts +156 -0
  403. package/types/MultiSelect/MultiSelect.svelte.d.ts +264 -0
  404. package/types/Notification/InlineNotification.svelte.d.ts +82 -0
  405. package/types/Notification/NotificationActionButton.svelte.d.ts +15 -0
  406. package/types/Notification/NotificationButton.svelte.d.ts +45 -0
  407. package/types/Notification/NotificationIcon.svelte.d.ts +33 -0
  408. package/types/Notification/ToastNotification.svelte.d.ts +95 -0
  409. package/types/NumberInput/NumberInput.svelte.d.ts +168 -0
  410. package/types/NumberInput/NumberInputSkeleton.svelte.d.ts +27 -0
  411. package/types/OrderedList/OrderedList.svelte.d.ts +39 -0
  412. package/types/OverflowMenu/OverflowMenu.svelte.d.ts +96 -0
  413. package/types/OverflowMenu/OverflowMenuItem.svelte.d.ts +71 -0
  414. package/types/Pagination/Pagination.svelte.d.ts +129 -0
  415. package/types/Pagination/PaginationSkeleton.svelte.d.ts +21 -0
  416. package/types/PaginationNav/PaginationNav.svelte.d.ts +63 -0
  417. package/types/Popover/Popover.svelte.d.ts +70 -0
  418. package/types/ProgressBar/ProgressBar.svelte.d.ts +70 -0
  419. package/types/ProgressIndicator/ProgressIndicator.svelte.d.ts +46 -0
  420. package/types/ProgressIndicator/ProgressIndicatorSkeleton.svelte.d.ts +34 -0
  421. package/types/ProgressIndicator/ProgressStep.svelte.d.ts +70 -0
  422. package/types/RadioButton/RadioButton.svelte.d.ts +80 -0
  423. package/types/RadioButton/RadioButtonSkeleton.svelte.d.ts +21 -0
  424. package/types/RadioButtonGroup/RadioButtonGroup.svelte.d.ts +76 -0
  425. package/types/RecursiveList/RecursiveList.svelte.d.ts +34 -0
  426. package/types/Search/Search.svelte.d.ts +128 -0
  427. package/types/Search/SearchSkeleton.svelte.d.ts +27 -0
  428. package/types/Select/Select.svelte.d.ts +124 -0
  429. package/types/Select/SelectItem.svelte.d.ts +46 -0
  430. package/types/Select/SelectItemGroup.svelte.d.ts +28 -0
  431. package/types/Select/SelectSkeleton.svelte.d.ts +27 -0
  432. package/types/SkeletonPlaceholder/SkeletonPlaceholder.svelte.d.ts +21 -0
  433. package/types/SkeletonText/SkeletonText.svelte.d.ts +45 -0
  434. package/types/Slider/Slider.svelte.d.ts +139 -0
  435. package/types/Slider/SliderSkeleton.svelte.d.ts +27 -0
  436. package/types/StructuredList/StructuredList.svelte.d.ts +46 -0
  437. package/types/StructuredList/StructuredListBody.svelte.d.ts +21 -0
  438. package/types/StructuredList/StructuredListCell.svelte.d.ts +33 -0
  439. package/types/StructuredList/StructuredListHead.svelte.d.ts +21 -0
  440. package/types/StructuredList/StructuredListInput.svelte.d.ts +52 -0
  441. package/types/StructuredList/StructuredListRow.svelte.d.ts +40 -0
  442. package/types/StructuredList/StructuredListSkeleton.svelte.d.ts +28 -0
  443. package/types/Tabs/Tab.svelte.d.ts +58 -0
  444. package/types/Tabs/TabContent.svelte.d.ts +22 -0
  445. package/types/Tabs/Tabs.svelte.d.ts +50 -0
  446. package/types/Tabs/TabsSkeleton.svelte.d.ts +33 -0
  447. package/types/Tag/Tag.svelte.d.ts +87 -0
  448. package/types/Tag/TagSkeleton.svelte.d.ts +26 -0
  449. package/types/TextArea/TextArea.svelte.d.ts +124 -0
  450. package/types/TextArea/TextAreaSkeleton.svelte.d.ts +27 -0
  451. package/types/TextInput/PasswordInput.svelte.d.ts +154 -0
  452. package/types/TextInput/TextInput.svelte.d.ts +139 -0
  453. package/types/TextInput/TextInputSkeleton.svelte.d.ts +27 -0
  454. package/types/Theme/Theme.svelte.d.ts +58 -0
  455. package/types/Tile/ClickableTile.svelte.d.ts +46 -0
  456. package/types/Tile/ExpandableTile.svelte.d.ts +88 -0
  457. package/types/Tile/RadioTile.svelte.d.ts +77 -0
  458. package/types/Tile/SelectableTile.svelte.d.ts +84 -0
  459. package/types/Tile/Tile.svelte.d.ts +27 -0
  460. package/types/Tile/TileGroup.svelte.d.ts +46 -0
  461. package/types/TimePicker/TimePicker.svelte.d.ts +112 -0
  462. package/types/TimePicker/TimePickerSelect.svelte.d.ts +63 -0
  463. package/types/Toggle/Toggle.svelte.d.ts +80 -0
  464. package/types/Toggle/ToggleSkeleton.svelte.d.ts +39 -0
  465. package/types/Tooltip/Tooltip.svelte.d.ts +106 -0
  466. package/types/Tooltip/TooltipFooter.svelte.d.ts +15 -0
  467. package/types/TooltipDefinition/TooltipDefinition.svelte.d.ts +60 -0
  468. package/types/TooltipIcon/TooltipIcon.svelte.d.ts +65 -0
  469. package/types/TreeView/TreeView.svelte.d.ts +114 -0
  470. package/types/TreeView/index.d.ts +1 -0
  471. package/types/Truncate/Truncate.svelte.d.ts +21 -0
  472. package/types/Truncate/truncate.d.ts +12 -0
  473. package/types/UIShell/Content.svelte.d.ts +22 -0
  474. package/types/UIShell/Header.svelte.d.ts +93 -0
  475. package/types/UIShell/HeaderAction.svelte.d.ts +80 -0
  476. package/types/UIShell/HeaderActionLink.svelte.d.ts +40 -0
  477. package/types/UIShell/HeaderGlobalAction.svelte.d.ts +28 -0
  478. package/types/UIShell/HeaderNav.svelte.d.ts +16 -0
  479. package/types/UIShell/HeaderNavItem.svelte.d.ts +49 -0
  480. package/types/UIShell/HeaderNavMenu.svelte.d.ts +49 -0
  481. package/types/UIShell/HeaderPanelDivider.svelte.d.ts +9 -0
  482. package/types/UIShell/HeaderPanelLink.svelte.d.ts +28 -0
  483. package/types/UIShell/HeaderPanelLinks.svelte.d.ts +9 -0
  484. package/types/UIShell/HeaderSearch.svelte.d.ts +67 -0
  485. package/types/UIShell/HeaderUtilities.svelte.d.ts +9 -0
  486. package/types/UIShell/SideNav.svelte.d.ts +56 -0
  487. package/types/UIShell/SideNavDivider.svelte.d.ts +16 -0
  488. package/types/UIShell/SideNavItems.svelte.d.ts +9 -0
  489. package/types/UIShell/SideNavLink.svelte.d.ts +46 -0
  490. package/types/UIShell/SideNavMenu.svelte.d.ts +40 -0
  491. package/types/UIShell/SideNavMenuItem.svelte.d.ts +40 -0
  492. package/types/UIShell/SkipToContent.svelte.d.ts +28 -0
  493. package/types/UnorderedList/UnorderedList.svelte.d.ts +33 -0
  494. package/types/index.d.ts +169 -0
  495. package/types/utils/toHierarchy.d.ts +21 -0
@@ -0,0 +1,248 @@
1
+ <script>
2
+ /**
3
+ * @event {string | number} update The selected value.
4
+ */
5
+
6
+ /**
7
+ * Specify the selected item value
8
+ * @type {string | number}
9
+ */
10
+ export let selected = undefined;
11
+
12
+ /**
13
+ * Set the size of the select input
14
+ * @type {"sm" | "xl"}
15
+ */
16
+ export let size = undefined;
17
+
18
+ /** Set to `true` to use the inline variant */
19
+ export let inline = false;
20
+
21
+ /** Set to `true` to enable the light variant */
22
+ export let light = false;
23
+
24
+ /** Set to `true` to disable the select element */
25
+ export let disabled = false;
26
+
27
+ /** Set an id for the select element */
28
+ export let id = "ccs-" + Math.random().toString(36);
29
+
30
+ /**
31
+ * Specify a name attribute for the select element
32
+ * @type {string}
33
+ */
34
+ export let name = undefined;
35
+
36
+ /** Set to `true` to indicate an invalid state */
37
+ export let invalid = false;
38
+
39
+ /** Specify the invalid state text */
40
+ export let invalidText = "";
41
+
42
+ /** Set to `true` to indicate an warning state */
43
+ export let warn = false;
44
+
45
+ /** Specify the warning state text */
46
+ export let warnText = "";
47
+
48
+ /** Specify the helper text */
49
+ export let helperText = "";
50
+
51
+ /** Set to `true` to not render a label */
52
+ export let noLabel = false;
53
+
54
+ /** Specify the label text */
55
+ export let labelText = "";
56
+
57
+ /** Set to `true` to visually hide the label text */
58
+ export let hideLabel = false;
59
+
60
+ /** Obtain a reference to the select HTML element */
61
+ export let ref = null;
62
+
63
+ /** Set to `true` to mark the field as required */
64
+ export let required = false;
65
+
66
+ import { createEventDispatcher, setContext, afterUpdate } from "svelte";
67
+ import { writable } from "svelte/store";
68
+ import ChevronDown from "../icons/ChevronDown.svelte";
69
+ import WarningFilled from "../icons/WarningFilled.svelte";
70
+ import WarningAltFilled from "../icons/WarningAltFilled.svelte";
71
+
72
+ const dispatch = createEventDispatcher();
73
+ const selectedValue = writable(selected);
74
+ const defaultSelectId = writable(null);
75
+ const defaultValue = writable(null);
76
+ const itemTypesByValue = writable({});
77
+
78
+ setContext("Select", {
79
+ selectedValue,
80
+ setDefaultValue: (id, value) => {
81
+ /**
82
+ * Use the first `SelectItem` value as the
83
+ * default value if `selected` is `undefined`.
84
+ */
85
+ if ($defaultValue === null) {
86
+ defaultSelectId.set(id);
87
+ defaultValue.set(value);
88
+ } else {
89
+ if ($defaultSelectId === id) {
90
+ selectedValue.set(value);
91
+ }
92
+ }
93
+
94
+ itemTypesByValue.update((types) => ({
95
+ ...types,
96
+ [value]: typeof value,
97
+ }));
98
+ },
99
+ });
100
+
101
+ const handleChange = ({ target }) => {
102
+ let value = target.value;
103
+
104
+ if ($itemTypesByValue[value] === "number") {
105
+ value = Number(value);
106
+ }
107
+
108
+ selectedValue.set(value);
109
+ };
110
+
111
+ let prevSelected = undefined;
112
+
113
+ afterUpdate(() => {
114
+ if (selected !== $selectedValue) {
115
+ selected = $selectedValue;
116
+ if (prevSelected !== undefined) {
117
+ dispatch("update", $selectedValue);
118
+ }
119
+ }
120
+
121
+ prevSelected = selected;
122
+ });
123
+
124
+ $: errorId = `error-${id}`;
125
+ $: selectedValue.set(selected ?? $defaultValue);
126
+ </script>
127
+
128
+ <div class:bx--form-item={true} {...$$restProps}>
129
+ <div
130
+ class:bx--select={true}
131
+ class:bx--select--inline={inline}
132
+ class:bx--select--light={light}
133
+ class:bx--select--invalid={invalid}
134
+ class:bx--select--disabled={disabled}
135
+ class:bx--select--warning={warn}
136
+ >
137
+ {#if !noLabel}
138
+ <label
139
+ for={id}
140
+ class:bx--label={true}
141
+ class:bx--visually-hidden={hideLabel}
142
+ class:bx--label--disabled={disabled}
143
+ >
144
+ <slot name="labelText">
145
+ {labelText}
146
+ </slot>
147
+ </label>
148
+ {/if}
149
+ {#if inline}
150
+ <div class:bx--select-input--inline__wrapper={true}>
151
+ <div
152
+ class:bx--select-input__wrapper={true}
153
+ data-invalid={invalid || undefined}
154
+ >
155
+ <select
156
+ bind:this={ref}
157
+ aria-describedby={invalid ? errorId : undefined}
158
+ aria-invalid={invalid || undefined}
159
+ disabled={disabled || undefined}
160
+ required={required || undefined}
161
+ {id}
162
+ {name}
163
+ class:bx--select-input={true}
164
+ class:bx--select-input--sm={size === "sm"}
165
+ class:bx--select-input--xl={size === "xl"}
166
+ on:change={handleChange}
167
+ on:change
168
+ on:input
169
+ on:focus
170
+ on:blur
171
+ >
172
+ <slot />
173
+ </select>
174
+ <ChevronDown class="bx--select__arrow" />
175
+ {#if invalid}
176
+ <WarningFilled class="bx--select__invalid-icon" />
177
+ {/if}
178
+ </div>
179
+ {#if invalid}
180
+ <div class:bx--form-requirement={true} id={errorId}>
181
+ {invalidText}
182
+ </div>
183
+ {/if}
184
+ </div>
185
+ {#if !invalid && !warn && helperText}
186
+ <div
187
+ class:bx--form__helper-text={true}
188
+ class:bx--form__helper-text--disabled={disabled}
189
+ >
190
+ {helperText}
191
+ </div>
192
+ {/if}
193
+ {/if}
194
+ {#if !inline}
195
+ <div
196
+ class:bx--select-input__wrapper={true}
197
+ data-invalid={invalid || undefined}
198
+ >
199
+ <select
200
+ bind:this={ref}
201
+ {id}
202
+ {name}
203
+ aria-describedby={invalid ? errorId : undefined}
204
+ disabled={disabled || undefined}
205
+ required={required || undefined}
206
+ aria-invalid={invalid || undefined}
207
+ class:bx--select-input={true}
208
+ class:bx--select-input--sm={size === "sm"}
209
+ class:bx--select-input--xl={size === "xl"}
210
+ on:change={handleChange}
211
+ on:change
212
+ on:input
213
+ on:focus
214
+ on:blur
215
+ >
216
+ <slot />
217
+ </select>
218
+ <ChevronDown class="bx--select__arrow" />
219
+ {#if invalid}
220
+ <WarningFilled class="bx--select__invalid-icon" />
221
+ {/if}
222
+ {#if !invalid && warn}
223
+ <WarningAltFilled
224
+ class="bx--select__invalid-icon bx--select__invalid-icon--warning"
225
+ />
226
+ {/if}
227
+ </div>
228
+ {#if !invalid && helperText}
229
+ <div
230
+ class:bx--form__helper-text={true}
231
+ class:bx--form__helper-text--disabled={disabled}
232
+ >
233
+ {helperText}
234
+ </div>
235
+ {/if}
236
+ {#if invalid}
237
+ <div id={errorId} class:bx--form-requirement={true}>
238
+ {invalidText}
239
+ </div>
240
+ {/if}
241
+ {#if !invalid && warn}
242
+ <div id={errorId} class:bx--form-requirement={true}>
243
+ {warnText}
244
+ </div>
245
+ {/if}
246
+ {/if}
247
+ </div>
248
+ </div>
@@ -0,0 +1,63 @@
1
+ <script>
2
+ /**
3
+ * Specify the option value
4
+ * @type {string | number}
5
+ */
6
+ export let value = "";
7
+
8
+ /**
9
+ * Specify the option text
10
+ * If not specified, the value will be used as the text.
11
+ * @type {string}
12
+ */
13
+ export let text = undefined;
14
+
15
+ /** Set to `true` to hide the option */
16
+ export let hidden = false;
17
+
18
+ /** Set to `true` to disable the option */
19
+ export let disabled = false;
20
+
21
+ let className = undefined;
22
+
23
+ /**
24
+ * Specify the class of the `option` element
25
+ * @type {string}
26
+ */
27
+ export { className as class };
28
+
29
+ /**
30
+ * Specify the style of the `option` element
31
+ * @type {string}
32
+ */
33
+ export let style = undefined;
34
+
35
+ import { getContext, onMount } from "svelte";
36
+
37
+ const id = "ccs-" + Math.random().toString(36);
38
+ const ctx = getContext("Select") || getContext("TimePickerSelect");
39
+
40
+ $: ctx?.setDefaultValue?.(id, value);
41
+
42
+ let selected = false;
43
+
44
+ const unsubscribe = ctx.selectedValue.subscribe((currentValue) => {
45
+ selected = currentValue === value;
46
+ });
47
+
48
+ onMount(() => {
49
+ return () => unsubscribe();
50
+ });
51
+ </script>
52
+
53
+ <option
54
+ {value}
55
+ {disabled}
56
+ {hidden}
57
+ {selected}
58
+ class:bx--select-option={true}
59
+ class={className}
60
+ {style}
61
+ >
62
+ {text ?? value}
63
+ </option>
@@ -0,0 +1,11 @@
1
+ <script>
2
+ /** Set to `true` to disable the optgroup element */
3
+ export let disabled = false;
4
+
5
+ /** Specify the label attribute of the optgroup element */
6
+ export let label = "Provide label";
7
+ </script>
8
+
9
+ <optgroup {label} {disabled} class:bx--select-optgroup={true} {...$$restProps}>
10
+ <slot />
11
+ </optgroup>
@@ -0,0 +1,22 @@
1
+ <script>
2
+ /** Set to `true` to hide the label text */
3
+ export let hideLabel = false;
4
+ </script>
5
+
6
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
7
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
8
+ <div
9
+ class:bx--form-item={true}
10
+ {...$$restProps}
11
+ on:click
12
+ on:mouseover
13
+ on:mouseenter
14
+ on:mouseleave
15
+ >
16
+ {#if !hideLabel}
17
+ <span class:bx--label={true} class:bx--skeleton={true}></span>
18
+ {/if}
19
+ <div class:bx--select={true} class:bx--skeleton={true}>
20
+ <div class:bx--select-input={true}></div>
21
+ </div>
22
+ </div>
@@ -0,0 +1,4 @@
1
+ export { default as Select } from "./Select.svelte";
2
+ export { default as SelectSkeleton } from "./SelectSkeleton.svelte";
3
+ export { default as SelectItem } from "./SelectItem.svelte";
4
+ export { default as SelectItemGroup } from "./SelectItemGroup.svelte";
@@ -0,0 +1,10 @@
1
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
2
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
3
+ <div
4
+ class:bx--skeleton__placeholder={true}
5
+ {...$$restProps}
6
+ on:click
7
+ on:mouseover
8
+ on:mouseenter
9
+ on:mouseleave
10
+ ></div>
@@ -0,0 +1 @@
1
+ export { default as SkeletonPlaceholder } from "./SkeletonPlaceholder.svelte";
@@ -0,0 +1,50 @@
1
+ <script>
2
+ /** Specify the number of lines to render */
3
+ export let lines = 3;
4
+
5
+ /** Set to `true` to use the heading size variant */
6
+ export let heading = false;
7
+
8
+ /** Set to `true` to use the paragraph size variant */
9
+ export let paragraph = false;
10
+
11
+ /** Specify the width of the text (% or px) */
12
+ export let width = "100%";
13
+
14
+ const RANDOM = [0.973, 0.153, 0.567];
15
+
16
+ $: widthNum = parseInt(width, 10);
17
+ $: widthPx = width.includes("px");
18
+ </script>
19
+
20
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
21
+ {#if paragraph}
22
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
23
+ <div {...$$restProps} on:click on:mouseover on:mouseenter on:mouseleave>
24
+ {#each Array.from({ length: lines }).map((_, i) => {
25
+ const min = widthPx ? widthNum - 75 : 0;
26
+ const max = widthPx ? widthNum : 75;
27
+ const rand = Math.floor(RANDOM[i % 3] * (max - min + 1)) + min + "px";
28
+
29
+ return widthPx ? rand : `calc(${width} - ${rand})`;
30
+ }) as width}
31
+ <p
32
+ class:bx--skeleton__text={true}
33
+ class:bx--skeleton__heading={heading}
34
+ style:width
35
+ ></p>
36
+ {/each}
37
+ </div>
38
+ {:else}
39
+ <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
40
+ <p
41
+ class:bx--skeleton__text={true}
42
+ class:bx--skeleton__heading={heading}
43
+ style:width
44
+ {...$$restProps}
45
+ on:click
46
+ on:mouseover
47
+ on:mouseenter
48
+ on:mouseleave
49
+ ></p>
50
+ {/if}
@@ -0,0 +1 @@
1
+ export { default as SkeletonText } from "./SkeletonText.svelte";
@@ -0,0 +1,232 @@
1
+ <script>
2
+ /**
3
+ * @event {number} change
4
+ * @event {number} input
5
+ */
6
+
7
+ /** Specify the value of the slider */
8
+ export let value = 0;
9
+
10
+ /** Set the maximum slider value */
11
+ export let max = 100;
12
+
13
+ /** Specify the label for the max value */
14
+ export let maxLabel = "";
15
+
16
+ /** Set the minimum slider value */
17
+ export let min = 0;
18
+
19
+ /** Specify the label for the min value */
20
+ export let minLabel = "";
21
+
22
+ /** Set the step value */
23
+ export let step = 1;
24
+
25
+ /** Set the step multiplier value */
26
+ export let stepMultiplier = 4;
27
+
28
+ /** Set to `true` to require a value */
29
+ export let required = false;
30
+
31
+ /** Specify the input type */
32
+ export let inputType = "number";
33
+
34
+ /** Set to `true` to disable the slider */
35
+ export let disabled = false;
36
+
37
+ /** Set to `true` to enable the light variant */
38
+ export let light = false;
39
+
40
+ /** Set to `true` to hide the text input */
41
+ export let hideTextInput = false;
42
+
43
+ /**
44
+ * Set to `true` for the slider to span
45
+ * the full width of its containing element.
46
+ */
47
+ export let fullWidth = false;
48
+
49
+ /** Set an id for the slider div element */
50
+ export let id = "ccs-" + Math.random().toString(36);
51
+
52
+ /** Set to `true` to indicate an invalid state */
53
+ export let invalid = false;
54
+
55
+ /**
56
+ * Specify the label text.
57
+ * Alternatively, use the "labelText" slot (e.g., `<span slot="labelText">...</span>`)
58
+ */
59
+ export let labelText = "";
60
+
61
+ /** Set to `true` to visually hide the label text */
62
+ export let hideLabel = false;
63
+
64
+ /** Set a name for the slider element */
65
+ export let name = "";
66
+
67
+ /** Obtain a reference to the HTML element */
68
+ export let ref = null;
69
+
70
+ import { createEventDispatcher } from "svelte";
71
+
72
+ const dispatch = createEventDispatcher();
73
+
74
+ let trackRef = null;
75
+ let dragging = false;
76
+ let holding = false;
77
+
78
+ function startDragging() {
79
+ dragging = true;
80
+ }
81
+
82
+ function startHolding() {
83
+ holding = true;
84
+ }
85
+
86
+ function stopHolding() {
87
+ holding = false;
88
+ dragging = false;
89
+ }
90
+
91
+ function move() {
92
+ if (holding) {
93
+ startDragging();
94
+ }
95
+ }
96
+
97
+ function calcValue(e) {
98
+ if (disabled) return;
99
+
100
+ const offsetX = e.touches ? e.touches[0].clientX : e.clientX;
101
+ const { left, width } = trackRef.getBoundingClientRect();
102
+ let nextValue =
103
+ min +
104
+ Math.round(((max - min) * ((offsetX - left) / width)) / step) * step;
105
+
106
+ if (nextValue <= min) {
107
+ nextValue = min;
108
+ } else if (nextValue >= max) {
109
+ nextValue = max;
110
+ }
111
+
112
+ value = nextValue;
113
+ dispatch("input", value);
114
+ }
115
+
116
+ $: labelId = `label-${id}`;
117
+ $: range = max - min;
118
+ $: left = ((value - min) / range) * 100;
119
+ $: {
120
+ if (value <= min) {
121
+ value = min;
122
+ } else if (value >= max) {
123
+ value = max;
124
+ }
125
+
126
+ if (dragging) {
127
+ calcValue(event);
128
+ dragging = false;
129
+ }
130
+
131
+ if (!holding && !disabled) {
132
+ dispatch("change", value);
133
+ }
134
+ }
135
+ </script>
136
+
137
+ <svelte:window
138
+ on:mousemove={move}
139
+ on:touchmove={move}
140
+ on:mouseup={stopHolding}
141
+ on:touchend={stopHolding}
142
+ on:touchcancel={stopHolding}
143
+ />
144
+
145
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
146
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
147
+ <div
148
+ class:bx--form-item={true}
149
+ {...$$restProps}
150
+ on:click
151
+ on:mouseover
152
+ on:mouseenter
153
+ on:mouseleave
154
+ >
155
+ <label
156
+ for={id}
157
+ id={labelId}
158
+ class:bx--label={true}
159
+ class:bx--label--disabled={disabled}
160
+ class:bx--visually-hidden={hideLabel}
161
+ >
162
+ <slot name="labelText">
163
+ {labelText}
164
+ </slot>
165
+ </label>
166
+ <div class:bx--slider-container={true} style:width={fullWidth && "100%"}>
167
+ <span class:bx--slider__range-label={true}>{minLabel || min}</span>
168
+ <div
169
+ bind:this={ref}
170
+ role="presentation"
171
+ tabindex="-1"
172
+ class:bx--slider={true}
173
+ class:bx--slider--disabled={disabled}
174
+ style:max-width={fullWidth ? "none" : undefined}
175
+ on:mousedown={startDragging}
176
+ on:mousedown={startHolding}
177
+ on:touchstart={startHolding}
178
+ on:keydown={({ shiftKey, key }) => {
179
+ const keys = {
180
+ ArrowDown: -1,
181
+ ArrowLeft: -1,
182
+ ArrowRight: 1,
183
+ ArrowUp: 1,
184
+ };
185
+ if (keys[key]) {
186
+ value +=
187
+ step * (shiftKey ? range / step / stepMultiplier : 1) * keys[key];
188
+ }
189
+ }}
190
+ >
191
+ <div
192
+ role="slider"
193
+ tabindex="0"
194
+ class:bx--slider__thumb={true}
195
+ style:left="{left}%"
196
+ aria-valuemax={max}
197
+ aria-valuemin={min}
198
+ aria-valuenow={value}
199
+ aria-labelledby={labelId}
200
+ {id}
201
+ ></div>
202
+ <div bind:this={trackRef} class:bx--slider__track={true}></div>
203
+ <div
204
+ class:bx--slider__filled-track={true}
205
+ style:transform="translate(0, -50%) scaleX({left / 100})"
206
+ ></div>
207
+ </div>
208
+ <span class:bx--slider__range-label={true}>{maxLabel || max}</span>
209
+ <input
210
+ type={hideTextInput ? "hidden" : inputType}
211
+ id="input-{id}"
212
+ {name}
213
+ class:bx--text-input={true}
214
+ class:bx--slider-text-input={true}
215
+ class:bx--text-input--light={light}
216
+ class:bx--text-input--invalid={invalid}
217
+ {value}
218
+ aria-labelledby={$$props["aria-label"] ? undefined : labelId}
219
+ aria-label={$$props["aria-label"] || "Slider number input"}
220
+ {disabled}
221
+ {required}
222
+ {min}
223
+ {max}
224
+ {step}
225
+ on:change={({ target }) => {
226
+ value = Number(target.value);
227
+ }}
228
+ data-invalid={invalid || null}
229
+ aria-invalid={invalid || null}
230
+ />
231
+ </div>
232
+ </div>
@@ -0,0 +1,28 @@
1
+ <script>
2
+ /** Set to `true` to hide the label text */
3
+ export let hideLabel = false;
4
+ </script>
5
+
6
+ <!-- svelte-ignore a11y-mouse-events-have-key-events -->
7
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
8
+ <div
9
+ class:bx--form-item={true}
10
+ {...$$restProps}
11
+ on:click
12
+ on:mouseover
13
+ on:mouseenter
14
+ on:mouseleave
15
+ >
16
+ {#if !hideLabel}
17
+ <span class:bx--label={true} class:bx--skeleton={true}></span>
18
+ {/if}
19
+ <div class:bx--slider-container={true} class:bx--skeleton={true}>
20
+ <span class:bx--slider__range-label={true}></span>
21
+ <div class:bx--slider={true}>
22
+ <div class:bx--slider__track={true}></div>
23
+ <div class:bx--slider__filled-track={true}></div>
24
+ <div class:bx--slider__thumb={true}></div>
25
+ </div>
26
+ <span class:bx--slider__range-label={true}></span>
27
+ </div>
28
+ </div>
@@ -0,0 +1,2 @@
1
+ export { default as Slider } from "./Slider.svelte";
2
+ export { default as SliderSkeleton } from "./SliderSkeleton.svelte";