Files
react/pages/en-us/guide/scaleable.mdx
witt 299f7741ea chore: release v2.2.0 (#602)
* feat(slider): add option to hide slider value (#494)

* feat(slider): hideValue prop added

* test(slider): test added for hideValue prop

docs(slider): add hideValue prop

docs(slider): add hideValue prop for cn docs

feat(slider): ensure the dot stays round when no content

test(slider): update snapshots

* feat(loading): apply width & height props (#500)

* feat(loading): apply width & height props

* test(loading): test case added & updating snapshots

* fix(loading): add a string type for size prop

test(loading): update test case & snapshots

* feat(loading): support custom the ratio of spaces

* docs(loading): append size and spaceRatio

test(loading): update snapshots

Co-authored-by: unix <unix.bio@gmail.com>

* chore(deps): update styled-jsx to ^3.3.1 (#520)

* chore(deps): update styled-jsx to ^3.3.1

update styled-jsx to ^3.3.1 to allow compatiblity with react@^17

* fix(modules): fix 695-issue to compatible with React 17

* docs: fix module error caused by styled-jsx update

Co-authored-by: unix <unix.bio@gmail.com>

* chore: release v2.2.0-rc.0

* fix(modal): disable backdrop even if actions missing (#532)

* fix: upgrade to be compatible with React-17's event system (#533)

* feat: useKeyboard hooks (#541)

* feat(keyboard): create keyboard hooks

* feat(usekeyboard): redesign event handler to match keyboard events from browser

\

* test(usekeyboard): add testcase

* docs(usekeyboard): create new hooks document

* chore: release v2.2.0-rc.1

* feat(auto-complete): add forwardRef for input element (#542)

* feat(auto-complete): add forwardRef for input element

* test(auto-complete): add testcase to ensure ref is available

* docs(auto-complete): append props for ref

* chore: release v2.2.0-rc.2

* fix(auto-complete): fix size of loading icon (#546)

* chore: release v2.2.0-rc.3

* fix(auto-complete): hide shadow when no content (#547)

* chore: release v2.2.0-rc.4

* feat: add status prop in checkbox, radio, select, slider and toggle (#530)

* feat: added status prop to set color by states

test: check status success, warning and error

* docs: added playground example and API reference

fix: replaced ´_´ as it's not recommended to use

fix: removed redundant return

refactor: renamed prop from status to type

test: update test with the renamed prop

* docs: update prop references from status to type

fix: status prop not updated to type

fix: missing return

* fix(select): set icons and hover state to follow the theme

* test(slider): update snapshots

* chore: always use relative paths when import types

Co-authored-by: unix <unix.bio@gmail.com>

* feat(auto-complete): add props for popup container (#558)

* feat(auto-complete): add props for popup container

* docs(auto-complete): add attribute for popup container

* chore: release v2.2.0-rc.5

* fix: fix path error under esm

* chore: release v2.2.0-rc.6

* feat(scaleable): add scaleable props to each component (#531)

* feat(scaleable): add scaleable props to each component

* chore(scaleable): update the exported type

* feat: apply scaleable to components

chore: remove with-default

test: improve testcase for scaleable

chore: resolve test warning

ci: upgrade nodejs to latest lts

docs: fix type error in document site

* docs: update documents to be compatible with scaleable

chore: fix build errors

* chore: remove all size-related attributes

docs: improve guide document

* docs: add scaleable documentation

test: update snapshots

chore: remove unused

* feat: add scaleable to grid components

* docs: improve docs

* test: update snapshots

* fix(grid): fix basic component props

* feat: export all types related to components (#562)

* feat: export all types related to components

fix(tooltip): fix the vertical offset of the arrow

* refactor: optimize events of all popup related components

* test: append testcases for popup base component

* test: add testcase for visible events

* test: update snapshots

* fix(bundle): fix modules missing in yarn berry (#563)

* chore: add peer dependencies

* fix(bundle): fix modules missing in yarn berry

* chore: upgrade configs for jest 27

* chore(examples): upgrade next examples for scaleable (#564)

* chore: release v2.2.0-rc.7

* feat(rating): a new component rating indicator (#543)

* chore(deps): bump lodash from 4.17.20 to 4.17.21 (#537)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* (feature) rating state working and islocked working

* (feature) custom emojis for the ratings added

* refactor(rating): migrate component to scaleable

* feat(rating): use inline icon component

test(rating): update testcase

* docs(rating): add document for zh-cn

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: unix <unix.bio@gmail.com>

* refactor(table): redesign interfaces to improve the experience in TypeScript (#569)

* refactor(table): redesign interfaces to improve the experience in TypeScript

* docs: upgrade to new type exports

* style: fix lint warnings

* docs: fix sidebar text-transform (#570)

* docs: improve the copywriting content of the document (#571)

* docs: export individual style types for each component

* docs: improve the copywriting content of the document

* docs: optimize the document site experience on mobile devices

* chore: release v2.2.0-rc.8

* feat(modal): responds to keyboard events when modal is displayed (#574)

* docs: redesign mobile navigation (#576)

* docs: redesign mobile navigation

* docs: fix subheading active color

* fix(avatar): fix margin on first child (#578)

Co-authored-by: witt <unix.bio@gmail.com>

* feat(select): imporve the focus events to export simulated ref (#579)

* feat(select): imporve the focus events to export simulated ref

* test: improve testcase and fix warnings

* docs(select): add label and divider to props docs

* fix: rename hymlType to htmlType (#599)

* feat(drawer): create component (#575)

* feat(drawer): create component

* feat(drawer): refinement of drawer component

* test: update tool chain for jest

* test: simplify events case for jest

* docs(drawer): add playground

* docs(drawer): add api docs

* docs: add home page (#573)

* docs: add home page

* docs(homepage): apply suggestions from code review

* docs(homepage): make cards clickable

Co-authored-by: witt <unix.bio@gmail.com>

* test: update snapshots for scaleable

* chore: update lock file

* chore: upgrade styled-jsx

* test: update snapshots for styled-jsx

Co-authored-by: Deepankar <deep14bhade@gmail.com>
Co-authored-by: Deepankar <statisticsaffinity@gmail.com>
Co-authored-by: Florian Levis <levis.florian@gmail.com>
Co-authored-by: gepd <guillermoepd@hotmail.com>
Co-authored-by: Nils J <nils.jorek@gmx.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ofek Ashery <ofek.ashery@gmail.com>
Co-authored-by: Sanna Jammeh <50969683+sannajammeh@users.noreply.github.com>
2021-08-13 17:31:45 +08:00

139 lines
5.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import NextLink from 'next/link'
import { Layout, GridDemo, Attributes } from 'lib/components'
import { Note, Text, Spacer, Display, Code, Grid, Button, Link } from 'components'
export const meta = {
title: 'Scaleable',
group: 'Customization',
index: 30,
}
## Scaleable
<Note type="warning">
This feature was introduced in v2.2.0 and up. If youre using older versions of Geist,
please upgrade before trying it out.
</Note>
The scalable nature of the Geist gives great flexibility to each component.
You can freely scale the component size, rewrite the proportion of the component local space,
adjust the inner and outer layout structure, etc.
This means that developers: can achieve a high level of customization in most scenarios without hack or override styles,
even multiple components can be synchronized using base unit, compatible with different Web structures with low code,
and get the best user experience in any layout style.
<Spacer h={2.5} />
### Scaling
Different from common component libraries, Geist no longer uses `size` related props to control component volume.
Each component of Geist has a suitable layout volume by default, you can dynamically scale components with the `scale` props.
<Display width="500px" caption="Render Button component at 0.5 scaling">
<GridDemo>
<Button scale={0.5}>Scale 0.5</Button>
<Button>Default</Button>
</GridDemo>
```jsx
<Button scale={0.5}>Scale 0.5</Button>
<Button>Default</Button>
```
</Display>
As the example, the `Button` component has an equal reduction in all space occupancy (including fonts).
Geist renders the specified volume components **realistically** by dynamically calculating the component size.
This ensures that the layout and typography are always the same as expected.
<Spacer h={2.5} />
### Single Value
For any component, the scalable props include width, height, outer margin, inner margin, font, etc.
You can define each scalable property individually, a scaleable number or CSS string.
<Display width="500px">
<GridDemo>
<Button font={1.5} width="300px">Full Button</Button>
</GridDemo>
```jsx
<Button width="300px" font={1.5}>
Full Button
</Button>
```
</Display>
<Spacer h={2.5} />
### Scaling unit
<Note type="secondary" filled>
Adjusting the scaling unit is an advanced customization and you can skip this section.
</Note>
The volume of the component depends on both the `scale` property entered by the user and the **scaling unit**.
The default scaling unit is `16px`, but Geist allows you to customize this value at different levels to achieve a high level of customization.
For defining _scaling unit_ for multiple components at the same time, you need to create additional _Themes_ and add a new layer of
`GeistProvider` scope. All components under this scope will share the same _scaling unit_.
(Please refer to <NextLink href="/en-us/guide/themes"><Link color>Themes section</Link></NextLink> for learn more)
```jsx
// For single component
export const MyBtn = () => <Button unit="2rem" />
// For multiple components
const themeType = 'myTheme'
const customUnitTheme = Themes.createFromLight({
type: themeType,
layout: {
unit: '20px',
},
})
export const MyGroup = () => (
<GeistProvider themes={[customUnitTheme]} themeType={themeType}>
<Button />
<Input />
</GeistProvider>
)
```
<Spacer h={2.5} />
### Alias
Below is a reference to all available props and aliases
`number` means that numbers can be passed for scaling, and `string` type means that CSS strings can be passed for fixed values.
<Attributes.Table>
| Attribute | Description | Type | Default |
| ----------------------- | -------------------------- | -------------- | ------- |
| **scale** | scale value | number | - |
| **unit** | scale unit | string | `16px` |
| **width / w** | component width | string, number | 'auto' |
| **height / h** | component height | string, number | 'auto' |
| **font** | font size | string, number | - |
| **margin** | all margin size | string, number | `0` |
| **marginLeft / ml** | | string, numbe | - |
| **marginRight / mr** | | string, numbe | - |
| **marginTop / mt** | | string, numbe | - |
| **marginBottom / mb** | | string, numbe | - |
| **padding** | all padding size | string, numbe | `0` |
| **paddingLeft / pl** | | string, numbe | - |
| **paddingRight / pr** | | string, numbe | - |
| **paddingTop / pt** | | string, numbe | - |
| **paddingBottom / pb** | | string, numbe | - |
| **mx**&nbsp;(`ml & mr`) | horizontal axis of margin | string, numbe | - |
| **my**&nbsp;(`mt & mb`) | vertical axis of margin | string, numbe | - |
| **px**&nbsp;(`pl & pr`) | horizontal axis of padding | string, numbe | - |
| **py**&nbsp;(`pt & pb`) | vertical axis of padding | string, numbe | - |
</Attributes.Table>
export default ({ children }) => <Layout meta={meta}>{children}</Layout>