@bitrise/bitkit 10.1.0-alpha-chakra.3 → 10.1.0-alpha-breadcrumb.2

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 (251) hide show
  1. package/package.json +57 -23
  2. package/src/Components/Breadcrumb/Breadcrumb.stories.tsx +30 -0
  3. package/src/Components/Breadcrumb/Breadcrumb.theme.ts +25 -0
  4. package/src/Components/Breadcrumb/Breadcrumb.tsx +51 -0
  5. package/src/Components/Breadcrumb/BreadcrumbLink.tsx +34 -0
  6. package/src/Components/Dialog/Dialog.tsx +4 -1
  7. package/src/Components/Tabs/Tab.tsx +24 -2
  8. package/src/Components/Transitions/Fade.stories.tsx +26 -0
  9. package/src/Components/Transitions/Fade.tsx +12 -0
  10. package/src/Old/AddonBeam/AddonBeam.css +16 -0
  11. package/src/Old/AddonBeam/AddonBeam.tsx +117 -0
  12. package/src/Old/AddonBeam/AddonBeamLink.tsx +37 -0
  13. package/src/Old/AddonFooter/AddonFooter.tsx +24 -0
  14. package/src/Old/AppLayout/AppLayout.css +45 -0
  15. package/src/Old/AppLayout/AppLayout.tsx +21 -0
  16. package/src/Old/AppLayout/AppLayoutBody.tsx +10 -0
  17. package/src/Old/AppLayout/AppLayoutHeader.tsx +10 -0
  18. package/src/Old/AppLayout/AppLayoutMain.tsx +10 -0
  19. package/src/Old/AppLayout/AppLayoutSidebar.tsx +10 -0
  20. package/src/Old/Avatar/Avatar.css +4 -0
  21. package/src/Old/Avatar/Avatar.tsx +64 -0
  22. package/src/Old/Avatar/avatarColors.ts +26 -0
  23. package/src/Old/Bounds/Bounds.tsx +20 -0
  24. package/src/Old/Button/Button.css +249 -0
  25. package/src/Old/Button/Button.test.tsx +29 -0
  26. package/src/Old/Button/Button.tsx +55 -0
  27. package/src/Old/Button/ButtonSize.ts +3 -0
  28. package/src/Old/Button/Buttons.test.tsx +42 -0
  29. package/src/Old/Button/Buttons.tsx +34 -0
  30. package/src/Old/Button/__snapshots__/Button.test.tsx.snap +73 -0
  31. package/src/Old/Button/__snapshots__/Buttons.test.tsx.snap +45 -0
  32. package/src/Old/DatePicker/DatePicker.tsx +6 -6
  33. package/src/Old/DatePicker/DatePickerMonth.tsx +7 -7
  34. package/src/Old/Dropdown/Dropdown.tsx +5 -3
  35. package/src/Old/Dropdown/DropdownButton.tsx +16 -2
  36. package/src/Old/Dropdown/DropdownMenuItem.tsx +2 -1
  37. package/src/Old/Dropdown/DropdownMenuItemGroup.tsx +2 -2
  38. package/src/Old/ExternalLink/ExternalLink.tsx +24 -0
  39. package/src/Old/Icon/Icon.css +4 -0
  40. package/src/Old/Icon/Icon.tsx +32 -0
  41. package/src/Old/Icon/tsx/IconsAddOns.tsx +14 -0
  42. package/src/Old/Icon/tsx/IconsAddOnsColorTuorqouise.tsx +20 -0
  43. package/src/Old/Icon/tsx/IconsAddOnsColorViolet.tsx +20 -0
  44. package/src/Old/Icon/tsx/IconsAddOnsWhite.tsx +20 -0
  45. package/src/Old/Icon/tsx/IconsApp.tsx +16 -0
  46. package/src/Old/Icon/tsx/IconsArrowBack.tsx +14 -0
  47. package/src/Old/Icon/tsx/IconsArrowDown.tsx +21 -0
  48. package/src/Old/Icon/tsx/IconsArrowForward.tsx +16 -0
  49. package/src/Old/Icon/tsx/IconsArrowQuit.tsx +14 -0
  50. package/src/Old/Icon/tsx/IconsArrowUp.tsx +14 -0
  51. package/src/Old/Icon/tsx/IconsBackArrow.tsx +13 -0
  52. package/src/Old/Icon/tsx/IconsBell.tsx +16 -0
  53. package/src/Old/Icon/tsx/IconsBitbot.tsx +16 -0
  54. package/src/Old/Icon/tsx/IconsBitbotFailed.tsx +18 -0
  55. package/src/Old/Icon/tsx/IconsBitbucket.tsx +26 -0
  56. package/src/Old/Icon/tsx/IconsBitbucketFill.tsx +14 -0
  57. package/src/Old/Icon/tsx/IconsBitriseCertified.tsx +19 -0
  58. package/src/Old/Icon/tsx/IconsBook.tsx +16 -0
  59. package/src/Old/Icon/tsx/IconsBranchBranch.tsx +16 -0
  60. package/src/Old/Icon/tsx/IconsBranchCommit.tsx +14 -0
  61. package/src/Old/Icon/tsx/IconsBranchPull.tsx +16 -0
  62. package/src/Old/Icon/tsx/IconsBranchPush.tsx +21 -0
  63. package/src/Old/Icon/tsx/IconsBranchTag.tsx +16 -0
  64. package/src/Old/Icon/tsx/IconsBug.tsx +16 -0
  65. package/src/Old/Icon/tsx/IconsBuild.tsx +14 -0
  66. package/src/Old/Icon/tsx/IconsBuildstatusAborted.tsx +16 -0
  67. package/src/Old/Icon/tsx/IconsBuildstatusAbortedSolid.tsx +15 -0
  68. package/src/Old/Icon/tsx/IconsBuildstatusFailed.tsx +16 -0
  69. package/src/Old/Icon/tsx/IconsBuildstatusFailedSolid.tsx +15 -0
  70. package/src/Old/Icon/tsx/IconsBuildstatusLoading.tsx +13 -0
  71. package/src/Old/Icon/tsx/IconsBuildstatusLoadingAnimated.tsx +31 -0
  72. package/src/Old/Icon/tsx/IconsBuildstatusLoadingeeehh.tsx +13 -0
  73. package/src/Old/Icon/tsx/IconsBuildstatusLoadingeeehhWhite.tsx +13 -0
  74. package/src/Old/Icon/tsx/IconsBuildstatusNeverbuilt.tsx +14 -0
  75. package/src/Old/Icon/tsx/IconsBuildstatusSuccessful.tsx +16 -0
  76. package/src/Old/Icon/tsx/IconsBuildstatusSuccessfulSolid.tsx +15 -0
  77. package/src/Old/Icon/tsx/IconsCalendar.tsx +16 -0
  78. package/src/Old/Icon/tsx/IconsChain.tsx +16 -0
  79. package/src/Old/Icon/tsx/IconsChangePlan.tsx +14 -0
  80. package/src/Old/Icon/tsx/IconsChat.tsx +14 -0
  81. package/src/Old/Icon/tsx/IconsChatMessage.tsx +16 -0
  82. package/src/Old/Icon/tsx/IconsChevronDown.tsx +13 -0
  83. package/src/Old/Icon/tsx/IconsChevronLeft.tsx +16 -0
  84. package/src/Old/Icon/tsx/IconsChevronRight.tsx +16 -0
  85. package/src/Old/Icon/tsx/IconsChevronUp.tsx +15 -0
  86. package/src/Old/Icon/tsx/IconsClock.tsx +16 -0
  87. package/src/Old/Icon/tsx/IconsCloseSmall.tsx +16 -0
  88. package/src/Old/Icon/tsx/IconsCode.tsx +16 -0
  89. package/src/Old/Icon/tsx/IconsCoffee.tsx +16 -0
  90. package/src/Old/Icon/tsx/IconsConsole.tsx +16 -0
  91. package/src/Old/Icon/tsx/IconsCredit.tsx +21 -0
  92. package/src/Old/Icon/tsx/IconsCreditcard.tsx +16 -0
  93. package/src/Old/Icon/tsx/IconsDeleteNope.tsx +15 -0
  94. package/src/Old/Icon/tsx/IconsDeployment.tsx +14 -0
  95. package/src/Old/Icon/tsx/IconsDoc.tsx +16 -0
  96. package/src/Old/Icon/tsx/IconsDollars.tsx +16 -0
  97. package/src/Old/Icon/tsx/IconsDownload.tsx +16 -0
  98. package/src/Old/Icon/tsx/IconsDropdownArrows.tsx +16 -0
  99. package/src/Old/Icon/tsx/IconsDudes.tsx +14 -0
  100. package/src/Old/Icon/tsx/IconsDuplicate.tsx +14 -0
  101. package/src/Old/Icon/tsx/IconsEnterprise.tsx +19 -0
  102. package/src/Old/Icon/tsx/IconsErrorGeneral.tsx +16 -0
  103. package/src/Old/Icon/tsx/IconsFileDoc.tsx +16 -0
  104. package/src/Old/Icon/tsx/IconsFilePdf.tsx +16 -0
  105. package/src/Old/Icon/tsx/IconsFilePlist.tsx +16 -0
  106. package/src/Old/Icon/tsx/IconsFileZip.tsx +16 -0
  107. package/src/Old/Icon/tsx/IconsFilter.tsx +16 -0
  108. package/src/Old/Icon/tsx/IconsFlag.tsx +13 -0
  109. package/src/Old/Icon/tsx/IconsFolder.tsx +16 -0
  110. package/src/Old/Icon/tsx/IconsFullscreen.tsx +14 -0
  111. package/src/Old/Icon/tsx/IconsFullscreenExit.tsx +14 -0
  112. package/src/Old/Icon/tsx/IconsGauge.tsx +16 -0
  113. package/src/Old/Icon/tsx/IconsGithub.tsx +14 -0
  114. package/src/Old/Icon/tsx/IconsGitlab.tsx +20 -0
  115. package/src/Old/Icon/tsx/IconsGitlabFill.tsx +14 -0
  116. package/src/Old/Icon/tsx/IconsGlobe.tsx +16 -0
  117. package/src/Old/Icon/tsx/IconsGroup.tsx +14 -0
  118. package/src/Old/Icon/tsx/IconsHeart.tsx +14 -0
  119. package/src/Old/Icon/tsx/IconsHidePassword.tsx +19 -0
  120. package/src/Old/Icon/tsx/IconsHistory.tsx +14 -0
  121. package/src/Old/Icon/tsx/IconsImage.tsx +14 -0
  122. package/src/Old/Icon/tsx/IconsInfo.tsx +14 -0
  123. package/src/Old/Icon/tsx/IconsIntegrations.tsx +14 -0
  124. package/src/Old/Icon/tsx/IconsInteraction.tsx +14 -0
  125. package/src/Old/Icon/tsx/IconsInvoice.tsx +16 -0
  126. package/src/Old/Icon/tsx/IconsJapanese.tsx +15 -0
  127. package/src/Old/Icon/tsx/IconsKey.tsx +14 -0
  128. package/src/Old/Icon/tsx/IconsLaptop.tsx +13 -0
  129. package/src/Old/Icon/tsx/IconsLaptops.tsx +16 -0
  130. package/src/Old/Icon/tsx/IconsLightbulb.tsx +16 -0
  131. package/src/Old/Icon/tsx/IconsLock.tsx +16 -0
  132. package/src/Old/Icon/tsx/IconsLogin.tsx +16 -0
  133. package/src/Old/Icon/tsx/IconsLogout.tsx +16 -0
  134. package/src/Old/Icon/tsx/IconsMagnifier.tsx +16 -0
  135. package/src/Old/Icon/tsx/IconsMail.tsx +16 -0
  136. package/src/Old/Icon/tsx/IconsMenuGrid.tsx +16 -0
  137. package/src/Old/Icon/tsx/IconsMenuHamburger.tsx +13 -0
  138. package/src/Old/Icon/tsx/IconsMessage.tsx +16 -0
  139. package/src/Old/Icon/tsx/IconsMinusClose.tsx +10 -0
  140. package/src/Old/Icon/tsx/IconsMinusRemove.tsx +16 -0
  141. package/src/Old/Icon/tsx/IconsMobile.tsx +16 -0
  142. package/src/Old/Icon/tsx/IconsMonitoring.tsx +14 -0
  143. package/src/Old/Icon/tsx/IconsMoreHorizontal.tsx +13 -0
  144. package/src/Old/Icon/tsx/IconsMoreVertical.tsx +17 -0
  145. package/src/Old/Icon/tsx/IconsNoTie.tsx +14 -0
  146. package/src/Old/Icon/tsx/IconsNumero.tsx +16 -0
  147. package/src/Old/Icon/tsx/IconsOpenInBrowser.tsx +16 -0
  148. package/src/Old/Icon/tsx/IconsOverview.tsx +14 -0
  149. package/src/Old/Icon/tsx/IconsOwner.tsx +19 -0
  150. package/src/Old/Icon/tsx/IconsPause.tsx +14 -0
  151. package/src/Old/Icon/tsx/IconsPencil.tsx +17 -0
  152. package/src/Old/Icon/tsx/IconsPercent.tsx +14 -0
  153. package/src/Old/Icon/tsx/IconsPerson.tsx +14 -0
  154. package/src/Old/Icon/tsx/IconsPlatformsAndroid.tsx +16 -0
  155. package/src/Old/Icon/tsx/IconsPlatformsApple.tsx +16 -0
  156. package/src/Old/Icon/tsx/IconsPlatformsCordova.tsx +14 -0
  157. package/src/Old/Icon/tsx/IconsPlatformsFastlane.tsx +14 -0
  158. package/src/Old/Icon/tsx/IconsPlatformsFlutter.tsx +14 -0
  159. package/src/Old/Icon/tsx/IconsPlatformsGo.tsx +13 -0
  160. package/src/Old/Icon/tsx/IconsPlatformsIonic.tsx +14 -0
  161. package/src/Old/Icon/tsx/IconsPlatformsMacos.tsx +14 -0
  162. package/src/Old/Icon/tsx/IconsPlatformsNodejs.tsx +13 -0
  163. package/src/Old/Icon/tsx/IconsPlatformsOther.tsx +21 -0
  164. package/src/Old/Icon/tsx/IconsPlatformsReact.tsx +14 -0
  165. package/src/Old/Icon/tsx/IconsPlatformsXamarin.tsx +14 -0
  166. package/src/Old/Icon/tsx/IconsPlay.tsx +16 -0
  167. package/src/Old/Icon/tsx/IconsPlusAdd.tsx +16 -0
  168. package/src/Old/Icon/tsx/IconsPlusOpen.tsx +13 -0
  169. package/src/Old/Icon/tsx/IconsPower.tsx +11 -0
  170. package/src/Old/Icon/tsx/IconsRefresh.tsx +13 -0
  171. package/src/Old/Icon/tsx/IconsRequest.tsx +14 -0
  172. package/src/Old/Icon/tsx/IconsResponsiveness.tsx +14 -0
  173. package/src/Old/Icon/tsx/IconsSave.tsx +14 -0
  174. package/src/Old/Icon/tsx/IconsSecurityShield.tsx +16 -0
  175. package/src/Old/Icon/tsx/IconsSettings.tsx +16 -0
  176. package/src/Old/Icon/tsx/IconsShip.tsx +14 -0
  177. package/src/Old/Icon/tsx/IconsShowPassword.tsx +16 -0
  178. package/src/Old/Icon/tsx/IconsShuffle.tsx +16 -0
  179. package/src/Old/Icon/tsx/IconsStability.tsx +16 -0
  180. package/src/Old/Icon/tsx/IconsStack.tsx +16 -0
  181. package/src/Old/Icon/tsx/IconsStatus.tsx +16 -0
  182. package/src/Old/Icon/tsx/IconsStepThirdParty.tsx +16 -0
  183. package/src/Old/Icon/tsx/IconsStepUpgrade.tsx +10 -0
  184. package/src/Old/Icon/tsx/IconsStepUpgradeCircle.tsx +11 -0
  185. package/src/Old/Icon/tsx/IconsStepVersionOk.tsx +11 -0
  186. package/src/Old/Icon/tsx/IconsSteps.tsx +14 -0
  187. package/src/Old/Icon/tsx/IconsStepsColorTuorqouise.tsx +14 -0
  188. package/src/Old/Icon/tsx/IconsStepsColorViolet.tsx +14 -0
  189. package/src/Old/Icon/tsx/IconsStepsWhite.tsx +14 -0
  190. package/src/Old/Icon/tsx/IconsStopwatch.tsx +16 -0
  191. package/src/Old/Icon/tsx/IconsSupport.tsx +16 -0
  192. package/src/Old/Icon/tsx/IconsSwitch.tsx +13 -0
  193. package/src/Old/Icon/tsx/IconsTestFailed.tsx +14 -0
  194. package/src/Old/Icon/tsx/IconsTestInconclusive.tsx +14 -0
  195. package/src/Old/Icon/tsx/IconsTestInfo.tsx +14 -0
  196. package/src/Old/Icon/tsx/IconsTestSkipped.tsx +14 -0
  197. package/src/Old/Icon/tsx/IconsTestSuccess.tsx +14 -0
  198. package/src/Old/Icon/tsx/IconsTestWarning.tsx +14 -0
  199. package/src/Old/Icon/tsx/IconsTick.tsx +13 -0
  200. package/src/Old/Icon/tsx/IconsTime.tsx +16 -0
  201. package/src/Old/Icon/tsx/IconsTrace.tsx +14 -0
  202. package/src/Old/Icon/tsx/IconsTrash.tsx +16 -0
  203. package/src/Old/Icon/tsx/IconsTrigger.tsx +16 -0
  204. package/src/Old/Icon/tsx/IconsTwitter.tsx +16 -0
  205. package/src/Old/Icon/tsx/IconsValidateShield.tsx +16 -0
  206. package/src/Old/Icon/tsx/IconsWarning.tsx +16 -0
  207. package/src/Old/Icon/tsx/IconsWebUi.tsx +17 -0
  208. package/src/Old/Icon/tsx/IconsWindow.tsx +16 -0
  209. package/src/Old/Icon/tsx/IconsWorkflow.tsx +16 -0
  210. package/src/Old/Icon/tsx/IconsWorkflowFlow.tsx +16 -0
  211. package/src/Old/Icon/tsx/IconsWow.tsx +16 -0
  212. package/src/Old/Icon/tsx/index.ts +694 -0
  213. package/src/Old/Input/InputLabel.tsx +3 -5
  214. package/src/Old/Link/Link.css +44 -0
  215. package/src/Old/Link/Link.tsx +30 -0
  216. package/src/Old/Modal/Modal.css +67 -0
  217. package/src/Old/Modal/Modal.tsx +117 -0
  218. package/src/Old/Modal/ModalBody.tsx +17 -0
  219. package/src/Old/Modal/ModalHeader.tsx +50 -0
  220. package/src/Old/Modal/ModalHeaderProgress.tsx +23 -0
  221. package/src/Old/Modal/ModalTitle.tsx +13 -0
  222. package/src/Old/Notification/Notification.tsx +4 -3
  223. package/src/Old/Notification/__snapshots__/Notification.test.tsx.snap +12 -8
  224. package/src/Old/Progress/ProgressBitbot.tsx +3 -3
  225. package/src/Old/Progress/ProgressButtonContent.tsx +35 -0
  226. package/src/Old/Ribbon/Ribbon.tsx +4 -4
  227. package/src/Old/Sidebar/Sidebar.css +125 -0
  228. package/src/Old/Sidebar/Sidebar.tsx +25 -0
  229. package/src/Old/Sidebar/SidebarHeader.tsx +10 -0
  230. package/src/Old/Sidebar/SidebarMenu.tsx +30 -0
  231. package/src/Old/Sidebar/SidebarMenuContext.ts +7 -0
  232. package/src/Old/Sidebar/SidebarMenuItem.tsx +67 -0
  233. package/src/Old/Sidebar/SidebarSubMenu.tsx +33 -0
  234. package/src/Old/Sidebar/SidebarSubMenuItem.tsx +59 -0
  235. package/src/Old/Status/Status404.tsx +3 -3
  236. package/src/Old/Status/Status500.tsx +4 -4
  237. package/src/Old/Table/TableHeaderCell.tsx +1 -1
  238. package/src/Old/Tabs/Tab.tsx +23 -0
  239. package/src/Old/Tabs/Tabs.css +30 -0
  240. package/src/Old/Tabs/Tabs.tsx +18 -0
  241. package/src/Old/Text/TextSizes.css +39 -0
  242. package/src/Old/Toggle/Toggle.tsx +1 -1
  243. package/src/Old/Tooltip/Tooltip.tsx +85 -0
  244. package/src/Old/hooks/index.ts +1 -0
  245. package/src/Old/hooks/useResizeObserver.ts +40 -0
  246. package/src/Old/variables.css +1 -0
  247. package/src/Old/variables.ts +3 -0
  248. package/src/index.ts +9 -0
  249. package/src/old.ts +64 -0
  250. package/src/theme.ts +2 -0
  251. package/src/tsconfig.tsbuildinfo +1 -1
