alouette 5.5.0 → 7.0.0-beta.1
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.
- package/.editorconfig +0 -4
- package/.eslintrc.json +5 -0
- package/.yo-rc.json +11 -0
- package/LICENSE +2 -15
- package/README.md +17 -74
- package/dist/createAlouetteTamagui-browser.es.js +330 -0
- package/dist/createAlouetteTamagui-browser.es.js.map +1 -0
- package/dist/createAlouetteTamagui-node18.mjs +330 -0
- package/dist/createAlouetteTamagui-node18.mjs.map +1 -0
- package/dist/createAlouetteTamagui-react-native.cjs.js +334 -0
- package/dist/createAlouetteTamagui-react-native.cjs.js.map +1 -0
- package/dist/index-browser.es.js +404 -0
- package/dist/index-browser.es.js.map +1 -0
- package/dist/index-node18.mjs +404 -0
- package/dist/index-node18.mjs.map +1 -0
- package/dist/index-react-native.cjs.js +419 -0
- package/dist/index-react-native.cjs.js.map +1 -0
- package/dist/phosphor-icons-browser.es.js +2497 -0
- package/dist/phosphor-icons-browser.es.js.map +1 -0
- package/dist/phosphor-icons-node18.mjs +2497 -0
- package/dist/phosphor-icons-node18.mjs.map +1 -0
- package/dist/phosphor-icons-react-native.cjs.js +4998 -0
- package/dist/phosphor-icons-react-native.cjs.js.map +1 -0
- package/package.json +90 -73
- package/phosphor-icons.js +1 -0
- package/rollup.config.mjs +8 -0
- package/scripts/generate-phosphor-icons-legacy-withcopy.mjs +64 -0
- package/scripts/generate-phosphor-icons.mjs +51 -0
- package/src/.eslintrc.json +32 -0
- package/src/components/actions/Button.stories.tsx +89 -0
- package/src/components/actions/Button.tsx +71 -0
- package/src/components/actions/IconButton.stories.tsx +63 -0
- package/src/components/actions/IconButton.tsx +40 -0
- package/src/components/containers/Frame.stories.tsx +104 -0
- package/src/components/containers/Frame.tsx +12 -0
- package/src/components/containers/Pressable.stories.tsx +30 -0
- package/src/components/containers/Pressable.tsx +9 -0
- package/src/components/containers/variants.ts +93 -0
- package/src/components/feedback/FeedbackIcon.tsx +25 -0
- package/src/components/feedback/Message.stories.tsx +63 -0
- package/src/components/feedback/Message.tsx +74 -0
- package/src/components/forms/InputText.stories.tsx +72 -0
- package/src/components/forms/InputText.tsx +33 -0
- package/src/components/primitives/Icon.stories.tsx +18 -0
- package/src/components/primitives/Icon.tsx +46 -0
- package/src/components/primitives/ScrollView.ts +26 -0
- package/src/components/primitives/View.stories.tsx +24 -0
- package/src/components/primitives/View.ts +5 -0
- package/src/components/primitives/createVariants.ts +109 -0
- package/src/components/primitives/stacks.stories.tsx +75 -0
- package/src/components/primitives/stacks.ts +41 -0
- package/src/components/story-components/Story.tsx +80 -0
- package/src/components/story-components/StoryContainer.tsx +20 -0
- package/src/components/story-components/StoryDecorator.tsx +8 -0
- package/src/components/story-components/StoryGrid.tsx +90 -0
- package/src/components/story-components/StoryTitle.tsx +19 -0
- package/src/components/story-components/WithTamaguiConfig.tsx +15 -0
- package/src/components/typography/Typography.stories.tsx +48 -0
- package/src/components/typography/Typography.tsx +78 -0
- package/src/components/windowSize/SwitchBreakpoints.stories.tsx +60 -0
- package/src/components/windowSize/SwitchBreakpoints.tsx +59 -0
- package/src/components/windowSize/__snapshots__/SwitchBreakpoints.stories.tsx.snap +1032 -0
- package/src/components/windowSize/__snapshots_web__/SwitchBreakpoints.stories.tsx.snap +402 -0
- package/src/components/windowSize/useCurrentBreakpointName.ts +33 -0
- package/src/config/Breakpoints.ts +33 -0
- package/src/config/animations.ts +16 -0
- package/src/config/animations.web.ts +6 -0
- package/src/config/colorScales.ts +115 -0
- package/src/config/createAlouetteFonts.ts +70 -0
- package/src/config/createAlouetteTokens.ts +81 -0
- package/src/config/media.ts +9 -0
- package/src/config/themes.stories.tsx +63 -0
- package/src/config/themes.ts +111 -0
- package/src/config/tokens.stories.tsx +86 -0
- package/src/config/utils/groupTokens.ts +32 -0
- package/src/core/AlouetteDecorator.tsx +9 -0
- package/src/core/AlouetteProvider.tsx +19 -0
- package/src/createAlouetteTamagui.ts +37 -0
- package/src/index.ts +15 -0
- package/src/phosphor-icons.cjs +1254 -0
- package/src/phosphor-icons.d.ts +2503 -0
- package/src/phosphor-icons.ts +2498 -0
- package/src/typings/bundler.d.ts +10 -0
- package/tsconfig.json +20 -0
- package/.commitrc.js +0 -1
- package/.eslintignore +0 -2
- package/.eslintrc.js +0 -1
- package/.npmignore +0 -26
- package/.travis.yml +0 -10
- package/AUTHORS +0 -2
- package/CHANGELOG.md +0 -70
- package/HtmlRenderer.js +0 -4
- package/index.js +0 -6
- package/jsdoc.conf.json +0 -5
- package/lib-browsers/HtmlRenderer.js +0 -262
- package/lib-browsers/HtmlRenderer.js.map +0 -1
- package/lib-browsers/ParsedError.js +0 -70
- package/lib-browsers/ParsedError.js.map +0 -1
- package/lib-browsers/StackTrace.js +0 -43
- package/lib-browsers/StackTrace.js.map +0 -1
- package/lib-browsers/StackTraceItem.js +0 -92
- package/lib-browsers/StackTraceItem.js.map +0 -1
- package/lib-browsers/index.js +0 -131
- package/lib-browsers/index.js.map +0 -1
- package/lib-browsers-dev/HtmlRenderer.js +0 -262
- package/lib-browsers-dev/HtmlRenderer.js.map +0 -1
- package/lib-browsers-dev/ParsedError.js +0 -94
- package/lib-browsers-dev/ParsedError.js.map +0 -1
- package/lib-browsers-dev/StackTrace.js +0 -43
- package/lib-browsers-dev/StackTrace.js.map +0 -1
- package/lib-browsers-dev/StackTraceItem.js +0 -92
- package/lib-browsers-dev/StackTraceItem.js.map +0 -1
- package/lib-browsers-dev/index.js +0 -131
- package/lib-browsers-dev/index.js.map +0 -1
- package/lib-node6/HtmlRenderer.js +0 -240
- package/lib-node6/HtmlRenderer.js.map +0 -1
- package/lib-node6/ParsedError.js +0 -47
- package/lib-node6/ParsedError.js.map +0 -1
- package/lib-node6/StackTrace.js +0 -25
- package/lib-node6/StackTrace.js.map +0 -1
- package/lib-node6/StackTraceItem.js +0 -75
- package/lib-node6/StackTraceItem.js.map +0 -1
- package/lib-node6/index.js +0 -177
- package/lib-node6/index.js.map +0 -1
- package/lib-node6-dev/HtmlRenderer.js +0 -240
- package/lib-node6-dev/HtmlRenderer.js.map +0 -1
- package/lib-node6-dev/ParsedError.js +0 -72
- package/lib-node6-dev/ParsedError.js.map +0 -1
- package/lib-node6-dev/StackTrace.js +0 -25
- package/lib-node6-dev/StackTrace.js.map +0 -1
- package/lib-node6-dev/StackTraceItem.js +0 -75
- package/lib-node6-dev/StackTraceItem.js.map +0 -1
- package/lib-node6-dev/index.js +0 -177
- package/lib-node6-dev/index.js.map +0 -1
- package/lib-node7/HtmlRenderer.js +0 -240
- package/lib-node7/HtmlRenderer.js.map +0 -1
- package/lib-node7/ParsedError.js +0 -47
- package/lib-node7/ParsedError.js.map +0 -1
- package/lib-node7/StackTrace.js +0 -25
- package/lib-node7/StackTrace.js.map +0 -1
- package/lib-node7/StackTraceItem.js +0 -75
- package/lib-node7/StackTraceItem.js.map +0 -1
- package/lib-node7/index.js +0 -177
- package/lib-node7/index.js.map +0 -1
- package/lib-node7-dev/HtmlRenderer.js +0 -240
- package/lib-node7-dev/HtmlRenderer.js.map +0 -1
- package/lib-node7-dev/ParsedError.js +0 -72
- package/lib-node7-dev/ParsedError.js.map +0 -1
- package/lib-node7-dev/StackTrace.js +0 -25
- package/lib-node7-dev/StackTrace.js.map +0 -1
- package/lib-node7-dev/StackTraceItem.js +0 -75
- package/lib-node7-dev/StackTraceItem.js.map +0 -1
- package/lib-node7-dev/index.js +0 -177
- package/lib-node7-dev/index.js.map +0 -1
- package/lib-older-node/HtmlRenderer.js +0 -262
- package/lib-older-node/HtmlRenderer.js.map +0 -1
- package/lib-older-node/ParsedError.js +0 -70
- package/lib-older-node/ParsedError.js.map +0 -1
- package/lib-older-node/StackTrace.js +0 -43
- package/lib-older-node/StackTrace.js.map +0 -1
- package/lib-older-node/StackTraceItem.js +0 -92
- package/lib-older-node/StackTraceItem.js.map +0 -1
- package/lib-older-node/index.js +0 -177
- package/lib-older-node/index.js.map +0 -1
- package/lib-older-node-dev/HtmlRenderer.js +0 -262
- package/lib-older-node-dev/HtmlRenderer.js.map +0 -1
- package/lib-older-node-dev/ParsedError.js +0 -94
- package/lib-older-node-dev/ParsedError.js.map +0 -1
- package/lib-older-node-dev/StackTrace.js +0 -43
- package/lib-older-node-dev/StackTrace.js.map +0 -1
- package/lib-older-node-dev/StackTraceItem.js +0 -92
- package/lib-older-node-dev/StackTraceItem.js.map +0 -1
- package/lib-older-node-dev/index.js +0 -177
- package/lib-older-node-dev/index.js.map +0 -1
- package/lib-webpack/HtmlRenderer.js +0 -247
- package/lib-webpack/HtmlRenderer.js.map +0 -1
- package/lib-webpack/ParsedError.js +0 -64
- package/lib-webpack/ParsedError.js.map +0 -1
- package/lib-webpack/StackTrace.js +0 -37
- package/lib-webpack/StackTrace.js.map +0 -1
- package/lib-webpack/StackTraceItem.js +0 -86
- package/lib-webpack/StackTraceItem.js.map +0 -1
- package/lib-webpack/index.js +0 -113
- package/lib-webpack/index.js.map +0 -1
- package/lib-webpack-dev/HtmlRenderer.js +0 -247
- package/lib-webpack-dev/HtmlRenderer.js.map +0 -1
- package/lib-webpack-dev/ParsedError.js +0 -81
- package/lib-webpack-dev/ParsedError.js.map +0 -1
- package/lib-webpack-dev/StackTrace.js +0 -37
- package/lib-webpack-dev/StackTrace.js.map +0 -1
- package/lib-webpack-dev/StackTraceItem.js +0 -86
- package/lib-webpack-dev/StackTraceItem.js.map +0 -1
- package/lib-webpack-dev/index.js +0 -113
- package/lib-webpack-dev/index.js.map +0 -1
- package/lib-webpack-modern-browsers/HtmlRenderer.js +0 -226
- package/lib-webpack-modern-browsers/HtmlRenderer.js.map +0 -1
- package/lib-webpack-modern-browsers/ParsedError.js +0 -43
- package/lib-webpack-modern-browsers/ParsedError.js.map +0 -1
- package/lib-webpack-modern-browsers/StackTrace.js +0 -23
- package/lib-webpack-modern-browsers/StackTrace.js.map +0 -1
- package/lib-webpack-modern-browsers/StackTraceItem.js +0 -69
- package/lib-webpack-modern-browsers/StackTraceItem.js.map +0 -1
- package/lib-webpack-modern-browsers/index.js +0 -113
- package/lib-webpack-modern-browsers/index.js.map +0 -1
- package/lib-webpack-modern-browsers-dev/HtmlRenderer.js +0 -226
- package/lib-webpack-modern-browsers-dev/HtmlRenderer.js.map +0 -1
- package/lib-webpack-modern-browsers-dev/ParsedError.js +0 -57
- package/lib-webpack-modern-browsers-dev/ParsedError.js.map +0 -1
- package/lib-webpack-modern-browsers-dev/StackTrace.js +0 -23
- package/lib-webpack-modern-browsers-dev/StackTrace.js.map +0 -1
- package/lib-webpack-modern-browsers-dev/StackTraceItem.js +0 -69
- package/lib-webpack-modern-browsers-dev/StackTraceItem.js.map +0 -1
- package/lib-webpack-modern-browsers-dev/index.js +0 -113
- package/lib-webpack-modern-browsers-dev/index.js.map +0 -1
- package/lib-webpack-node7/HtmlRenderer.js +0 -222
- package/lib-webpack-node7/HtmlRenderer.js.map +0 -1
- package/lib-webpack-node7/ParsedError.js +0 -43
- package/lib-webpack-node7/ParsedError.js.map +0 -1
- package/lib-webpack-node7/StackTrace.js +0 -21
- package/lib-webpack-node7/StackTrace.js.map +0 -1
- package/lib-webpack-node7/StackTraceItem.js +0 -69
- package/lib-webpack-node7/StackTraceItem.js.map +0 -1
- package/lib-webpack-node7/index.js +0 -157
- package/lib-webpack-node7/index.js.map +0 -1
- package/lib-webpack-node7-dev/HtmlRenderer.js +0 -222
- package/lib-webpack-node7-dev/HtmlRenderer.js.map +0 -1
- package/lib-webpack-node7-dev/ParsedError.js +0 -57
- package/lib-webpack-node7-dev/ParsedError.js.map +0 -1
- package/lib-webpack-node7-dev/StackTrace.js +0 -21
- package/lib-webpack-node7-dev/StackTrace.js.map +0 -1
- package/lib-webpack-node7-dev/StackTraceItem.js +0 -69
- package/lib-webpack-node7-dev/StackTraceItem.js.map +0 -1
- package/lib-webpack-node7-dev/index.js +0 -157
- package/lib-webpack-node7-dev/index.js.map +0 -1
- package/src/HtmlRenderer.js +0 -231
- package/src/ParsedError.js +0 -44
- package/src/StackTrace.js +0 -21
- package/src/StackTraceItem.js +0 -71
- package/src/index.js +0 -160
- package/yarn.lock +0 -3680
package/.editorconfig
CHANGED
package/.eslintrc.json
ADDED
package/.yo-rc.json
ADDED
package/LICENSE
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
Copyright (c)
|
|
2
|
-
|
|
3
|
-
Permission to use, copy, modify, and/or distribute this software for
|
|
4
|
-
any purpose with or without fee is hereby granted, provided that the
|
|
5
|
-
above copyright notice and this permission notice appear in all
|
|
6
|
-
copies.
|
|
7
|
-
|
|
8
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
9
|
-
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
10
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
11
|
-
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
12
|
-
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
13
|
-
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
14
|
-
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
1
|
+
Copyright (c) 2024 Christophe Hurpeau <302891+christophehurpeau@users.noreply.github.com> (https://christophe.hurpeau.com)
|
|
2
|
+
All rights reserved.
|
package/README.md
CHANGED
|
@@ -1,86 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
<h3 align="center">
|
|
2
|
+
alouette
|
|
3
|
+
</h3>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
tamagui-based design system with configurable defaults
|
|
7
|
+
</p>
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[![Dependency ci Status][dependencyci-image]][dependencyci-url]
|
|
8
|
-
[![Dependency Status][daviddm-image]][daviddm-url]
|
|
9
|
-
[![Coverage percentage][coverage-image]][coverage-url]
|
|
9
|
+
<p align="center">
|
|
10
|
+
</p>
|
|
10
11
|
|
|
11
12
|
## Install
|
|
12
13
|
|
|
13
|
-
```
|
|
14
|
+
```bash
|
|
14
15
|
npm install --save alouette
|
|
15
16
|
```
|
|
16
17
|
|
|
18
|
+
## Usage
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
> tamagui.config.ts
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### For console
|
|
26
|
-
|
|
27
|
-
```js
|
|
28
|
-
import { parse as parseError } from 'alouette';
|
|
29
|
-
// es5: var parseError = require('alouette').parse;
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
//...
|
|
33
|
-
} catch (err) {
|
|
34
|
-
console.error(parseError(err).toString());
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Html rendering
|
|
39
|
-
|
|
40
|
-
```js
|
|
41
|
-
import HtmlStackRenderer from 'alouette/HtmlRenderer';
|
|
42
|
-
// es5: var HtmlStackRenderer = require('alouette/HtmlRenderer');
|
|
43
|
-
const htmlStackRenderer = new HtmlStackRenderer();
|
|
44
|
-
|
|
45
|
-
function (req, res) {
|
|
46
|
-
try {
|
|
47
|
-
//...
|
|
48
|
-
} catch (err) {
|
|
49
|
-
res.send(500, htmlStackRenderer.render(err));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
22
|
+
```ts
|
|
23
|
+
import {
|
|
24
|
+
createAlouetteTamagui,
|
|
25
|
+
defaultColorScales,
|
|
26
|
+
} from "alouette/createAlouetteTamagui";
|
|
52
27
|
|
|
28
|
+
export default createAlouetteTamagui({ colorScales: defaultColorScales });
|
|
53
29
|
```
|
|
54
|
-
|
|
55
|
-
### Open local files
|
|
56
|
-
|
|
57
|
-
You can use [this firefox extension](https://addons.mozilla.org/en-US/firefox/addon/locallink/) to open in a new tab.
|
|
58
|
-
|
|
59
|
-
To open in your editor, you can follow this below: (only works with linux)
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
sudo wget https://raw.github.com/christophehurpeau/ppa/master/openlocalfile/openlocalfile -o /usr/bin/openlocalfile
|
|
63
|
-
sudo wget https://raw.github.com/christophehurpeau/ppa/master/openlocalfile/openlocalfile.desktop -o /usr/share/applications/openlocalfile.desktop
|
|
64
|
-
sudo xdg-mime default openlocalfile.desktop x-scheme-handler/openlocalfile
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
And pass the `fileProtocol` option:
|
|
68
|
-
```js
|
|
69
|
-
const htmlStackRenderer = new HtmlStackRenderer({ fileProtocol: 'openlocalfile' });
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
You can modify /usr/bin/openlocalfile to change the editor.
|
|
73
|
-
|
|
74
|
-
[npm-image]: https://img.shields.io/npm/v/alouette.svg?style=flat-square
|
|
75
|
-
[npm-url]: https://npmjs.org/package/alouette
|
|
76
|
-
[daviddm-image]: https://david-dm.org/christophehurpeau/alouette.svg?style=flat-square
|
|
77
|
-
[daviddm-url]: https://david-dm.org/christophehurpeau/alouette
|
|
78
|
-
[dependencyci-image]: https://dependencyci.com/github/christophehurpeau/alouette/badge?style=flat-square
|
|
79
|
-
[dependencyci-url]: https://dependencyci.com/github/christophehurpeau/alouette
|
|
80
|
-
[circleci-status-image]: https://img.shields.io/circleci/project/christophehurpeau/alouette/master.svg?style=flat-square
|
|
81
|
-
[circleci-status-url]: https://circleci.com/gh/christophehurpeau/alouette
|
|
82
|
-
[travisci-status-image]: https://img.shields.io/travis/christophehurpeau/alouette/master.svg?style=flat-square
|
|
83
|
-
[travisci-status-url]: https://travis-ci.org/christophehurpeau/alouette
|
|
84
|
-
[coverage-image]: https://img.shields.io/codecov/c/github/christophehurpeau/alouette/master.svg?style=flat-square
|
|
85
|
-
[coverage-url]: https://codecov.io/gh/christophehurpeau/alouette
|
|
86
|
-
[docs-coverage-url]: https://christophehurpeau.github.io/alouette/coverage/lcov-report/
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { createFont, createTokens, createTamagui } from '@tamagui/core';
|
|
2
|
+
import { createAnimations } from '@tamagui/animations-react-native';
|
|
3
|
+
import { createMedia } from '@tamagui/react-native-media-driver';
|
|
4
|
+
|
|
5
|
+
const animations = createAnimations({
|
|
6
|
+
fast: {
|
|
7
|
+
type: "timing",
|
|
8
|
+
duration: 100,
|
|
9
|
+
damping: 20,
|
|
10
|
+
stiffness: 250
|
|
11
|
+
},
|
|
12
|
+
formElement: {
|
|
13
|
+
type: "timing",
|
|
14
|
+
duration: 600,
|
|
15
|
+
damping: 20,
|
|
16
|
+
stiffness: 250
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const defaultHeadingFontSizes = {
|
|
21
|
+
xl: 48,
|
|
22
|
+
lg: 40,
|
|
23
|
+
md: 32,
|
|
24
|
+
sm: 24,
|
|
25
|
+
xs: 18
|
|
26
|
+
};
|
|
27
|
+
const defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };
|
|
28
|
+
const roundWith1Precision = (value) => Math.round(value * 10) / 10;
|
|
29
|
+
const createAlouetteFonts = ({
|
|
30
|
+
headingFontFamily = "Inter",
|
|
31
|
+
headingFontSizes = defaultHeadingFontSizes,
|
|
32
|
+
bodyFontFamily = "Inter",
|
|
33
|
+
bodyFontSizes = defaultBodyFontSizes
|
|
34
|
+
} = {}) => ({
|
|
35
|
+
heading: createFont({
|
|
36
|
+
family: headingFontFamily,
|
|
37
|
+
weight: {
|
|
38
|
+
regular: "400",
|
|
39
|
+
bold: "700",
|
|
40
|
+
black: "900"
|
|
41
|
+
},
|
|
42
|
+
face: {
|
|
43
|
+
400: { normal: headingFontFamily + "Regular" },
|
|
44
|
+
700: { normal: headingFontFamily + "Bold" },
|
|
45
|
+
900: { normal: headingFontFamily + "Black" }
|
|
46
|
+
},
|
|
47
|
+
size: headingFontSizes,
|
|
48
|
+
lineHeight: {
|
|
49
|
+
xl: roundWith1Precision(1.1 * headingFontSizes.xl),
|
|
50
|
+
lg: roundWith1Precision(1.1 * headingFontSizes.lg),
|
|
51
|
+
md: roundWith1Precision(1.2 * headingFontSizes.md),
|
|
52
|
+
sm: roundWith1Precision(1.3 * headingFontSizes.sm),
|
|
53
|
+
xs: roundWith1Precision(1.3 * headingFontSizes.xs)
|
|
54
|
+
}
|
|
55
|
+
}),
|
|
56
|
+
body: createFont({
|
|
57
|
+
family: bodyFontFamily,
|
|
58
|
+
weight: {
|
|
59
|
+
regular: "400",
|
|
60
|
+
bold: "700",
|
|
61
|
+
black: "900"
|
|
62
|
+
},
|
|
63
|
+
face: {
|
|
64
|
+
400: { normal: bodyFontFamily + "Regular" },
|
|
65
|
+
700: { normal: bodyFontFamily + "Bold" },
|
|
66
|
+
900: { normal: bodyFontFamily + "Black" }
|
|
67
|
+
},
|
|
68
|
+
size: bodyFontSizes,
|
|
69
|
+
lineHeight: {
|
|
70
|
+
xl: roundWith1Precision(1.4 * bodyFontSizes.xl),
|
|
71
|
+
lg: roundWith1Precision(1.4 * bodyFontSizes.lg),
|
|
72
|
+
md: roundWith1Precision(1.4 * bodyFontSizes.md),
|
|
73
|
+
sm: roundWith1Precision(1.4 * bodyFontSizes.sm),
|
|
74
|
+
xs: roundWith1Precision(1.4 * bodyFontSizes.xs)
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const Breakpoints = {
|
|
80
|
+
/**
|
|
81
|
+
* min-width: 0
|
|
82
|
+
*/
|
|
83
|
+
BASE: 0,
|
|
84
|
+
/**
|
|
85
|
+
* min-width: 480px
|
|
86
|
+
*/
|
|
87
|
+
SMALL: 480,
|
|
88
|
+
/**
|
|
89
|
+
* min-width: 768px
|
|
90
|
+
*/
|
|
91
|
+
MEDIUM: 768,
|
|
92
|
+
/**
|
|
93
|
+
* min-width: 1024px
|
|
94
|
+
*/
|
|
95
|
+
LARGE: 1024,
|
|
96
|
+
/**
|
|
97
|
+
* min-width: 1280px
|
|
98
|
+
*/
|
|
99
|
+
WIDE: 1280
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const media = createMedia({
|
|
103
|
+
small: { minWidth: Breakpoints.SMALL },
|
|
104
|
+
medium: { minWidth: Breakpoints.MEDIUM },
|
|
105
|
+
large: { minWidth: Breakpoints.LARGE },
|
|
106
|
+
wide: { minWidth: Breakpoints.WIDE }
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const createTheme = (theme) => {
|
|
110
|
+
return theme;
|
|
111
|
+
};
|
|
112
|
+
const createColorTheme = (tokens, colorScaleName, textColor = tokens.color.black, contrastTextColor = tokens.color.white) => {
|
|
113
|
+
const getColor = (scaleNumber) => tokens.color[colorScaleName + `.${scaleNumber}`];
|
|
114
|
+
return {
|
|
115
|
+
mainColor: getColor(6),
|
|
116
|
+
mainTextColor: getColor(9),
|
|
117
|
+
contrastTextColor,
|
|
118
|
+
borderColor: getColor(8),
|
|
119
|
+
"interactive.contained.backgroundColor": getColor(5),
|
|
120
|
+
"interactive.borderColor": getColor(8),
|
|
121
|
+
"interactive.contained.backgroundColor:hover": getColor(4),
|
|
122
|
+
"interactive.outlined.backgroundColor:hover": getColor(1),
|
|
123
|
+
"interactive.borderColor:hover": getColor(7),
|
|
124
|
+
"interactive.contained.backgroundColor:focus": getColor(4),
|
|
125
|
+
"interactive.outlined.backgroundColor:focus": getColor(1),
|
|
126
|
+
"interactive.borderColor:focus": getColor(7),
|
|
127
|
+
"interactive.contained.backgroundColor:press": getColor(2),
|
|
128
|
+
"interactive.outlined.backgroundColor:press": getColor(3),
|
|
129
|
+
"interactive.borderColor:press": getColor(7),
|
|
130
|
+
"interactive.contained.backgroundColor:disabled": tokens.color.disabled,
|
|
131
|
+
"interactive.borderColor:disabled": tokens.color.disabled,
|
|
132
|
+
"interactive.textColor:disabled": tokens.color.contrastDisabled,
|
|
133
|
+
"interactive.forms.textColor": textColor,
|
|
134
|
+
"interactive.forms.backgroundColor": void 0,
|
|
135
|
+
"interactive.forms.backgroundColor:hover": void 0,
|
|
136
|
+
"interactive.forms.backgroundColor:focus": getColor(1),
|
|
137
|
+
"interactive.forms.backgroundColor:press": getColor(3),
|
|
138
|
+
"interactive.forms.borderColor": getColor(10),
|
|
139
|
+
"interactive.forms.borderColor:hover": getColor(7),
|
|
140
|
+
"interactive.forms.borderColor:focus": getColor(7),
|
|
141
|
+
"interactive.forms.borderColor:press": getColor(7),
|
|
142
|
+
"interactive.forms.borderColor:disabled": tokens.color.disabled
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
const createAlouetteThemes = (tokens) => ({
|
|
146
|
+
light: createTheme({
|
|
147
|
+
backgroundColor: tokens.color.white,
|
|
148
|
+
textColor: tokens.color.black
|
|
149
|
+
}),
|
|
150
|
+
light_info: createColorTheme(tokens, "info"),
|
|
151
|
+
light_success: createColorTheme(tokens, "success"),
|
|
152
|
+
light_warning: createColorTheme(tokens, "warning"),
|
|
153
|
+
light_danger: createColorTheme(tokens, "danger"),
|
|
154
|
+
light_primary: createColorTheme(tokens, "primary"),
|
|
155
|
+
dark: createTheme({
|
|
156
|
+
backgroundColor: tokens.color.black,
|
|
157
|
+
textColor: tokens.color.white
|
|
158
|
+
}),
|
|
159
|
+
dark_info: createColorTheme(
|
|
160
|
+
tokens,
|
|
161
|
+
"info",
|
|
162
|
+
tokens.color.black,
|
|
163
|
+
tokens.color.white
|
|
164
|
+
),
|
|
165
|
+
dark_success: createColorTheme(
|
|
166
|
+
tokens,
|
|
167
|
+
"success",
|
|
168
|
+
tokens.color.black,
|
|
169
|
+
tokens.color.white
|
|
170
|
+
),
|
|
171
|
+
dark_warning: createColorTheme(
|
|
172
|
+
tokens,
|
|
173
|
+
"warning",
|
|
174
|
+
tokens.color.black,
|
|
175
|
+
tokens.color.white
|
|
176
|
+
),
|
|
177
|
+
dark_danger: createColorTheme(
|
|
178
|
+
tokens,
|
|
179
|
+
"danger",
|
|
180
|
+
tokens.color.black,
|
|
181
|
+
tokens.color.white
|
|
182
|
+
),
|
|
183
|
+
dark_primary: createColorTheme(
|
|
184
|
+
tokens,
|
|
185
|
+
"primary",
|
|
186
|
+
tokens.color.black,
|
|
187
|
+
tokens.color.white
|
|
188
|
+
)
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const createAlouetteSizes = (spacing, negative) => {
|
|
192
|
+
const MAX_SIZE = 64;
|
|
193
|
+
const sizes = {};
|
|
194
|
+
for (let size = 0; size <= MAX_SIZE; size++) {
|
|
195
|
+
sizes[negative ? `-${size}` : `${size}`] = size * spacing;
|
|
196
|
+
}
|
|
197
|
+
return sizes;
|
|
198
|
+
};
|
|
199
|
+
const transformColorScalesToTokens = (colorScales) => {
|
|
200
|
+
return Object.fromEntries(
|
|
201
|
+
Object.entries(colorScales).flatMap(([colorName, colorScale]) => {
|
|
202
|
+
return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {
|
|
203
|
+
return [`${colorName}.${scaleNumber}`, colorValue];
|
|
204
|
+
});
|
|
205
|
+
})
|
|
206
|
+
);
|
|
207
|
+
};
|
|
208
|
+
const createAlouetteTokens = (colorScales, { spacing = 4 } = {}) => {
|
|
209
|
+
const sizes = createAlouetteSizes(spacing, false);
|
|
210
|
+
const negativeSizes = createAlouetteSizes(-spacing, true);
|
|
211
|
+
return createTokens({
|
|
212
|
+
color: {
|
|
213
|
+
black: "#000000",
|
|
214
|
+
white: "#ffffff",
|
|
215
|
+
disabled: colorScales.grayscale[3],
|
|
216
|
+
contrastDisabled: colorScales.grayscale[7],
|
|
217
|
+
...transformColorScalesToTokens(colorScales)
|
|
218
|
+
},
|
|
219
|
+
radius: {
|
|
220
|
+
...sizes,
|
|
221
|
+
xs: spacing * 2,
|
|
222
|
+
sm: spacing * 4,
|
|
223
|
+
md: spacing * 8
|
|
224
|
+
},
|
|
225
|
+
space: {
|
|
226
|
+
...sizes,
|
|
227
|
+
...negativeSizes,
|
|
228
|
+
xs: spacing * 2,
|
|
229
|
+
sm: spacing * 4,
|
|
230
|
+
md: spacing * 8
|
|
231
|
+
},
|
|
232
|
+
size: { ...sizes },
|
|
233
|
+
zIndex: {}
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
const createColorScale = (colorScale) => colorScale;
|
|
238
|
+
const defaultColorScales = {
|
|
239
|
+
grayscale: createColorScale({
|
|
240
|
+
1: "#faf9f8",
|
|
241
|
+
2: "#f4f3ef",
|
|
242
|
+
3: "#ebe9e5",
|
|
243
|
+
4: "#dedad2",
|
|
244
|
+
5: "#d1cdc5",
|
|
245
|
+
6: "#bab8ae",
|
|
246
|
+
7: "#aeaba3",
|
|
247
|
+
8: "#9c9a92",
|
|
248
|
+
9: "#8e8c83",
|
|
249
|
+
10: "#74726a"
|
|
250
|
+
}),
|
|
251
|
+
success: createColorScale({
|
|
252
|
+
1: "#f0f9f3",
|
|
253
|
+
2: "#d4f0d4",
|
|
254
|
+
3: "#a8e6a8",
|
|
255
|
+
4: "#7edc7e",
|
|
256
|
+
5: "#54d254",
|
|
257
|
+
6: "#2ac82a",
|
|
258
|
+
7: "#00be00",
|
|
259
|
+
8: "#00b400",
|
|
260
|
+
9: "#00aa00",
|
|
261
|
+
10: "#009200"
|
|
262
|
+
}),
|
|
263
|
+
info: createColorScale({
|
|
264
|
+
1: "#f0f9ff",
|
|
265
|
+
2: "#d4f0ff",
|
|
266
|
+
3: "#a8e6ff",
|
|
267
|
+
4: "#7edcff",
|
|
268
|
+
5: "#54d2ff",
|
|
269
|
+
6: "#2ac8ff",
|
|
270
|
+
7: "#00beff",
|
|
271
|
+
8: "#00b4ff",
|
|
272
|
+
9: "#00aaff",
|
|
273
|
+
10: "#0092ff"
|
|
274
|
+
}),
|
|
275
|
+
warning: createColorScale({
|
|
276
|
+
1: "#fff9f0",
|
|
277
|
+
2: "#fff0d4",
|
|
278
|
+
3: "#ffe6a8",
|
|
279
|
+
4: "#ffdc7e",
|
|
280
|
+
5: "#ffd254",
|
|
281
|
+
6: "#ffc82a",
|
|
282
|
+
7: "#ffbe00",
|
|
283
|
+
8: "#ffb400",
|
|
284
|
+
9: "#ffaa00",
|
|
285
|
+
10: "#ff9200"
|
|
286
|
+
}),
|
|
287
|
+
danger: createColorScale({
|
|
288
|
+
1: "#fff0f0",
|
|
289
|
+
2: "#ffd4d4",
|
|
290
|
+
3: "#ffaaaa",
|
|
291
|
+
4: "#ff7e7e",
|
|
292
|
+
5: "#ff5454",
|
|
293
|
+
6: "#ff2a2a",
|
|
294
|
+
7: "#ff0000",
|
|
295
|
+
8: "#f40000",
|
|
296
|
+
9: "#ea0000",
|
|
297
|
+
10: "#d20000"
|
|
298
|
+
}),
|
|
299
|
+
primary: createColorScale({
|
|
300
|
+
1: "#e1f4f6",
|
|
301
|
+
2: "#b4e2e9",
|
|
302
|
+
3: "#86cfdc",
|
|
303
|
+
4: "#60bcd0",
|
|
304
|
+
5: "#46aeca",
|
|
305
|
+
6: "#31a1c4",
|
|
306
|
+
7: "#2994b7",
|
|
307
|
+
8: "#1e82a6",
|
|
308
|
+
9: "#1c7193",
|
|
309
|
+
10: "#125272"
|
|
310
|
+
})
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
const createAlouetteTamagui = (options) => {
|
|
314
|
+
const tokens = createAlouetteTokens(options.colorScales, options.tokens);
|
|
315
|
+
return createTamagui({
|
|
316
|
+
fonts: createAlouetteFonts(options.fonts),
|
|
317
|
+
tokens,
|
|
318
|
+
themes: createAlouetteThemes(tokens),
|
|
319
|
+
media,
|
|
320
|
+
animations,
|
|
321
|
+
settings: {
|
|
322
|
+
allowedStyleValues: "strict",
|
|
323
|
+
autocompleteSpecificTokens: true
|
|
324
|
+
},
|
|
325
|
+
components: ["alouette"]
|
|
326
|
+
});
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
export { createAlouetteTamagui, createColorScale, defaultColorScales };
|
|
330
|
+
//# sourceMappingURL=createAlouetteTamagui-browser.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAlouetteTamagui-browser.es.js","sources":["../src/config/animations.ts","../src/config/createAlouetteFonts.ts","../src/config/Breakpoints.ts","../src/config/media.ts","../src/config/themes.ts","../src/config/createAlouetteTokens.ts","../src/config/colorScales.ts","../src/createAlouetteTamagui.ts"],"sourcesContent":["import { createAnimations } from \"@tamagui/animations-react-native\";\n\nexport const animations = createAnimations({\n fast: {\n type: \"timing\",\n duration: 100,\n damping: 20,\n stiffness: 250,\n },\n formElement: {\n type: \"timing\",\n duration: 600,\n damping: 20,\n stiffness: 250,\n },\n});\n","import { createFont } from \"@tamagui/core\";\n\nconst defaultHeadingFontSizes = {\n xl: 48,\n lg: 40,\n md: 32,\n sm: 24,\n xs: 18,\n};\nconst defaultBodyFontSizes = { xl: 24, lg: 18, md: 16, sm: 14, xs: 12 };\n\nconst roundWith1Precision = (value: number): number =>\n Math.round(value * 10) / 10;\n\nexport interface AlouetteFontsOptions {\n headingFontFamily?: string;\n headingFontSizes?: typeof defaultHeadingFontSizes;\n bodyFontFamily?: string;\n bodyFontSizes?: typeof defaultBodyFontSizes;\n}\n\nexport const createAlouetteFonts = ({\n headingFontFamily = \"Inter\",\n headingFontSizes = defaultHeadingFontSizes,\n bodyFontFamily = \"Inter\",\n bodyFontSizes = defaultBodyFontSizes,\n}: AlouetteFontsOptions = {}) => ({\n heading: createFont({\n family: headingFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: headingFontFamily + \"Regular\" },\n 700: { normal: headingFontFamily + \"Bold\" },\n 900: { normal: headingFontFamily + \"Black\" },\n },\n size: headingFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.1 * headingFontSizes.xl),\n lg: roundWith1Precision(1.1 * headingFontSizes.lg),\n md: roundWith1Precision(1.2 * headingFontSizes.md),\n sm: roundWith1Precision(1.3 * headingFontSizes.sm),\n xs: roundWith1Precision(1.3 * headingFontSizes.xs),\n },\n }),\n body: createFont({\n family: bodyFontFamily,\n weight: {\n regular: \"400\",\n bold: \"700\",\n black: \"900\",\n },\n face: {\n 400: { normal: bodyFontFamily + \"Regular\" },\n 700: { normal: bodyFontFamily + \"Bold\" },\n 900: { normal: bodyFontFamily + \"Black\" },\n },\n size: bodyFontSizes,\n lineHeight: {\n xl: roundWith1Precision(1.4 * bodyFontSizes.xl),\n lg: roundWith1Precision(1.4 * bodyFontSizes.lg),\n md: roundWith1Precision(1.4 * bodyFontSizes.md),\n sm: roundWith1Precision(1.4 * bodyFontSizes.sm),\n xs: roundWith1Precision(1.4 * bodyFontSizes.xs),\n },\n }),\n});\n","export const Breakpoints = {\n /**\n * min-width: 0\n */\n BASE: 0,\n /**\n * min-width: 480px\n */\n SMALL: 480,\n /**\n * min-width: 768px\n */\n MEDIUM: 768,\n /**\n * min-width: 1024px\n */\n LARGE: 1024,\n /**\n * min-width: 1280px\n */\n WIDE: 1280,\n} as const;\n\nexport type Breakpoint = (typeof Breakpoints)[keyof typeof Breakpoints];\nexport type BreakpointNames = 'base' | 'large' | 'medium' | 'small' | 'wide';\n\nexport enum BreakpointNameEnum {\n BASE = 'base',\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n WIDE = 'wide',\n}\n","import { createMedia } from '@tamagui/react-native-media-driver';\nimport { Breakpoints } from './Breakpoints';\n\nexport const media = createMedia({\n small: { minWidth: Breakpoints.SMALL },\n medium: { minWidth: Breakpoints.MEDIUM },\n large: { minWidth: Breakpoints.LARGE },\n wide: { minWidth: Breakpoints.WIDE },\n} as const);\n","import type { Variable } from \"@tamagui/core\";\nimport { createAlouetteTokens } from \"./createAlouetteTokens\";\nimport { AlouetteColorScaleNames } from \"./colorScales\";\n\ninterface MinimalTheme {\n backgroundColor: Variable;\n textColor: Variable;\n}\n\nconst createTheme = <T extends MinimalTheme>(theme: T): T => {\n return theme;\n};\n\nconst createColorTheme = (\n tokens: ReturnType<typeof createAlouetteTokens>,\n colorScaleName: AlouetteColorScaleNames,\n textColor = tokens.color.black,\n contrastTextColor = tokens.color.white,\n) => {\n const getColor = (scaleNumber: number) =>\n tokens.color[\n (colorScaleName + `.${scaleNumber}`) as keyof typeof tokens.color\n ];\n return {\n mainColor: getColor(6),\n mainTextColor: getColor(9),\n contrastTextColor,\n borderColor: getColor(8),\n\n \"interactive.contained.backgroundColor\": getColor(5),\n \"interactive.borderColor\": getColor(8),\n\n \"interactive.contained.backgroundColor:hover\": getColor(4),\n \"interactive.outlined.backgroundColor:hover\": getColor(1),\n \"interactive.borderColor:hover\": getColor(7),\n\n \"interactive.contained.backgroundColor:focus\": getColor(4),\n \"interactive.outlined.backgroundColor:focus\": getColor(1),\n \"interactive.borderColor:focus\": getColor(7),\n\n \"interactive.contained.backgroundColor:press\": getColor(2),\n \"interactive.outlined.backgroundColor:press\": getColor(3),\n \"interactive.borderColor:press\": getColor(7),\n\n \"interactive.contained.backgroundColor:disabled\": tokens.color.disabled,\n \"interactive.borderColor:disabled\": tokens.color.disabled,\n \"interactive.textColor:disabled\": tokens.color.contrastDisabled,\n\n \"interactive.forms.textColor\": textColor,\n \"interactive.forms.backgroundColor\": undefined,\n \"interactive.forms.backgroundColor:hover\": undefined,\n \"interactive.forms.backgroundColor:focus\": getColor(1),\n \"interactive.forms.backgroundColor:press\": getColor(3),\n \"interactive.forms.borderColor\": getColor(10),\n \"interactive.forms.borderColor:hover\": getColor(7),\n \"interactive.forms.borderColor:focus\": getColor(7),\n \"interactive.forms.borderColor:press\": getColor(7),\n \"interactive.forms.borderColor:disabled\": tokens.color.disabled,\n };\n};\n\nexport const createAlouetteThemes = (\n tokens: ReturnType<typeof createAlouetteTokens>,\n) =>\n ({\n light: createTheme({\n backgroundColor: tokens.color.white,\n textColor: tokens.color.black,\n }),\n light_info: createColorTheme(tokens, \"info\"),\n light_success: createColorTheme(tokens, \"success\"),\n light_warning: createColorTheme(tokens, \"warning\"),\n light_danger: createColorTheme(tokens, \"danger\"),\n light_primary: createColorTheme(tokens, \"primary\"),\n\n dark: createTheme({\n backgroundColor: tokens.color.black,\n textColor: tokens.color.white,\n }),\n\n dark_info: createColorTheme(\n tokens,\n \"info\",\n tokens.color.black,\n tokens.color.white,\n ),\n dark_success: createColorTheme(\n tokens,\n \"success\",\n tokens.color.black,\n tokens.color.white,\n ),\n dark_warning: createColorTheme(\n tokens,\n \"warning\",\n tokens.color.black,\n tokens.color.white,\n ),\n dark_danger: createColorTheme(\n tokens,\n \"danger\",\n tokens.color.black,\n tokens.color.white,\n ),\n dark_primary: createColorTheme(\n tokens,\n \"primary\",\n tokens.color.black,\n tokens.color.white,\n ),\n }) as const;\n","import { createTokens } from \"@tamagui/core\";\nimport type { IntRange } from \"type-fest\";\nimport type {\n AlouetteColorScaleNames,\n AlouetteColorScaleNumber,\n AlouetteColorScales,\n} from \"./colorScales\";\n\ntype AlouetteSize = IntRange<0, 64>;\ntype NegativeAlouetteSize = `-${AlouetteSize}`;\ntype AlouetteSizeRecord = Record<AlouetteSize, number>;\ntype NegativeAlouetteSizeRecord = Record<NegativeAlouetteSize, number>;\n\nconst createAlouetteSizes = <N extends boolean>(\n spacing: number,\n negative: N,\n): N extends true ? AlouetteSizeRecord : NegativeAlouetteSizeRecord => {\n const MAX_SIZE = 64;\n const sizes = {} as Partial<\n N extends true ? AlouetteSizeRecord : NegativeAlouetteSizeRecord\n >;\n for (let size = 0; size <= MAX_SIZE; size++) {\n (sizes as any)[negative ? `-${size}` : `${size}`] = size * spacing;\n }\n return sizes as N extends true\n ? AlouetteSizeRecord\n : NegativeAlouetteSizeRecord;\n};\n\ntype ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nconst transformColorScalesToTokens = (\n colorScales: AlouetteColorScales,\n): ColorScaleTokens => {\n return Object.fromEntries(\n Object.entries(colorScales).flatMap(([colorName, colorScale]) => {\n return Object.entries(colorScale).map(([scaleNumber, colorValue]) => {\n return [`${colorName}.${scaleNumber}`, colorValue];\n });\n }),\n ) as ColorScaleTokens;\n};\n\nexport interface AlouetteTokensOptions {\n spacing?: number;\n}\n\nexport const createAlouetteTokens = (\n colorScales: AlouetteColorScales,\n { spacing = 4 }: AlouetteTokensOptions = {},\n) => {\n const sizes = createAlouetteSizes(spacing, false);\n const negativeSizes = createAlouetteSizes(-spacing, true);\n\n return createTokens({\n color: {\n black: \"#000000\",\n white: \"#ffffff\",\n disabled: colorScales.grayscale[3],\n contrastDisabled: colorScales.grayscale[7],\n ...transformColorScalesToTokens(colorScales),\n },\n radius: {\n ...sizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n space: {\n ...sizes,\n ...negativeSizes,\n xs: spacing * 2,\n sm: spacing * 4,\n md: spacing * 8,\n },\n size: { ...sizes },\n zIndex: {},\n } as const);\n};\n","import type { IntRange } from \"type-fest\";\n\n// scale inspired by https://www.radix-ui.com/colors/docs/palette-composition/understanding-the-scale\n// 1: interactive outlined background hover/focus color\n// 2: interactive contained background press color\n// 3: interactive outlined background press color\n// 4: interactive contained background hover/focus color\n// 5: interactive contained background color\n// 6: main color\n// 7: border hover/focus color\n// 8: border color\n// 9: text color\n// 10: form border color (default)\n\nexport type AlouetteColorScaleNumber = IntRange<1, 10>;\n\nexport type AlouetteColorScale = { [K in AlouetteColorScaleNumber]: string };\n\nexport const createColorScale = <const T extends AlouetteColorScale>(\n colorScale: T,\n): T => colorScale;\n\nexport type AlouetteColorScaleNames =\n | \"grayscale\"\n | \"success\"\n | \"info\"\n | \"warning\"\n | \"danger\"\n | \"primary\";\n\nexport type ColorScaleTokens = {\n [K in AlouetteColorScaleNames as `${K}.${AlouetteColorScaleNumber}`]: string; //(typeof colorScales)[K][AlouetteColorScaleNumber];\n};\n\nexport type AlouetteColorScales = Record<\n AlouetteColorScaleNames,\n AlouetteColorScale\n>;\n\n// Tool: https://m2.material.io/inline-tools/color/\n\nexport const defaultColorScales: AlouetteColorScales = {\n grayscale: createColorScale({\n 1: \"#faf9f8\",\n 2: \"#f4f3ef\",\n 3: \"#ebe9e5\",\n 4: \"#dedad2\",\n 5: \"#d1cdc5\",\n 6: \"#bab8ae\",\n 7: \"#aeaba3\",\n 8: \"#9c9a92\",\n 9: \"#8e8c83\",\n 10: \"#74726a\",\n }),\n success: createColorScale({\n 1: \"#f0f9f3\",\n 2: \"#d4f0d4\",\n 3: \"#a8e6a8\",\n 4: \"#7edc7e\",\n 5: \"#54d254\",\n 6: \"#2ac82a\",\n 7: \"#00be00\",\n 8: \"#00b400\",\n 9: \"#00aa00\",\n 10: \"#009200\",\n }),\n info: createColorScale({\n 1: \"#f0f9ff\",\n 2: \"#d4f0ff\",\n 3: \"#a8e6ff\",\n 4: \"#7edcff\",\n 5: \"#54d2ff\",\n 6: \"#2ac8ff\",\n 7: \"#00beff\",\n 8: \"#00b4ff\",\n 9: \"#00aaff\",\n 10: \"#0092ff\",\n }),\n warning: createColorScale({\n 1: \"#fff9f0\",\n 2: \"#fff0d4\",\n 3: \"#ffe6a8\",\n 4: \"#ffdc7e\",\n 5: \"#ffd254\",\n 6: \"#ffc82a\",\n 7: \"#ffbe00\",\n 8: \"#ffb400\",\n 9: \"#ffaa00\",\n 10: \"#ff9200\",\n }),\n danger: createColorScale({\n 1: \"#fff0f0\",\n 2: \"#ffd4d4\",\n 3: \"#ffaaaa\",\n 4: \"#ff7e7e\",\n 5: \"#ff5454\",\n 6: \"#ff2a2a\",\n 7: \"#ff0000\",\n 8: \"#f40000\",\n 9: \"#ea0000\",\n 10: \"#d20000\",\n }),\n primary: createColorScale({\n 1: \"#e1f4f6\",\n 2: \"#b4e2e9\",\n 3: \"#86cfdc\",\n 4: \"#60bcd0\",\n 5: \"#46aeca\",\n 6: \"#31a1c4\",\n 7: \"#2994b7\",\n 8: \"#1e82a6\",\n 9: \"#1c7193\",\n 10: \"#125272\",\n }),\n} as const;\n","import { createTamagui } from \"@tamagui/core\";\nimport { animations } from \"./config/animations\";\nimport {\n createAlouetteFonts,\n AlouetteFontsOptions,\n} from \"./config/createAlouetteFonts\";\nimport { media } from \"./config/media\";\nimport { createAlouetteThemes } from \"./config/themes\";\nimport {\n createAlouetteTokens,\n AlouetteTokensOptions,\n} from \"./config/createAlouetteTokens\";\nimport { AlouetteColorScales } from \"./config/colorScales\";\n\ninterface AlouetteTamaguiOptions {\n colorScales: AlouetteColorScales;\n fonts?: AlouetteFontsOptions;\n tokens?: AlouetteTokensOptions;\n}\n\nexport { defaultColorScales, createColorScale } from \"./config/colorScales\";\n\nexport const createAlouetteTamagui = (options: AlouetteTamaguiOptions) => {\n const tokens = createAlouetteTokens(options.colorScales, options.tokens);\n return createTamagui({\n fonts: createAlouetteFonts(options.fonts),\n tokens,\n themes: createAlouetteThemes(tokens),\n media,\n animations,\n settings: {\n allowedStyleValues: \"strict\",\n autocompleteSpecificTokens: true,\n },\n components: [\"alouette\"],\n } as const);\n};\n"],"names":[],"mappings":"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"}
|