 
  
  
  Installation // Example // Contribution // Acknowledgement
Run the following in your favorit console:
yarn add rescript-chakraOR
npm install --save rescript-chakraDon't forget install dependencies requirements of @chakra-ui/react (Skip when exist)
yarn add @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^4OR
npm i @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^4Then, add rescript-chakra in your bsconfig.json:
-- "bs-dependencies": [],
++ "bs-dependencies": [rescript-chakra],- following chakra-uiexample here
// JavaScript 🟨 | TypeScript 🟦
import { Box } from "@chakra-ui/react"
// m={2} refers to the value of `theme.space[2]`
<Box m={2}>Tomato</Box>
// You can also use custom values
<Box maxW="960px" mx="auto" />
// sets margin `8px` on all viewports and `16px` from the first breakpoint and up
<Box m={[2, 3]} />
// ReScript 🟥
open Chakra
@react.component
let make = () => <>
  // m={2} refers to the value of `theme.space[2]`
  <Box m={#2}> {"Tomato"->React.string} </Box>
  // You can also use custom values
  <Box maxW={#px(960)} mx=#auto />
  // sets margin `8px` on all viewports and `16px` from the first breakpoint and up
  <Box m={#array([#2, #3])} />
</>Or you can check this Example.
All of Binding for Chakra-UI isn't completed, if you want to support this project, see the list below 🙌.
This is following and closely same with Chakra-UI. See Style Props and Implemented typed Props with typed CSS-Properties use bs-css.
- Margin and Padding
- Color and Background Color
- Gradient
- Layout width and height
- Flexbox
- Grid Layout
- Background
- Borders
- Border Radius
- Position
- Shadow
- Pseudo
- Other Style Props 🚧 (Partially Implemented)
All of Style Props implementation is write in File:Chakra__MakeProps.res
- Aspect Ratio
- Box
-  Center
- Square
- Circle
 
- Container
-  Flex
- Spacer
 
-  Grid
- GridItem
 
- SimpleGrid
-  Stack
- VStack
- HStack
 
-  Wrap
- WrapItem
 
-  Button
- Button Group
 
- Checkbox
- Editable
- Form Control
- Icon Button
-  Input
- InputGroup
- InputLeftAddon
- InputRightAddon
- InputLeftElement
- InputRightElement
 
- Number Input
- Pin Input
- Radio
- Select
- Slider
- Switch
- Textarea
- Badge
- Close Button
- Code
- Divider
- Kbd
-  List
- ListItem
- ListIcon
- OrderedList
- UnorderedList
 
-  Stat
- StatGroup
- StatLabel
- StatHelpText
- StatNumber
- StatArrow
 
-  Table
- Thead
- Tbody
- Tfoot
- Tr
- Th
- Td
- TableCaption
 
-  Tag
- TagLabel
- TagLeftIcon
- TagRightIcon
- TagCloseButton
 
- Alert
-  Circular Progress
- Circular Progress Label
 
- Progress
-  Skeleton
- SkeletonText
- SkeletonCircle
 
- Spinner
-  Toast
- useToast
- createStandaloneToast
 
- Text
- Heading
- Alert Dialog
- Drawer
- Menu
- Modal
- Popover
- Tooltip
- Accordion
- Tabs
- Visually Hidden
-  Breadcrumb
- BreadcrumbItem
- BreadcrumbLink
- BreadcrumbSeparator
 
- Link
-  LinkBox
- LinkOverlay
 
-  Avatar
- AvatarGroup
 
- Icon
- Image
- Portal
-  Transitions
- Fade
- ScaleFade
- Slide
- SlideFade
- Collapse
 
- useBoolean
- useBreakpointValue
- useClipboard
- useControllable
- useDisclosure
- useMediaQuery
- useMergeRefs
- useOutsideClick
- usePrefersReducedMotion
- useTheme
- useToken
- Please, refer with conventionalcommits.org for write commitmessage.
I'm use hygen.io for generate new component binding base on Box.res, see _templates/Box/new/new.ejs.t
USAGE:
- basic
hygen Box new --name Name- create <Flex />
hygen Box new --name Flex- chakra-ui/chakra-ui ⚡️ Simple, Modular & Accessible UI Components for your React Applications
- giraud/bs-css Statically typed DSL for writing css in reason.