package/package.json CHANGED
@@ -1,16 +1,29 @@
1
1
  {
2
2
  "name": "@bitrise/bitkit",
3
3
  "description": "Bitrise React component library",
4
- "version": "10.1.0-alpha-chakra.3",
4
+ "version": "10.1.0-alpha-breadcrumb.2",
5
5
  "repository": "git@github.com:bitrise-io/bitkit.git",
6
6
  "main": "src/index.ts",
7
7
  "license": "UNLICENSED",
8
8
  "scripts": {
9
+ "build": "yarn build:lib && yarn build:site",
10
+ "build:docs": "ts-node ./scripts/build-docs",
9
11
  "build:icons": "ts-node ./scripts/build-icons.ts",
12
+ "build:lib": "rm -rf ./lib && yarn build:lib:cjs && yarn build:lib:esn",
13
+ "build:lib:esn": "tsc -p src -m esnext -t esnext --outDir lib/esn",
14
+ "build:lib:cjs": "tsc -p src --outDir lib/cjs",
15
+ "build:prepare": "rm -rf ./dist && mkdir dist && cp site/index.html dist && ln -s index.html dist/404.html",
16
+ "build:site": "yarn build:prepare && yarn build:docs && yarn tsc:site && yarn build:site:esbuild",
17
+ "tsc:site": "tsc --noEmit -p site/tsconfig.json",
18
+ "build:site:esbuild": "esbuild --bundle site/index.tsx --outdir=dist --target=esnext --loader:.woff2=file --loader:.woff=file --minify --sourcemap",
10
19
  "commitlint": "commitlint",
11
- "lint": "eslint src/**/*.tsx",
20
+ "lint": "yarn lint:js",
21
+ "lint:js": "eslint src/**/*.tsx",
12
22
  "semantic-release": "semantic-release",
13
- "start": "yarn storybook",
23
+ "serve": "superstatic ./dist --port 4001 -c superstatic.json",
24
+ "start": "yarn build:prepare && concurrently \"yarn start:docs\" \"yarn start:esbuild\" \"yarn serve\"",
25
+ "start:esbuild": "esbuild --bundle site/index.tsx --watch --outdir=dist --target=esnext --loader:.woff2=file --loader:.woff=file",
26
+ "start:docs": "ts-node ./scripts/build-docs-watch",
14
27
  "test": "jest ./src",
15
28
  "storybook": "start-storybook -p 6006",
16
29
  "build-storybook": "build-storybook"
@@ -20,14 +33,15 @@
20
33
  "framer-motion": "./node_modules/framer-motion/dist/cjs"
21
34
  },
22
35
  "dependencies": {
23
- "@chakra-ui/react": "^2.2.4",
36
+ "@chakra-ui/react": "^2.2.1",
24
37
  "@emotion/react": "^11.9.3",
25
38
  "@emotion/styled": "^11.9.3",
39
+ "@juggle/resize-observer": "^3.3.1",
26
40
  "@popperjs/core": "^2.11.5",
27
41
  "classnames": "^2.3.1",
28
42
  "clipboard": "^2.0.11",
29
- "framer-motion": "^6.5.1",
30
- "luxon": "^2.5.0",
43
+ "framer-motion": "^6.3.15",
44
+ "luxon": "^2.4.0",
31
45
  "react": "^18.2.0",
32
46
  "react-dom": "^18.2.0",
33
47
  "react-popper": "^2.3.0"
@@ -37,13 +51,13 @@
37
51
  "react-dom": "^18.2.0"
38
52
  },
39
53
  "devDependencies": {
40
- "@babel/core": "^7.18.9",
41
- "@babel/parser": "^7.18.9",
54
+ "@babel/core": "^7.18.5",
55
+ "@babel/parser": "^7.18.5",
42
56
  "@bitrise/eslint-plugin": "^2.2.0",
43
- "@chakra-ui/cli": "^2.1.2",
57
+ "@chakra-ui/cli": "^2.1.0",
44
58
  "@commitlint/cli": "^16.3.0",
45
59
  "@commitlint/config-conventional": "^16.2.4",
46
- "@google-cloud/storage": "^5.20.5",
60
+ "@google-cloud/storage": "^5.19.4",
47
61
  "@semantic-release/changelog": "^6.0.1",
48
62
  "@semantic-release/commit-analyzer": "^9.0.2",
49
63
  "@semantic-release/git": "^10.0.1",
@@ -57,43 +71,63 @@
57
71
  "@storybook/react": "^6.5.9",
58
72
  "@storybook/testing-library": "^0.0.13",
59
73
  "@storybook/theming": "^6.5.9",
60
- "@svgr/core": "^6.3.0",
74
+ "@svgr/cli": "^6.2.1",
75
+ "@svgr/core": "^6.2.1",
61
76
  "@types/cheerio": "^0.22.31",
62
77
  "@types/clipboard": "^2.0.1",
63
78
  "@types/enzyme": "^3.10.12",
64
- "@types/jest": "^27.5.2",
65
- "@types/luxon": "^2.4.0",
66
- "@types/react": "18.0.15",
67
- "@types/react-dom": "^18.0.6",
79
+ "@types/fscreen": "^1.0.1",
80
+ "@types/jest": "^27.5.1",
81
+ "@types/lodash.sample": "^4.2.7",
82
+ "@types/lodash.shuffle": "^4.2.7",
83
+ "@types/luxon": "^2.3.2",
84
+ "@types/prismjs": "^1.26.0",
85
+ "@types/react": "18.0.14",
86
+ "@types/react-dom": "^18.0.5",
87
+ "@types/react-router": "^5.1.18",
88
+ "@types/react-router-dom": "^5.3.3",
68
89
  "@types/vfile-message": "^2.0.0",
69
- "@typescript-eslint/eslint-plugin": "^5.30.7",
70
- "@typescript-eslint/parser": "^5.30.7",
90
+ "@typescript-eslint/eslint-plugin": "^5.29.0",
91
+ "@typescript-eslint/parser": "^5.29.0",
71
92
  "@wojtekmaj/enzyme-adapter-react-17": "^0.6.7",
72
93
  "axios": "^0.27.2",
73
94
  "babel-eslint": "^10.0.1",
74
95
  "babel-loader": "^8.2.5",
75
96
  "babel-plugin-polyfill-corejs2": "^0.3.1",
97
+ "concurrently": "^7.2.2",
76
98
  "enzyme": "^3.11.0",
77
99
  "enzyme-to-json": "^3.6.2",
78
- "eslint": "^8.20.0",
100
+ "esbuild": "^0.14.47",
101
+ "eslint": "^8.18.0",
79
102
  "eslint-plugin-import": "^2.26.0",
80
- "eslint-plugin-jest": "^26.6.0",
103
+ "eslint-plugin-jest": "^26.5.3",
81
104
  "eslint-plugin-jsx-a11y": "^6.6.0",
82
- "eslint-plugin-prettier": "^4.2.1",
105
+ "eslint-plugin-prettier": "^4.1.0",
83
106
  "eslint-plugin-react": "^7.30.1",
84
107
  "eslint-plugin-react-hooks": "^4.6.0",
85
- "eslint-plugin-storybook": "^0.6.1",
108
+ "eslint-plugin-storybook": "^0.5.13",
86
109
  "eslint-plugin-testing-library": "^5.5.1",
110
+ "fscreen": "^1.2.0",
87
111
  "glob": "^8.0.3",
88
112
  "husky": "^7.0.4",
89
113
  "identity-obj-proxy": "^3.0.0",
90
114
  "jest": "^27.5.1",
91
115
  "jsdom": "^19.0.0",
116
+ "lodash.sample": "^4.2.1",
117
+ "lodash.shuffle": "^4.2.0",
118
+ "node-watch": "^0.7.3",
92
119
  "prettier": "^2.7.1",
120
+ "prismjs": "^1.28.0",
121
+ "react": "^18.2.0",
122
+ "react-docgen": "5.4.2",
123
+ "react-dom": "^18.2.0",
124
+ "react-router": "^5.3.1",
125
+ "react-router-dom": "^5.3.1",
93
126
  "recast": "^0.21.1",
94
127
  "semantic-release": "^19.0.3",
128
+ "superstatic": "^8.0.0",
95
129
  "ts-jest": "^27.1.5",
96
- "ts-node": "^10.9.1",
130
+ "ts-node": "^10.8.1",
97
131
  "tsconfig-paths-webpack-plugin": "^3.5.2",
98
132
  "typescript": "^4.7.4",
99
133
  "webpack": "^5.73.0"
@@ -119,7 +153,7 @@
119
153
  },
120
154
  "resolutions": {
121
155
  "**/ast-types": "npm:@gkz/ast-types",
122
- "ts-node": "^10.9.1",
156
+ "ts-node": "^10.8.1",
123
157
  "@types/react": "17.0.40"
124
158
  }
125
159
  }
@@ -0,0 +1,30 @@
1
+ import { ComponentStory, ComponentMeta } from '@storybook/react';
2
+ import Breadcrumb from './Breadcrumb';
3
+ import BreadcrumbLink from './BreadcrumbLink';
4
+
5
+ export default {
6
+ title: 'Components/Breadcrumb',
7
+ component: Breadcrumb,
8
+ subcomponents: { BreadcrumbLink },
9
+ } as ComponentMeta<typeof Breadcrumb>;
10
+
11
+ const Template: ComponentStory<typeof Breadcrumb> = (props) => (
12
+ <Breadcrumb {...props}>
13
+ <BreadcrumbLink
14
+ avatarUrl="https://bitrise-public-content-production.s3.amazonaws.com/org-icons/default_avatar-02.png"
15
+ href="#"
16
+ >
17
+ Bitrise #Core
18
+ </BreadcrumbLink>
19
+ <BreadcrumbLink avatarName="Bitkit" href="#">
20
+ bitkit
21
+ </BreadcrumbLink>
22
+ <BreadcrumbLink isCurrentPage>settings</BreadcrumbLink>
23
+ </Breadcrumb>
24
+ );
25
+
26
+ export const WithProps = Template.bind({});
27
+ WithProps.args = {
28
+ hasSeparatorAfterLast: false,
29
+ hasSeparatorBeforeFirst: false,
30
+ };
@@ -0,0 +1,25 @@
1
+ import type { SystemStyleObject } from '@chakra-ui/theme-tools';
2
+
3
+ const BreadcrumbTheme: SystemStyleObject = {
4
+ baseStyle: {
5
+ container: {
6
+ '> ol': {
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ },
10
+ },
11
+ link: {
12
+ display: 'flex',
13
+ alignItems: 'center',
14
+ gap: '8',
15
+ '[aria-current]': {
16
+ color: 'red',
17
+ },
18
+ },
19
+ separator: {
20
+ display: 'flex',
21
+ },
22
+ },
23
+ };
24
+
25
+ export default BreadcrumbTheme;
@@ -0,0 +1,51 @@
1
+ import { Children } from 'react';
2
+ import {
3
+ Breadcrumb as ChakraBreadcrumb,
4
+ BreadcrumbProps as ChakraBreadcrumbProps,
5
+ BreadcrumbItem,
6
+ BreadcrumbSeparator,
7
+ forwardRef,
8
+ useBreakpointValue,
9
+ } from '@chakra-ui/react';
10
+ import { BREAKPOINTS } from '../../Foundations/Breakpoints/Breakpoints';
11
+ import Icon, { TypeIconName } from '../Icon/Icon';
12
+
13
+ export interface BreadcrumbProps extends ChakraBreadcrumbProps {
14
+ hasSeparatorAfterLast?: boolean;
15
+ hasSeparatorBeforeFirst?: boolean;
16
+ separatorIconName?: TypeIconName;
17
+ }
18
+
19
+ /**
20
+ * Breadcrumbs is a navigation pattern that helps users understand the hierarchy of a website.
21
+ */
22
+ const Breadcrumb = forwardRef<BreadcrumbProps, 'nav'>((props, ref) => {
23
+ const { children, hasSeparatorAfterLast, hasSeparatorBeforeFirst, separatorIconName, ...rest } = props;
24
+ const isMobile = !!useBreakpointValue({ [BREAKPOINTS.MOBILE]: true, [BREAKPOINTS.DESKTOP]: false }, 'desktop');
25
+
26
+ const childrenCount = Children.count(children);
27
+ const items = Children.map(children, (child, index) => {
28
+ return (
29
+ <BreadcrumbItem>
30
+ {hasSeparatorBeforeFirst && index === 0 && <BreadcrumbSeparator />}
31
+ {child}
32
+ {hasSeparatorAfterLast && index === childrenCount - 1 && <BreadcrumbSeparator />}
33
+ </BreadcrumbItem>
34
+ );
35
+ });
36
+
37
+ const defaultIconName = isMobile ? 'ChevronLeft' : 'ChevronRight';
38
+ const properties = {
39
+ separator: <Icon name={separatorIconName || defaultIconName} color="neutral.70" size="16" />,
40
+ ...rest,
41
+ };
42
+ return (
43
+ <ChakraBreadcrumb {...properties} ref={ref}>
44
+ {items}
45
+ </ChakraBreadcrumb>
46
+ );
47
+ });
48
+
49
+ Breadcrumb.defaultProps = {};
50
+
51
+ export default Breadcrumb;
@@ -0,0 +1,34 @@
1
+ import {
2
+ BreadcrumbLink as ChakraBreadcrumbLink,
3
+ BreadcrumbLinkProps as ChakraBreadcrumbLinkProps,
4
+ forwardRef,
5
+ useBreakpointValue,
6
+ } from '@chakra-ui/react';
7
+ import { BREAKPOINTS } from '../../Foundations/Breakpoints/Breakpoints';
8
+ import Avatar from '../Avatar/Avatar';
9
+
10
+ export interface BreadcrumbLinkProps extends ChakraBreadcrumbLinkProps {
11
+ avatarName?: string;
12
+ avatarUrl?: string;
13
+ }
14
+
15
+ const BreadcrumbLink = forwardRef<BreadcrumbLinkProps, 'a'>((props, ref) => {
16
+ const { avatarName, avatarUrl, children, isCurrentPage, ...rest } = props;
17
+ const isMobile = !!useBreakpointValue({ [BREAKPOINTS.MOBILE]: true, [BREAKPOINTS.DESKTOP]: false }, 'desktop');
18
+
19
+ const properties: ChakraBreadcrumbLinkProps = {
20
+ color: isCurrentPage ? 'neutral.40' : 'inherit',
21
+ isCurrentPage,
22
+ ...rest,
23
+ };
24
+ return (
25
+ <ChakraBreadcrumbLink {...properties} color={isCurrentPage ? 'neutral.40' : 'inherit'} ref={ref}>
26
+ {!isMobile && (avatarName || avatarUrl) && (
27
+ <Avatar name={avatarName || children?.toString()} src={avatarUrl} borderRadius="4" />
28
+ )}
29
+ {children}
30
+ </ChakraBreadcrumbLink>
31
+ );
32
+ });
33
+
34
+ export default BreadcrumbLink;
@@ -5,6 +5,7 @@ import {
5
5
  ModalCloseButton,
6
6
  ModalHeader,
7
7
  useBreakpointValue,
8
+ usePrefersReducedMotion,
8
9
  HTMLChakraProps,
9
10
  } from '@chakra-ui/react';
10
11
  import { BREAKPOINTS } from '../../Foundations/Breakpoints/Breakpoints';
@@ -35,12 +36,14 @@ const Dialog = ({
35
36
  ...rest
36
37
  }: DialogProps) => {
37
38
  const dialogSize = useBreakpointValue({ [BREAKPOINTS.MOBILE]: 'mobile', [BREAKPOINTS.DESKTOP]: size });
39
+ const prefersReducedMotion = usePrefersReducedMotion();
40
+
38
41
  return (
39
42
  <Modal
40
43
  closeOnEsc={isClosable}
41
44
  closeOnOverlayClick={false}
42
45
  isOpen={isOpen}
43
- motionPreset="none"
46
+ motionPreset={prefersReducedMotion ? 'none' : 'scale'}
44
47
  onClose={isClosable ? onClose : () => {}}
45
48
  scrollBehavior={scrollBehavior}
46
49
  size={dialogSize}
@@ -1,4 +1,6 @@
1
1
  import {
2
+ Badge as ChakraBadge,
3
+ BadgeProps as ChakraBadgeProps,
2
4
  Button,
3
5
  Tab as ChakraTab,
4
6
  TabProps as ChakraTabProps,
@@ -6,8 +8,28 @@ import {
6
8
  useMultiStyleConfig,
7
9
  useTab,
8
10
  } from '@chakra-ui/react';
9
- import Badge, { BadgeProps } from '../Badge/Badge';
10
- import Icon, { TypeIconName } from '../Icon/Icon';
11
+ import Icon from '../../Old/Icon/Icon';
12
+ import { TypeIconName } from '../../Old/Icon/tsx';
13
+
14
+ // TODO: separated component
15
+ interface BadgeProps extends ChakraBadgeProps {
16
+ backgroundColor?: ChakraBadgeProps['backgroundColor'];
17
+ children?: number | string;
18
+ color?: ChakraBadgeProps['color'];
19
+ }
20
+
21
+ const Badge = (props: BadgeProps) => {
22
+ const properties: ChakraBadgeProps = {
23
+ ...props,
24
+ borderRadius: '4',
25
+ fontSize: '1',
26
+ lineHeight: '1',
27
+ paddingY: '3px',
28
+ paddingX: '8',
29
+ textTransform: 'uppercase',
30
+ };
31
+ return <ChakraBadge {...properties} />;
32
+ };
11
33
 
12
34
  export interface TabProps extends ChakraTabProps {
13
35
  badge?: BadgeProps;
@@ -0,0 +1,26 @@
1
+ import { ComponentStory, ComponentMeta } from '@storybook/react';
2
+ import { useDisclosure } from '@chakra-ui/react';
3
+ import Button from '../Button/Button';
4
+ import Box from '../Box/Box';
5
+ import Fade from './Fade';
6
+
7
+ export default {
8
+ title: 'Components/Fade',
9
+ component: Fade,
10
+ } as ComponentMeta<typeof Fade>;
11
+
12
+ export const WithProps: ComponentStory<typeof Fade> = (props) => {
13
+ const { isOpen, onToggle } = useDisclosure();
14
+
15
+ return (
16
+ <Box height="200">
17
+ <Button onClick={onToggle}>Toggle fade transition</Button>
18
+
19
+ <Fade in={isOpen} {...props}>
20
+ <Box p="32" color="neutral.10" mt="4" bg="neutral.90">
21
+ Fade
22
+ </Box>
23
+ </Fade>
24
+ </Box>
25
+ );
26
+ };
@@ -0,0 +1,12 @@
1
+ import { Fade as ChakraFade, FadeProps, forwardRef } from '@chakra-ui/react';
2
+
3
+ /**
4
+ * Fade is a transition component
5
+ */
6
+ const Fade = forwardRef<FadeProps, 'div'>((props, ref) => {
7
+ return <ChakraFade {...props} ref={ref} />;
8
+ });
9
+
10
+ export type { FadeProps };
11
+
12
+ export default Fade;
@@ -0,0 +1,16 @@
1
+ :root {
2
+ --AddonBeam--height: 3rem;
3
+ }
4
+
5
+ .AddonBeam {
6
+ min-height: var(--AddonBeam--height);
7
+ padding: 0.375rem 1.25rem;
8
+ }
9
+
10
+ .AddonBeam__link {
11
+ padding: 0.375rem var(--size--x2);
12
+ border-radius: var(--size--x2);
13
+ transition-property: background-color;
14
+ transition-duration: var(--transition-duration--base);
15
+ transition-timing-function: var(--transition-timing-function);
16
+ }
@@ -0,0 +1,117 @@
1
+ import * as React from 'react';
2
+ import { TypeIconName } from '../Icon/tsx';
3
+ import Flex, { Props as FlexProps } from '../Flex/Flex';
4
+ import Hamburger from '../Hamburger/Hamburger';
5
+ import Icon from '../Icon/Icon';
6
+ import Link from '../Link/Link';
7
+ import Image from '../Image/Image';
8
+ import Text from '../Text/Text';
9
+ import AddonBeamLink from './AddonBeamLink';
10
+ import './AddonBeam.css';
11
+
12
+ export interface Props extends FlexProps {
13
+ /** The icon that appears to the very left of the beam that represents the add-on */
14
+ addonIcon: TypeIconName;
15
+ /** The name that appears next to the add-on icon */
16
+ addonName: string;
17
+ /** Image src for the Bitrise application */
18
+ appImage?: string;
19
+ /** Link back to the Bitrise application */
20
+ appLink?: string;
21
+ /** Name for the Bitrise application */
22
+ appName?: string;
23
+ /** Flag that indicates with a badge that the addon is in a Beta stage */
24
+ isBeta?: boolean;
25
+ /** Flag for if the Hamburger menu icon should be in an active state */
26
+ isHamburgerIconActive?: boolean;
27
+ /** */
28
+ isInResponsiveView?: boolean;
29
+ /** Event handler for when the Hamburger menu item is clicked */
30
+ onHamburgerIconClick?: (event: React.SyntheticEvent) => void;
31
+ }
32
+
33
+ /** The common internal Add-on Beam for Bitrise made add-ons */
34
+ const AddonBeam: React.FunctionComponent<Props> = (props: Props) => {
35
+ const {
36
+ addonIcon,
37
+ addonName,
38
+ appImage,
39
+ appLink,
40
+ appName,
41
+ children,
42
+ isBeta,
43
+ isHamburgerIconActive,
44
+ isInResponsiveView,
45
+ onHamburgerIconClick,
46
+ ...rest
47
+ } = props;
48
+
49
+ return (
50
+ <Flex
51
+ {...rest}
52
+ alignChildrenHorizontal="between"
53
+ alignChildrenVertical="middle"
54
+ className="AddonBeam"
55
+ container
56
+ direction="horizontal"
57
+ >
58
+ {isInResponsiveView && !!onHamburgerIconClick && (
59
+ <Flex>
60
+ {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
61
+ <Link color="neutral.100" onClick={onHamburgerIconClick}>
62
+ <Hamburger active={isHamburgerIconActive} />
63
+ </Link>
64
+ </Flex>
65
+ )}
66
+
67
+ <Flex
68
+ absolute={isInResponsiveView ? 'center' : undefined}
69
+ alignChildrenVertical="middle"
70
+ direction="horizontal"
71
+ gap="x2"
72
+ >
73
+ <Flex>
74
+ <Icon name={addonIcon} />
75
+ </Flex>
76
+
77
+ <Flex>
78
+ <Text size="3">
79
+ <Text inline weight="bold">
80
+ {addonName}
81
+ </Text>{' '}
82
+ by Bitrise
83
+ </Text>
84
+ </Flex>
85
+ </Flex>
86
+
87
+ {!isInResponsiveView && appName && (
88
+ <Flex absolute="center">
89
+ <AddonBeamLink href={appLink}>
90
+ <Flex alignChildrenVertical="middle" direction="horizontal" gap="x2">
91
+ {appImage && (
92
+ <Flex>
93
+ <Image borderRadius="x1" height="1.5rem" src={appImage} width="1.5rem" />
94
+ </Flex>
95
+ )}
96
+
97
+ <Flex alignChildrenVertical="middle" direction="horizontal" gap="x1">
98
+ <Flex>{appName}</Flex>
99
+ <Flex>
100
+ <Icon name="OpenInBrowser" />
101
+ </Flex>
102
+ </Flex>
103
+ </Flex>
104
+ </AddonBeamLink>
105
+ </Flex>
106
+ )}
107
+
108
+ {children && !isInResponsiveView && (
109
+ <Flex alignChildrenVertical="middle" direction="horizontal" gap="x6">
110
+ {children}
111
+ </Flex>
112
+ )}
113
+ </Flex>
114
+ );
115
+ };
116
+
117
+ export default AddonBeam;
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { TypeIconName } from '../Icon/tsx';
3
+ import Flex, { Props as FlexProps } from '../Flex/Flex';
4
+ import Icon from '../Icon/Icon';
5
+
6
+ export interface Props extends FlexProps {
7
+ Component?: FlexProps['Component'];
8
+ /** Name of the icon that appears next to the text of the link. */
9
+ icon?: TypeIconName;
10
+ /** @Ignore */
11
+ to?: string;
12
+ }
13
+
14
+ /**
15
+ * Link that appears to the very right of the beam.
16
+ */
17
+ const AddonBeamLink: React.FunctionComponent<Props> = (props: Props) => {
18
+ const { children, icon, ...rest } = props;
19
+
20
+ return (
21
+ <Flex {...rest} className="AddonBeam__link" direction="horizontal" gap="x1">
22
+ {icon && (
23
+ <Flex>
24
+ <Icon name={icon} />
25
+ </Flex>
26
+ )}
27
+
28
+ <Flex>{children}</Flex>
29
+ </Flex>
30
+ );
31
+ };
32
+
33
+ AddonBeamLink.defaultProps = {
34
+ Component: 'a',
35
+ };
36
+
37
+ export default AddonBeamLink;
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import Flex, { Props as FlexProps } from '../Flex/Flex';
3
+ import Icon from '../Icon/Icon';
4
+ import Text from '../Text/Text';
5
+
6
+ export interface Props extends FlexProps {
7
+ /** Name of the add-on. */
8
+ addonName: string;
9
+ }
10
+
11
+ /** A common Bitrise footer component */
12
+ const AddonFooter: React.FunctionComponent<Props> = ({ addonName, ...rest }: Props) => (
13
+ <Flex {...rest} alignChildren="middle" direction="vertical">
14
+ <Icon margin="x2" name="Bitbot" size="1.5rem" />
15
+ <Text align="middle" letterSpacing="x5" size="1" uppercase>
16
+ {addonName}
17
+ </Text>
18
+ <Text align="middle" letterSpacing="x5" size="1" uppercase>
19
+ An Official Bitrise Add-on
20
+ </Text>
21
+ </Flex>
22
+ );
23
+
24
+ export default AddonFooter;
@@ -0,0 +1,45 @@
1
+ .AppLayout__header,
2
+ .AppLayout__sidebar {
3
+ position: sticky;
4
+ }
5
+
6
+ .AppLayout__header {
7
+ top: 0;
8
+ z-index: var(--z-index-Header);
9
+ }
10
+
11
+ .AppLayout__sidebar {
12
+ top: var(--AddonBeam--height);
13
+ width: 18.75rem;
14
+ height: calc(100vh - var(--AddonBeam--height));
15
+ background-color: var(--color-grape--5);
16
+ overflow: auto;
17
+ z-index: var(--z-index-Sidebar);
18
+ }
19
+
20
+ .AppLayout--responsive-view {
21
+ &.App--sidebar-visible {
22
+ max-height: 100vh;
23
+ overflow: hidden;
24
+ }
25
+
26
+ & .AppLayout__sidebar {
27
+ display: flex;
28
+ width: 100%;
29
+ margin-left: -100%;
30
+
31
+ /**
32
+ * "justify-contnet: flex-end" breaks the vertical scroll
33
+ *
34
+ * https://bugs.chromium.org/p/chromium/issues/detail?id=411624
35
+ * https://github.com/philipwalton/flexbugs/issues/53
36
+ */
37
+ & > :first-child {
38
+ margin-top: auto;
39
+ }
40
+ }
41
+
42
+ &.AppLayout--sidebar-visible .AppLayout__sidebar {
43
+ transform: translateX(100%);
44
+ }
45
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import classnames from 'classnames';
3
+ import Flex, { Props as FlexProps } from '../Flex/Flex';
4
+ import './AppLayout.css';
5
+
6
+ export interface Props extends FlexProps {
7
+ isInResponsiveView?: boolean;
8
+ isSidebarVisible?: boolean;
9
+ }
10
+
11
+ const AppLayout: React.FunctionComponent<Props> = (props: Props) => {
12
+ const { isInResponsiveView, isSidebarVisible, ...rest } = props;
13
+ const classes = classnames('AppLayout', {
14
+ 'AppLayout--responsive-view': isInResponsiveView,
15
+ 'AppLayout--sidebar-visible': isSidebarVisible,
16
+ });
17
+
18
+ return <Flex {...rest} className={classes} direction="vertical" grow />;
19
+ };
20
+
21
+ export default AppLayout;