@hzblj/kara-components 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/atoms/badge/badge.android.js +8 -2
- package/lib/module/atoms/badge/badge.android.js.map +1 -1
- package/lib/module/atoms/button/button-tokens.js +39 -0
- package/lib/module/atoms/button/button-tokens.js.map +1 -1
- package/lib/module/atoms/button/button.android.js +40 -12
- package/lib/module/atoms/button/button.android.js.map +1 -1
- package/lib/module/atoms/button/button.ios.js +5 -2
- package/lib/module/atoms/button/button.ios.js.map +1 -1
- package/lib/module/atoms/checkbox/checkbox.android.js +17 -2
- package/lib/module/atoms/checkbox/checkbox.android.js.map +1 -1
- package/lib/module/atoms/date-picker/date-picker.android.js +72 -0
- package/lib/module/atoms/date-picker/date-picker.android.js.map +1 -0
- package/lib/module/atoms/date-picker/{date-picker.js → date-picker.ios.js} +4 -7
- package/lib/module/atoms/date-picker/date-picker.ios.js.map +1 -0
- package/lib/module/atoms/date-picker/index.js +1 -1
- package/lib/module/atoms/date-picker/index.js.map +1 -1
- package/lib/module/atoms/fab/fab.android.js +5 -3
- package/lib/module/atoms/fab/fab.android.js.map +1 -1
- package/lib/module/atoms/glass-view/glass-fallback.js +5 -2
- package/lib/module/atoms/glass-view/glass-fallback.js.map +1 -1
- package/lib/module/atoms/icon/icon.android.js +10 -12
- package/lib/module/atoms/icon/icon.android.js.map +1 -1
- package/lib/module/atoms/icon/icon.ios.js +15 -3
- package/lib/module/atoms/icon/icon.ios.js.map +1 -1
- package/lib/module/atoms/icon/index.js +0 -1
- package/lib/module/atoms/icon/index.js.map +1 -1
- package/lib/module/atoms/index.js +1 -1
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/atoms/list/list.android.js +8 -2
- package/lib/module/atoms/list/list.android.js.map +1 -1
- package/lib/module/atoms/picker/index.js +1 -1
- package/lib/module/atoms/picker/index.js.map +1 -1
- package/lib/module/atoms/picker/picker.android.js +87 -0
- package/lib/module/atoms/picker/picker.android.js.map +1 -0
- package/lib/module/atoms/picker/{picker.js → picker.ios.js} +1 -1
- package/lib/module/atoms/picker/picker.ios.js.map +1 -0
- package/lib/module/atoms/rn-icon/index.js +5 -0
- package/lib/module/atoms/rn-icon/index.js.map +1 -0
- package/lib/module/atoms/rn-icon/rn-icon.android.js +29 -0
- package/lib/module/atoms/rn-icon/rn-icon.android.js.map +1 -0
- package/lib/module/atoms/rn-icon/rn-icon.ios.js +29 -0
- package/lib/module/atoms/rn-icon/rn-icon.ios.js.map +1 -0
- package/lib/module/atoms/rn-icon/rn-icon.types.js +4 -0
- package/lib/module/atoms/rn-icon/rn-icon.types.js.map +1 -0
- package/lib/module/atoms/surface/surface.android.js +33 -5
- package/lib/module/atoms/surface/surface.android.js.map +1 -1
- package/lib/module/atoms/switch/switch.android.js +14 -1
- package/lib/module/atoms/switch/switch.android.js.map +1 -1
- package/lib/module/glyph/glyph-button.android.js +25 -0
- package/lib/module/glyph/glyph-button.android.js.map +1 -0
- package/lib/module/glyph/glyph-button.ios.js +33 -0
- package/lib/module/glyph/glyph-button.ios.js.map +1 -0
- package/lib/module/glyph/glyph-button.types.js +4 -0
- package/lib/module/glyph/glyph-button.types.js.map +1 -0
- package/lib/module/glyph/glyph.android.js +20 -0
- package/lib/module/glyph/glyph.android.js.map +1 -0
- package/lib/module/glyph/glyph.ios.js +24 -0
- package/lib/module/glyph/glyph.ios.js.map +1 -0
- package/lib/module/glyph/glyph.types.js +4 -0
- package/lib/module/glyph/glyph.types.js.map +1 -0
- package/lib/module/glyph/index.js +8 -0
- package/lib/module/glyph/index.js.map +1 -0
- package/lib/module/glyph/rn-glyph.android.js +25 -0
- package/lib/module/glyph/rn-glyph.android.js.map +1 -0
- package/lib/module/glyph/rn-glyph.ios.js +26 -0
- package/lib/module/glyph/rn-glyph.ios.js.map +1 -0
- package/lib/module/molecules/collapsible/collapsible.android.js +2 -2
- package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
- package/lib/module/molecules/labeled-content/labeled-content.js +2 -1
- package/lib/module/molecules/labeled-content/labeled-content.js.map +1 -1
- package/lib/module/molecules/list-item/list-item.js +2 -1
- package/lib/module/molecules/list-item/list-item.js.map +1 -1
- package/lib/module/molecules/navigation-bar/navigation-bar.android.js +8 -4
- package/lib/module/molecules/navigation-bar/navigation-bar.android.js.map +1 -1
- package/lib/module/molecules/radio-group/radio-group.android.js +5 -0
- package/lib/module/molecules/radio-group/radio-group.android.js.map +1 -1
- package/lib/module/molecules/radio-group/radio-group.ios.js +2 -2
- package/lib/module/molecules/radio-group/radio-group.ios.js.map +1 -1
- package/lib/module/molecules/search-bar/search-bar.js +10 -23
- package/lib/module/molecules/search-bar/search-bar.js.map +1 -1
- package/lib/module/molecules/stepper/stepper.android.js +7 -5
- package/lib/module/molecules/stepper/stepper.android.js.map +1 -1
- package/lib/module/organisms/alert/alert.android.js +42 -13
- package/lib/module/organisms/alert/alert.android.js.map +1 -1
- package/lib/module/organisms/context-menu/context-menu.android.js +82 -31
- package/lib/module/organisms/context-menu/context-menu.android.js.map +1 -1
- package/lib/module/organisms/context-menu/context-menu.ios.js +37 -16
- package/lib/module/organisms/context-menu/context-menu.ios.js.map +1 -1
- package/lib/module/organisms/fab-menu/fab-menu.android.js +6 -2
- package/lib/module/organisms/fab-menu/fab-menu.android.js.map +1 -1
- package/lib/module/organisms/fab-menu/fab-menu.ios.js +15 -6
- package/lib/module/organisms/fab-menu/fab-menu.ios.js.map +1 -1
- package/lib/module/organisms/form/form.android.js +1 -0
- package/lib/module/organisms/form/form.android.js.map +1 -1
- package/lib/module/organisms/index.js +0 -1
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/organisms/menu/menu.android.js +51 -33
- package/lib/module/organisms/menu/menu.android.js.map +1 -1
- package/lib/typescript/atoms/button/button-tokens.d.ts +6 -1
- package/lib/typescript/atoms/date-picker/date-picker.d.ts +1 -2
- package/lib/typescript/atoms/date-picker/date-picker.ios.d.ts +3 -0
- package/lib/typescript/atoms/glass-view/glass-fallback.d.ts +4 -1
- package/lib/typescript/atoms/glass-view/glass-view.types.d.ts +1 -1
- package/lib/typescript/atoms/icon/icon.ios.d.ts +4 -0
- package/lib/typescript/atoms/icon/icon.types.d.ts +18 -1
- package/lib/typescript/atoms/icon/index.d.ts +0 -1
- package/lib/typescript/atoms/index.d.ts +1 -1
- package/lib/typescript/atoms/list/list.types.d.ts +9 -0
- package/lib/typescript/atoms/picker/picker.d.ts +1 -2
- package/lib/typescript/atoms/picker/picker.ios.d.ts +2 -0
- package/lib/typescript/atoms/rn-icon/index.d.ts +2 -0
- package/lib/typescript/atoms/rn-icon/rn-icon.d.ts +1 -0
- package/lib/typescript/atoms/rn-icon/rn-icon.ios.d.ts +3 -0
- package/lib/typescript/atoms/rn-icon/rn-icon.types.d.ts +5 -0
- package/lib/typescript/glyph/glyph-button.d.ts +1 -0
- package/lib/typescript/glyph/glyph-button.ios.d.ts +2 -0
- package/lib/typescript/glyph/glyph-button.types.d.ts +10 -0
- package/lib/typescript/glyph/glyph.d.ts +1 -0
- package/lib/typescript/glyph/glyph.ios.d.ts +3 -0
- package/lib/typescript/glyph/glyph.types.d.ts +13 -0
- package/lib/typescript/glyph/index.d.ts +5 -0
- package/lib/typescript/glyph/rn-glyph.d.ts +1 -0
- package/lib/typescript/glyph/rn-glyph.ios.d.ts +3 -0
- package/lib/typescript/molecules/scroll-edge-container/scroll-edge-container.types.d.ts +3 -0
- package/lib/typescript/organisms/context-menu/context-menu.types.d.ts +28 -2
- package/lib/typescript/organisms/fab-menu/fab-menu.types.d.ts +1 -1
- package/lib/typescript/organisms/form/form.types.d.ts +5 -0
- package/lib/typescript/organisms/index.d.ts +0 -1
- package/package.json +5 -7
- package/src/atoms/badge/badge.android.tsx +5 -2
- package/src/atoms/button/button-tokens.ts +49 -0
- package/src/atoms/button/button.android.tsx +46 -12
- package/src/atoms/button/button.ios.tsx +5 -2
- package/src/atoms/checkbox/checkbox.android.tsx +21 -4
- package/src/atoms/date-picker/date-picker.android.tsx +74 -0
- package/src/atoms/date-picker/date-picker.ios.tsx +27 -0
- package/src/atoms/fab/fab.android.tsx +4 -1
- package/src/atoms/glass-view/glass-fallback.tsx +5 -2
- package/src/atoms/glass-view/glass-view.types.ts +1 -1
- package/src/atoms/icon/icon.android.tsx +11 -7
- package/src/atoms/icon/icon.ios.tsx +25 -5
- package/src/atoms/icon/icon.types.ts +18 -24
- package/src/atoms/icon/index.ts +0 -1
- package/src/atoms/index.ts +1 -1
- package/src/atoms/list/list.android.tsx +12 -1
- package/src/atoms/list/list.types.ts +9 -0
- package/src/atoms/picker/picker.android.tsx +88 -0
- package/src/atoms/rn-icon/index.ts +2 -0
- package/src/atoms/rn-icon/rn-icon.android.tsx +28 -0
- package/src/atoms/rn-icon/rn-icon.ios.tsx +28 -0
- package/src/atoms/rn-icon/rn-icon.types.ts +8 -0
- package/src/atoms/surface/surface.android.tsx +28 -4
- package/src/atoms/switch/switch.android.tsx +24 -3
- package/src/glyph/glyph-button.android.tsx +25 -0
- package/src/glyph/glyph-button.ios.tsx +37 -0
- package/src/glyph/glyph-button.types.ts +12 -0
- package/src/glyph/glyph.android.tsx +12 -0
- package/src/glyph/glyph.ios.tsx +15 -0
- package/src/glyph/glyph.types.ts +15 -0
- package/src/glyph/index.ts +5 -0
- package/src/glyph/rn-glyph.android.tsx +14 -0
- package/src/glyph/rn-glyph.ios.tsx +16 -0
- package/src/molecules/collapsible/collapsible.android.tsx +2 -2
- package/src/molecules/labeled-content/labeled-content.tsx +2 -1
- package/src/molecules/list-item/list-item.tsx +2 -1
- package/src/molecules/navigation-bar/navigation-bar.android.tsx +11 -4
- package/src/molecules/radio-group/radio-group.android.tsx +11 -2
- package/src/molecules/radio-group/radio-group.ios.tsx +2 -2
- package/src/molecules/scroll-edge-container/scroll-edge-container.types.ts +3 -0
- package/src/molecules/search-bar/search-bar.tsx +4 -9
- package/src/molecules/stepper/stepper.android.tsx +3 -3
- package/src/organisms/alert/alert.android.tsx +44 -7
- package/src/organisms/context-menu/context-menu.android.tsx +71 -37
- package/src/organisms/context-menu/context-menu.ios.tsx +40 -18
- package/src/organisms/context-menu/context-menu.types.ts +29 -3
- package/src/organisms/fab-menu/fab-menu.android.tsx +3 -2
- package/src/organisms/fab-menu/fab-menu.ios.tsx +13 -12
- package/src/organisms/fab-menu/fab-menu.types.ts +1 -1
- package/src/organisms/form/form.android.tsx +1 -1
- package/src/organisms/form/form.types.ts +5 -0
- package/src/organisms/index.ts +0 -1
- package/src/organisms/menu/menu.android.tsx +36 -30
- package/CHANGELOG.md +0 -14
- package/lib/module/atoms/countdown/countdown-frame.js +0 -115
- package/lib/module/atoms/countdown/countdown-frame.js.map +0 -1
- package/lib/module/atoms/countdown/countdown-units.js +0 -25
- package/lib/module/atoms/countdown/countdown-units.js.map +0 -1
- package/lib/module/atoms/countdown/countdown.android.js +0 -53
- package/lib/module/atoms/countdown/countdown.android.js.map +0 -1
- package/lib/module/atoms/countdown/countdown.ios.js +0 -50
- package/lib/module/atoms/countdown/countdown.ios.js.map +0 -1
- package/lib/module/atoms/countdown/countdown.types.js +0 -4
- package/lib/module/atoms/countdown/countdown.types.js.map +0 -1
- package/lib/module/atoms/countdown/index.js +0 -5
- package/lib/module/atoms/countdown/index.js.map +0 -1
- package/lib/module/atoms/date-picker/date-picker.js.map +0 -1
- package/lib/module/atoms/icon/icon-names.js +0 -53
- package/lib/module/atoms/icon/icon-names.js.map +0 -1
- package/lib/module/atoms/picker/picker.js.map +0 -1
- package/lib/module/organisms/rn-context-menu/index.js +0 -5
- package/lib/module/organisms/rn-context-menu/index.js.map +0 -1
- package/lib/module/organisms/rn-context-menu/rn-context-menu.android.js +0 -101
- package/lib/module/organisms/rn-context-menu/rn-context-menu.android.js.map +0 -1
- package/lib/module/organisms/rn-context-menu/rn-context-menu.ios.js +0 -44
- package/lib/module/organisms/rn-context-menu/rn-context-menu.ios.js.map +0 -1
- package/lib/module/organisms/rn-context-menu/rn-context-menu.types.js +0 -4
- package/lib/module/organisms/rn-context-menu/rn-context-menu.types.js.map +0 -1
- package/lib/typescript/atoms/countdown/countdown-frame.d.ts +0 -17
- package/lib/typescript/atoms/countdown/countdown-units.d.ts +0 -5
- package/lib/typescript/atoms/countdown/countdown.d.ts +0 -1
- package/lib/typescript/atoms/countdown/countdown.ios.d.ts +0 -2
- package/lib/typescript/atoms/countdown/countdown.types.d.ts +0 -21
- package/lib/typescript/atoms/countdown/index.d.ts +0 -2
- package/lib/typescript/atoms/icon/icon-names.d.ts +0 -50
- package/lib/typescript/organisms/rn-context-menu/index.d.ts +0 -2
- package/lib/typescript/organisms/rn-context-menu/rn-context-menu.d.ts +0 -1
- package/lib/typescript/organisms/rn-context-menu/rn-context-menu.ios.d.ts +0 -2
- package/lib/typescript/organisms/rn-context-menu/rn-context-menu.types.d.ts +0 -33
- package/src/atoms/countdown/countdown-frame.tsx +0 -123
- package/src/atoms/countdown/countdown-units.ts +0 -37
- package/src/atoms/countdown/countdown.android.tsx +0 -49
- package/src/atoms/countdown/countdown.ios.tsx +0 -46
- package/src/atoms/countdown/countdown.types.ts +0 -24
- package/src/atoms/countdown/index.ts +0 -2
- package/src/atoms/date-picker/date-picker.tsx +0 -26
- package/src/atoms/icon/icon-names.ts +0 -53
- package/src/organisms/rn-context-menu/index.ts +0 -2
- package/src/organisms/rn-context-menu/rn-context-menu.android.tsx +0 -90
- package/src/organisms/rn-context-menu/rn-context-menu.ios.tsx +0 -47
- package/src/organisms/rn-context-menu/rn-context-menu.types.ts +0 -36
- /package/src/atoms/picker/{picker.tsx → picker.ios.tsx} +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Badge as ComposeBadge } from '@expo/ui/jetpack-compose';
|
|
3
|
+
import { Badge as ComposeBadge, Text as ComposeText } from '@expo/ui/jetpack-compose';
|
|
4
4
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
5
5
|
import { useHostGuard } from "../../host-context.js";
|
|
6
6
|
import { BADGE_TOKENS } from "./badge-tokens.js";
|
|
7
|
+
|
|
8
|
+
/** Material's badge. Its content is a Compose `Text` — `@expo/ui`'s badge takes composable content, not a string. */
|
|
7
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
10
|
export const Badge = ({
|
|
9
11
|
label,
|
|
@@ -15,7 +17,11 @@ export const Badge = ({
|
|
|
15
17
|
return /*#__PURE__*/_jsx(ComposeBadge, {
|
|
16
18
|
containerColor: theme.color(tokens.fill),
|
|
17
19
|
contentColor: theme.color(tokens.content),
|
|
18
|
-
children:
|
|
20
|
+
children: /*#__PURE__*/_jsx(ComposeText, {
|
|
21
|
+
color: theme.colorString(tokens.content),
|
|
22
|
+
style: theme.typography.captionMedium,
|
|
23
|
+
children: label
|
|
24
|
+
})
|
|
19
25
|
});
|
|
20
26
|
};
|
|
21
27
|
//# sourceMappingURL=badge.android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Badge","ComposeBadge","useAppTheme","useHostGuard","BADGE_TOKENS","jsx","_jsx","label","tone","theme","tokens","containerColor","color","fill","contentColor","content","children"],"sourceRoot":"../../../../src","sources":["atoms/badge/badge.android.tsx"],"mappings":";;AAAA,SAAQA,KAAK,IAAIC,YAAY,QAAO,0BAA0B;
|
|
1
|
+
{"version":3,"names":["Badge","ComposeBadge","Text","ComposeText","useAppTheme","useHostGuard","BADGE_TOKENS","jsx","_jsx","label","tone","theme","tokens","containerColor","color","fill","contentColor","content","children","colorString","style","typography","captionMedium"],"sourceRoot":"../../../../src","sources":["atoms/badge/badge.android.tsx"],"mappings":";;AAAA,SAAQA,KAAK,IAAIC,YAAY,EAAEC,IAAI,IAAIC,WAAW,QAAO,0BAA0B;AACnF,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,YAAY,QAAO,uBAAoB;AAE/C,SAAQC,YAAY,QAAO,mBAAgB;;AAE3C;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,OAAO,MAAMR,KAAqB,GAAGA,CAAC;EAACS,KAAK;EAAEC,IAAI,GAAG;AAAqB,CAAC,KAAK;EAC9EL,YAAY,CAAC,OAAO,CAAC;EACrB,MAAMM,KAAK,GAAGP,WAAW,CAAC,CAAC;EAC3B,MAAMQ,MAAM,GAAGN,YAAY,CAACI,IAAI,CAAC;EAEjC,oBACEF,IAAA,CAACP,YAAY;IAACY,cAAc,EAAEF,KAAK,CAACG,KAAK,CAACF,MAAM,CAACG,IAAI,CAAE;IAACC,YAAY,EAAEL,KAAK,CAACG,KAAK,CAACF,MAAM,CAACK,OAAO,CAAE;IAAAC,QAAA,eAChGV,IAAA,CAACL,WAAW;MAACW,KAAK,EAAEH,KAAK,CAACQ,WAAW,CAACP,MAAM,CAACK,OAAO,CAAE;MAACG,KAAK,EAAET,KAAK,CAACU,UAAU,CAACC,aAAc;MAAAJ,QAAA,EAC1FT;IAAK,CACK;EAAC,CACF,CAAC;AAEnB,CAAC","ignoreList":[]}
|
|
@@ -40,4 +40,43 @@ export const buttonTokens = (variant, disabled, theme) => {
|
|
|
40
40
|
shadow: tokens.shadow
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
|
+
|
|
44
|
+
/** Relative luminance of a `#rrggbb` colour (any alpha ignored); `undefined` for anything else. */
|
|
45
|
+
const luminance = color => {
|
|
46
|
+
const hex = typeof color === 'string' ? /^#([0-9a-f]{6})/i.exec(color)?.[1] : undefined;
|
|
47
|
+
if (!hex) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const [r, g, b] = [0, 2, 4].map(i => {
|
|
51
|
+
const channel = Number.parseInt(hex.slice(i, i + 2), 16) / 255;
|
|
52
|
+
return channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4;
|
|
53
|
+
});
|
|
54
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The hex behind a token in the current appearance. Android resolves an adaptive entry to one; iOS hands the platform
|
|
59
|
+
* a dynamic colour instead, so there the authored entry is read and its branch picked. A system colour has none.
|
|
60
|
+
*/
|
|
61
|
+
const currentHex = (token, theme) => {
|
|
62
|
+
const resolved = theme.color(token);
|
|
63
|
+
if (typeof resolved === 'string') {
|
|
64
|
+
return resolved;
|
|
65
|
+
}
|
|
66
|
+
const entry = token.split(':')[0].split('.').reduce((node, key) => node?.[key], theme);
|
|
67
|
+
if (entry && typeof entry === 'object' && 'adaptive' in entry) {
|
|
68
|
+
const {
|
|
69
|
+
dark,
|
|
70
|
+
light
|
|
71
|
+
} = entry.adaptive;
|
|
72
|
+
return theme.dark ? dark : light;
|
|
73
|
+
}
|
|
74
|
+
return entry;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The label for a button filled with an arbitrary `tint`: the on-accent white over a strong colour, the primary
|
|
79
|
+
* content colour over a pale one (`fill.accent.base`) — the light container tokens pair with it in both appearances.
|
|
80
|
+
*/
|
|
81
|
+
export const contentOnTint = (tint, theme) => (luminance(currentHex(tint, theme)) ?? 0) > 0.4 ? 'content.primary' : 'content.on.bg';
|
|
43
82
|
//# sourceMappingURL=button-tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TOKENS","accent","content","fill","shadow","destructive","glass","secondary","buttonTokens","variant","disabled","theme","tokens","disabledFill"],"sourceRoot":"../../../../src","sources":["atoms/button/button-tokens.ts"],"mappings":";;AAUA,MAAMA,MAAM,GAAG;EACbC,MAAM,EAAE;IAACC,OAAO,EAAE,eAAe;IAAEC,IAAI,EAAE,qBAAqB;IAAEC,MAAM,EAAE;EAAY,CAAC;EACrFC,WAAW,EAAE;IAACH,OAAO,EAAE,wBAAwB;IAAEC,IAAI,EAAE,0BAA0B;IAAEC,MAAM,EAAE;EAAiB,CAAC;EAC7GE,KAAK,EAAE;IAACJ,OAAO,EAAE,iBAAiB;IAAEC,IAAI,EAAE,mBAAmB;IAAEC,MAAM,EAAE;EAAW,CAAC;EACnFG,SAAS,EAAE;IAACL,OAAO,EAAE,iBAAiB;IAAEC,IAAI,EAAE,uBAAuB;IAAEC,MAAM,EAAE;EAAe;AAChG,CAAwD;AAExD,OAAO,MAAMI,YAAY,GAAGA,CAACC,OAAsB,EAAEC,QAAiB,EAAEC,KAAY,KAAK;EACvF,MAAMC,MAAM,GAAGZ,MAAM,CAACS,OAAO,CAAC;EAE9B,IAAI,CAACC,QAAQ,EAAE;IACb,OAAOE,MAAM;EACf;EAEA,MAAMC,YAAY,GAAG;IACnBZ,MAAM,EAAE,sBAAsB;IAC9BI,WAAW,EAAE,2BAA2B;IACxCC,KAAK,EAAE,uBAAuB;IAC9BC,SAAS,EAAE;EACb,CAAsD;EAEtD,KAAKI,KAAK;EAEV,OAAO;IAACT,OAAO,EAAE,sBAAsB;IAAEC,IAAI,EAAEU,YAAY,CAACJ,OAAO,CAAC;IAAEL,MAAM,EAAEQ,MAAM,CAACR;EAAM,CAAC;AAC9F,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["TOKENS","accent","content","fill","shadow","destructive","glass","secondary","buttonTokens","variant","disabled","theme","tokens","disabledFill","luminance","color","hex","exec","undefined","r","g","b","map","i","channel","Number","parseInt","slice","currentHex","token","resolved","entry","split","reduce","node","key","dark","light","adaptive","contentOnTint","tint"],"sourceRoot":"../../../../src","sources":["atoms/button/button-tokens.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,38 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Button as ComposeButton } from '@expo/ui/jetpack-compose';
|
|
3
|
+
import { Button as ComposeButton, Text as ComposeText, OutlinedButton } from '@expo/ui/jetpack-compose';
|
|
4
|
+
import { testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
|
|
4
5
|
import { useSxModifiers } from '@hzblj/kara-sx';
|
|
5
6
|
import { useAppTheme } from '@hzblj/kara-theme';
|
|
7
|
+
import { useMemo } from 'react';
|
|
6
8
|
import { useHostGuard } from "../../host-context.js";
|
|
7
|
-
import { buttonTokens } from "./button-tokens.js";
|
|
9
|
+
import { buttonTokens, contentOnTint } from "./button-tokens.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Material's filled button, in its own stadium shape. No `borderRadius` or `shadow` from the tokens: those shape the
|
|
13
|
+
* SwiftUI button's glossy ring, and laid over a Compose button they clip and outline a rounded rectangle around the
|
|
14
|
+
* pill Material draws. The label is a Compose `Text` — `@expo/ui`'s button takes composable content, not a string.
|
|
15
|
+
*
|
|
16
|
+
* Material has no glass, so `glass` is its outlined button — and a `tint` makes any variant a filled button in that
|
|
17
|
+
* colour, as a prominent style does on iOS. `buttonStyle` and `controlSize` are SwiftUI's alone.
|
|
18
|
+
*/
|
|
8
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
20
|
export const Button = ({
|
|
10
21
|
disabled = false,
|
|
11
22
|
label,
|
|
12
23
|
onPress,
|
|
13
24
|
testID,
|
|
25
|
+
tint,
|
|
14
26
|
variant = 'accent',
|
|
15
27
|
wide = true
|
|
16
28
|
}) => {
|
|
17
29
|
useHostGuard('Button');
|
|
18
30
|
const theme = useAppTheme();
|
|
19
31
|
const tokens = buttonTokens(variant, disabled, theme);
|
|
20
|
-
const
|
|
21
|
-
borderRadius: 'medium',
|
|
22
|
-
shadow: tokens.shadow,
|
|
32
|
+
const sxModifiers = useSxModifiers({
|
|
23
33
|
wide
|
|
24
34
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
const modifiers = useMemo(() => testID ? [...sxModifiers, testIdModifier(testID)] : sxModifiers, [sxModifiers, testID]);
|
|
36
|
+
const style = theme.typography.body;
|
|
37
|
+
const outlined = variant === 'glass' && !tint;
|
|
38
|
+
const fill = tint && !disabled ? tint : tokens.fill;
|
|
39
|
+
const content = tint && !disabled ? contentOnTint(tint, theme) : tokens.content;
|
|
40
|
+
const MaterialButton = outlined ? OutlinedButton : ComposeButton;
|
|
41
|
+
return /*#__PURE__*/_jsx(MaterialButton, {
|
|
42
|
+
colors: outlined ? {
|
|
43
|
+
contentColor: theme.color(content),
|
|
44
|
+
disabledContentColor: theme.color(content)
|
|
45
|
+
} : {
|
|
46
|
+
containerColor: theme.color(fill),
|
|
47
|
+
contentColor: theme.color(content),
|
|
48
|
+
disabledContainerColor: theme.color(fill),
|
|
49
|
+
disabledContentColor: theme.color(content)
|
|
31
50
|
},
|
|
32
51
|
enabled: !disabled,
|
|
33
52
|
modifiers: modifiers,
|
|
34
53
|
onClick: onPress,
|
|
35
|
-
children:
|
|
54
|
+
children: /*#__PURE__*/_jsx(ComposeText, {
|
|
55
|
+
color: theme.colorString(content),
|
|
56
|
+
style: {
|
|
57
|
+
fontFamily: style.fontFamily,
|
|
58
|
+
fontSize: style.fontSize,
|
|
59
|
+
fontWeight: style.fontWeight,
|
|
60
|
+
lineHeight: style.lineHeight
|
|
61
|
+
},
|
|
62
|
+
children: label
|
|
63
|
+
})
|
|
36
64
|
});
|
|
37
65
|
};
|
|
38
66
|
//# sourceMappingURL=button.android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","ComposeButton","useSxModifiers","useAppTheme","useHostGuard","buttonTokens","jsx","_jsx","disabled","label","onPress","
|
|
1
|
+
{"version":3,"names":["Button","ComposeButton","Text","ComposeText","OutlinedButton","testID","testIdModifier","useSxModifiers","useAppTheme","useMemo","useHostGuard","buttonTokens","contentOnTint","jsx","_jsx","disabled","label","onPress","tint","variant","wide","theme","tokens","sxModifiers","modifiers","style","typography","body","outlined","fill","content","MaterialButton","colors","contentColor","color","disabledContentColor","containerColor","disabledContainerColor","enabled","onClick","children","colorString","fontFamily","fontSize","fontWeight","lineHeight"],"sourceRoot":"../../../../src","sources":["atoms/button/button.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,EAAEC,IAAI,IAAIC,WAAW,EAAEC,cAAc,QAAO,0BAA0B;AACrG,SAAQC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AAC3E,SAAQC,cAAc,QAAO,gBAAgB;AAC7C,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,YAAY,QAAO,uBAAoB;AAE/C,SAAQC,YAAY,EAAEC,aAAa,QAAO,oBAAiB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,SAAAC,GAAA,IAAAC,IAAA;AAQA,OAAO,MAAMd,MAAuB,GAAGA,CAAC;EACtCe,QAAQ,GAAG,KAAK;EAChBC,KAAK;EACLC,OAAO;EACPZ,MAAM;EACNa,IAAI;EACJC,OAAO,GAAG,QAAQ;EAClBC,IAAI,GAAG;AACI,CAAC,KAAK;EACjBV,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMW,KAAK,GAAGb,WAAW,CAAC,CAAC;EAC3B,MAAMc,MAAM,GAAGX,YAAY,CAACQ,OAAO,EAAEJ,QAAQ,EAAEM,KAAK,CAAC;EACrD,MAAME,WAAW,GAAGhB,cAAc,CAAC;IAACa;EAAI,CAAC,CAAC;EAC1C,MAAMI,SAAS,GAAGf,OAAO,CACvB,MAAOJ,MAAM,GAAG,CAAC,GAAGkB,WAAW,EAAEjB,cAAc,CAACD,MAAM,CAAC,CAAC,GAAGkB,WAAY,EACvE,CAACA,WAAW,EAAElB,MAAM,CACtB,CAAC;EACD,MAAMoB,KAAK,GAAGJ,KAAK,CAACK,UAAU,CAACC,IAAI;EACnC,MAAMC,QAAQ,GAAGT,OAAO,KAAK,OAAO,IAAI,CAACD,IAAI;EAC7C,MAAMW,IAAI,GAAGX,IAAI,IAAI,CAACH,QAAQ,GAAGG,IAAI,GAAGI,MAAM,CAACO,IAAI;EACnD,MAAMC,OAAO,GAAGZ,IAAI,IAAI,CAACH,QAAQ,GAAGH,aAAa,CAACM,IAAI,EAAEG,KAAK,CAAC,GAAGC,MAAM,CAACQ,OAAO;EAC/E,MAAMC,cAAc,GAAGH,QAAQ,GAAGxB,cAAc,GAAGH,aAAa;EAEhE,oBACEa,IAAA,CAACiB,cAAc;IACbC,MAAM,EACJJ,QAAQ,GACJ;MAACK,YAAY,EAAEZ,KAAK,CAACa,KAAK,CAACJ,OAAO,CAAC;MAAEK,oBAAoB,EAAEd,KAAK,CAACa,KAAK,CAACJ,OAAO;IAAC,CAAC,GAChF;MACEM,cAAc,EAAEf,KAAK,CAACa,KAAK,CAACL,IAAI,CAAC;MACjCI,YAAY,EAAEZ,KAAK,CAACa,KAAK,CAACJ,OAAO,CAAC;MAClCO,sBAAsB,EAAEhB,KAAK,CAACa,KAAK,CAACL,IAAI,CAAC;MACzCM,oBAAoB,EAAEd,KAAK,CAACa,KAAK,CAACJ,OAAO;IAC3C,CACL;IACDQ,OAAO,EAAE,CAACvB,QAAS;IACnBS,SAAS,EAAEA,SAAU;IACrBe,OAAO,EAAEtB,OAAQ;IAAAuB,QAAA,eAEjB1B,IAAA,CAACX,WAAW;MACV+B,KAAK,EAAEb,KAAK,CAACoB,WAAW,CAACX,OAAO,CAAE;MAClCL,KAAK,EAAE;QACLiB,UAAU,EAAEjB,KAAK,CAACiB,UAAU;QAC5BC,QAAQ,EAAElB,KAAK,CAACkB,QAAQ;QACxBC,UAAU,EAAEnB,KAAK,CAACmB,UAAU;QAC5BC,UAAU,EAAEpB,KAAK,CAACoB;MACpB,CAAE;MAAAL,QAAA,EAEDxB;IAAK,CACK;EAAC,CACA,CAAC;AAErB,CAAC","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ import { useMemo } from 'react';
|
|
|
7
7
|
import { useHostGuard } from "../../host-context.js";
|
|
8
8
|
import { Text } from "../text/index.js";
|
|
9
9
|
import { VStack } from "../v-stack/index.js";
|
|
10
|
-
import { buttonTokens } from "./button-tokens.js";
|
|
10
|
+
import { buttonTokens, contentOnTint } from "./button-tokens.js";
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
const STYLE_BY_VARIANT = {
|
|
13
13
|
accent: 'borderedProminent',
|
|
@@ -48,6 +48,9 @@ export const Button = ({
|
|
|
48
48
|
* button its height — without it a tinted glass button comes out shorter than every other variant.
|
|
49
49
|
*/
|
|
50
50
|
const glassTint = style === 'glass' && resolvedTint ? theme.color(resolvedTint) : undefined;
|
|
51
|
+
const filled = Boolean(glassTint) || style === 'borderedProminent' || style === 'glassProminent';
|
|
52
|
+
// A prominent style — and tinted glass — is coloured by the tint, so a caller's own tint picks the label on it.
|
|
53
|
+
const content = tint && filled && !disabled ? contentOnTint(tint, theme) : tokens.content;
|
|
51
54
|
const modifiers = useMemo(() => {
|
|
52
55
|
const list = [buttonStyleModifier(glassTint ? 'plain' : style), controlSizeModifier(controlSize)];
|
|
53
56
|
if (glassTint) {
|
|
@@ -76,7 +79,7 @@ export const Button = ({
|
|
|
76
79
|
py: glassTint ? 's16' : undefined,
|
|
77
80
|
wide: wide,
|
|
78
81
|
children: /*#__PURE__*/_jsx(Text, {
|
|
79
|
-
color:
|
|
82
|
+
color: content,
|
|
80
83
|
variant: "body",
|
|
81
84
|
children: label
|
|
82
85
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","SwiftUIButton","buttonStyle","buttonStyleModifier","controlSize","controlSizeModifier","disabled","disabledModifier","glassEffect","glassEffectModifier","tint","tintModifier","useAppTheme","useMemo","useHostGuard","Text","VStack","buttonTokens","jsx","_jsx","STYLE_BY_VARIANT","accent","destructive","glass","secondary","TINT_BY_VARIANT","undefined","label","onPress","testID","variant","wide","theme","tokens","resolvedTint","style","glassTint","color","modifiers","list","push","interactive","shape","children","align","py"
|
|
1
|
+
{"version":3,"names":["Button","SwiftUIButton","buttonStyle","buttonStyleModifier","controlSize","controlSizeModifier","disabled","disabledModifier","glassEffect","glassEffectModifier","tint","tintModifier","useAppTheme","useMemo","useHostGuard","Text","VStack","buttonTokens","contentOnTint","jsx","_jsx","STYLE_BY_VARIANT","accent","destructive","glass","secondary","TINT_BY_VARIANT","undefined","label","onPress","testID","variant","wide","theme","tokens","resolvedTint","style","glassTint","color","filled","Boolean","content","modifiers","list","push","interactive","shape","children","align","py"],"sourceRoot":"../../../../src","sources":["atoms/button/button.ios.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Checkbox as ComposeCheckbox, Row, Text } from '@expo/ui/jetpack-compose';
|
|
4
|
-
import {
|
|
4
|
+
import { clickable, fillMaxWidth } from '@expo/ui/jetpack-compose/modifiers';
|
|
5
|
+
import { spacing, useAppTheme } from '@hzblj/kara-theme';
|
|
6
|
+
import { useMemo } from 'react';
|
|
5
7
|
import { useHostGuard } from "../../host-context.js";
|
|
6
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
/**
|
|
10
|
+
* Material's checkbox, tinted with the accent. With a label it is a full-width row that toggles as a whole; the gap is
|
|
11
|
+
* explicit because a checkbox without a handler drops Material's 48dp touch target, and with it the space around it.
|
|
12
|
+
*/
|
|
7
13
|
export const Checkbox = ({
|
|
8
14
|
disabled = false,
|
|
9
15
|
label,
|
|
@@ -12,7 +18,12 @@ export const Checkbox = ({
|
|
|
12
18
|
}) => {
|
|
13
19
|
useHostGuard('Checkbox');
|
|
14
20
|
const theme = useAppTheme();
|
|
21
|
+
const rowModifiers = useMemo(() => disabled || !onValueChange ? [fillMaxWidth()] : [fillMaxWidth(), clickable(() => onValueChange(!value))], [disabled, onValueChange, value]);
|
|
15
22
|
const control = /*#__PURE__*/_jsx(ComposeCheckbox, {
|
|
23
|
+
colors: {
|
|
24
|
+
checkedColor: theme.color('fill.accent.primary'),
|
|
25
|
+
checkmarkColor: theme.color('content.on.bg')
|
|
26
|
+
},
|
|
16
27
|
enabled: !disabled,
|
|
17
28
|
onCheckedChange: onValueChange,
|
|
18
29
|
value: value
|
|
@@ -21,9 +32,13 @@ export const Checkbox = ({
|
|
|
21
32
|
return control;
|
|
22
33
|
}
|
|
23
34
|
return /*#__PURE__*/_jsxs(Row, {
|
|
35
|
+
horizontalArrangement: {
|
|
36
|
+
spacedBy: spacing.s8
|
|
37
|
+
},
|
|
38
|
+
modifiers: rowModifiers,
|
|
24
39
|
verticalAlignment: "center",
|
|
25
40
|
children: [control, /*#__PURE__*/_jsx(Text, {
|
|
26
|
-
color: theme.colorString('content.primary'),
|
|
41
|
+
color: theme.colorString(disabled ? 'content.tertiary' : 'content.primary'),
|
|
27
42
|
style: theme.typography.body,
|
|
28
43
|
children: label
|
|
29
44
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Checkbox","ComposeCheckbox","Row","Text","useAppTheme","useHostGuard","jsx","_jsx","jsxs","_jsxs","disabled","label","onValueChange","value","theme","control","enabled","onCheckedChange","
|
|
1
|
+
{"version":3,"names":["Checkbox","ComposeCheckbox","Row","Text","clickable","fillMaxWidth","spacing","useAppTheme","useMemo","useHostGuard","jsx","_jsx","jsxs","_jsxs","disabled","label","onValueChange","value","theme","rowModifiers","control","colors","checkedColor","color","checkmarkColor","enabled","onCheckedChange","horizontalArrangement","spacedBy","s8","modifiers","verticalAlignment","children","colorString","style","typography","body"],"sourceRoot":"../../../../src","sources":["atoms/checkbox/checkbox.android.tsx"],"mappings":";;AAAA,SAAQA,QAAQ,IAAIC,eAAe,EAAEC,GAAG,EAAEC,IAAI,QAAO,0BAA0B;AAC/E,SAAQC,SAAS,EAAEC,YAAY,QAAO,oCAAoC;AAC1E,SAAQC,OAAO,EAAEC,WAAW,QAAO,mBAAmB;AACtD,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C;AACA;AACA;AACA;AACA,OAAO,MAAMb,QAA2B,GAAGA,CAAC;EAACc,QAAQ,GAAG,KAAK;EAAEC,KAAK;EAAEC,aAAa;EAAEC;AAAoB,CAAC,KAAK;EAC7GR,YAAY,CAAC,UAAU,CAAC;EACxB,MAAMS,KAAK,GAAGX,WAAW,CAAC,CAAC;EAC3B,MAAMY,YAAY,GAAGX,OAAO,CAC1B,MAAOM,QAAQ,IAAI,CAACE,aAAa,GAAG,CAACX,YAAY,CAAC,CAAC,CAAC,GAAG,CAACA,YAAY,CAAC,CAAC,EAAED,SAAS,CAAC,MAAMY,aAAa,CAAC,CAACC,KAAK,CAAC,CAAC,CAAE,EAChH,CAACH,QAAQ,EAAEE,aAAa,EAAEC,KAAK,CACjC,CAAC;EACD,MAAMG,OAAO,gBACXT,IAAA,CAACV,eAAe;IACdoB,MAAM,EAAE;MAACC,YAAY,EAAEJ,KAAK,CAACK,KAAK,CAAC,qBAAqB,CAAC;MAAEC,cAAc,EAAEN,KAAK,CAACK,KAAK,CAAC,eAAe;IAAC,CAAE;IACzGE,OAAO,EAAE,CAACX,QAAS;IACnBY,eAAe,EAAEV,aAAc;IAC/BC,KAAK,EAAEA;EAAM,CACd,CACF;EAED,IAAI,CAACF,KAAK,EAAE;IACV,OAAOK,OAAO;EAChB;EAEA,oBACEP,KAAA,CAACX,GAAG;IAACyB,qBAAqB,EAAE;MAACC,QAAQ,EAAEtB,OAAO,CAACuB;IAAE,CAAE;IAACC,SAAS,EAAEX,YAAa;IAACY,iBAAiB,EAAC,QAAQ;IAAAC,QAAA,GACpGZ,OAAO,eACRT,IAAA,CAACR,IAAI;MAACoB,KAAK,EAAEL,KAAK,CAACe,WAAW,CAACnB,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,CAAE;MAACoB,KAAK,EAAEhB,KAAK,CAACiB,UAAU,CAACC,IAAK;MAAAJ,QAAA,EAC7GjB;IAAK,CACF,CAAC;EAAA,CACJ,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { DateTimePicker } from '@expo/ui/community/datetime-picker';
|
|
4
|
+
import { useAppTheme } from '@hzblj/kara-theme';
|
|
5
|
+
import { useCallback, useState } from 'react';
|
|
6
|
+
import { Pressable } from "../pressable/index.js";
|
|
7
|
+
import { RnText } from "../rn-text/index.js";
|
|
8
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const formatted = (value, mode) => {
|
|
10
|
+
if (mode === 'time') {
|
|
11
|
+
return value.toLocaleTimeString(undefined, {
|
|
12
|
+
hour: '2-digit',
|
|
13
|
+
minute: '2-digit'
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const date = value.toLocaleDateString(undefined, {
|
|
17
|
+
day: 'numeric',
|
|
18
|
+
month: 'short',
|
|
19
|
+
year: 'numeric'
|
|
20
|
+
});
|
|
21
|
+
return mode === 'datetime' ? `${date} ${value.toLocaleTimeString(undefined, {
|
|
22
|
+
hour: '2-digit',
|
|
23
|
+
minute: '2-digit'
|
|
24
|
+
})}` : date;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The value as a field that opens Material's date picker dialog on a tap. Android's picker *is* a dialog — mounted, it
|
|
29
|
+
* opens — so it is mounted only while open, and unmounted on confirm or dismiss, as the component asks its caller to.
|
|
30
|
+
*/
|
|
31
|
+
export const DatePicker = ({
|
|
32
|
+
max,
|
|
33
|
+
min,
|
|
34
|
+
mode = 'date',
|
|
35
|
+
onValueChange,
|
|
36
|
+
testID,
|
|
37
|
+
value
|
|
38
|
+
}) => {
|
|
39
|
+
const theme = useAppTheme();
|
|
40
|
+
const [open, setOpen] = useState(false);
|
|
41
|
+
const show = useCallback(() => setOpen(true), []);
|
|
42
|
+
const hide = useCallback(() => setOpen(false), []);
|
|
43
|
+
const onChange = useCallback((_event, date) => {
|
|
44
|
+
setOpen(false);
|
|
45
|
+
onValueChange?.(date);
|
|
46
|
+
}, [onValueChange]);
|
|
47
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
48
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
49
|
+
alignSelf: "flex-start",
|
|
50
|
+
bg: "fill.tertiary",
|
|
51
|
+
borderRadius: "medium",
|
|
52
|
+
onPress: show,
|
|
53
|
+
px: "s12",
|
|
54
|
+
py: "s8",
|
|
55
|
+
testID: testID,
|
|
56
|
+
children: /*#__PURE__*/_jsx(RnText, {
|
|
57
|
+
variant: "body",
|
|
58
|
+
children: formatted(value, mode)
|
|
59
|
+
})
|
|
60
|
+
}), open ? /*#__PURE__*/_jsx(DateTimePicker, {
|
|
61
|
+
accentColor: theme.colorString('fill.accent.primary'),
|
|
62
|
+
maximumDate: max,
|
|
63
|
+
minimumDate: min,
|
|
64
|
+
mode: mode,
|
|
65
|
+
onDismiss: hide,
|
|
66
|
+
onValueChange: onChange,
|
|
67
|
+
presentation: "dialog",
|
|
68
|
+
value: value
|
|
69
|
+
}) : null]
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=date-picker.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DateTimePicker","useAppTheme","useCallback","useState","Pressable","RnText","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","formatted","value","mode","toLocaleTimeString","undefined","hour","minute","date","toLocaleDateString","day","month","year","DatePicker","max","min","onValueChange","testID","theme","open","setOpen","show","hide","onChange","_event","children","alignSelf","bg","borderRadius","onPress","px","py","variant","accentColor","colorString","maximumDate","minimumDate","onDismiss","presentation"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.android.tsx"],"mappings":";;AAAA,SAAQA,cAAc,QAAO,oCAAoC;AACjE,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,QAAQ,QAAO,OAAO;AAE3C,SAAQC,SAAS,QAAO,uBAAc;AACtC,SAAQC,MAAM,QAAO,qBAAY;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAGjC,MAAMC,SAAS,GAAGA,CAACC,KAAW,EAAEC,IAAoB,KAAa;EAC/D,IAAIA,IAAI,KAAK,MAAM,EAAE;IACnB,OAAOD,KAAK,CAACE,kBAAkB,CAACC,SAAS,EAAE;MAACC,IAAI,EAAE,SAAS;MAAEC,MAAM,EAAE;IAAS,CAAC,CAAC;EAClF;EAEA,MAAMC,IAAI,GAAGN,KAAK,CAACO,kBAAkB,CAACJ,SAAS,EAAE;IAACK,GAAG,EAAE,SAAS;IAAEC,KAAK,EAAE,OAAO;IAAEC,IAAI,EAAE;EAAS,CAAC,CAAC;EAEnG,OAAOT,IAAI,KAAK,UAAU,GACtB,GAAGK,IAAI,IAAIN,KAAK,CAACE,kBAAkB,CAACC,SAAS,EAAE;IAACC,IAAI,EAAE,SAAS;IAAEC,MAAM,EAAE;EAAS,CAAC,CAAC,EAAE,GACtFC,IAAI;AACV,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMK,UAA+B,GAAGA,CAAC;EAC9CC,GAAG;EACHC,GAAG;EACHZ,IAAI,GAAG,MAAM;EACba,aAAa;EACbC,MAAM;EACNf;AACe,CAAC,KAAK;EACrB,MAAMgB,KAAK,GAAG5B,WAAW,CAAC,CAAC;EAC3B,MAAM,CAAC6B,IAAI,EAAEC,OAAO,CAAC,GAAG5B,QAAQ,CAAC,KAAK,CAAC;EAEvC,MAAM6B,IAAI,GAAG9B,WAAW,CAAC,MAAM6B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACjD,MAAME,IAAI,GAAG/B,WAAW,CAAC,MAAM6B,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EAElD,MAAMG,QAAQ,GAAGhC,WAAW,CAC1B,CAACiC,MAAe,EAAEhB,IAAU,KAAK;IAC/BY,OAAO,CAAC,KAAK,CAAC;IACdJ,aAAa,GAAGR,IAAI,CAAC;EACvB,CAAC,EACD,CAACQ,aAAa,CAChB,CAAC;EAED,oBACEhB,KAAA,CAAAF,SAAA;IAAA2B,QAAA,gBACE7B,IAAA,CAACH,SAAS;MACRiC,SAAS,EAAC,YAAY;MACtBC,EAAE,EAAC,eAAe;MAClBC,YAAY,EAAC,QAAQ;MACrBC,OAAO,EAAER,IAAK;MACdS,EAAE,EAAC,KAAK;MACRC,EAAE,EAAC,IAAI;MACPd,MAAM,EAAEA,MAAO;MAAAQ,QAAA,eAEf7B,IAAA,CAACF,MAAM;QAACsC,OAAO,EAAC,MAAM;QAAAP,QAAA,EAAExB,SAAS,CAACC,KAAK,EAAEC,IAAI;MAAC,CAAS;IAAC,CAC/C,CAAC,EACXgB,IAAI,gBACHvB,IAAA,CAACP,cAAc;MACb4C,WAAW,EAAEf,KAAK,CAACgB,WAAW,CAAC,qBAAqB,CAAE;MACtDC,WAAW,EAAErB,GAAI;MACjBsB,WAAW,EAAErB,GAAI;MACjBZ,IAAI,EAAEA,IAAK;MACXkC,SAAS,EAAEf,IAAK;MAChBN,aAAa,EAAEO,QAAS;MACxBe,YAAY,EAAC,QAAQ;MACrBpC,KAAK,EAAEA;IAAM,CACd,CAAC,GACA,IAAI;EAAA,CACR,CAAC;AAEP,CAAC","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { DateTimePicker } from '@expo/ui/community/datetime-picker';
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/** The system's compact date picker, inline: a tap on it opens the calendar popover UIKit owns. */
|
|
6
7
|
export const DatePicker = ({
|
|
7
8
|
max,
|
|
8
9
|
min,
|
|
@@ -11,18 +12,14 @@ export const DatePicker = ({
|
|
|
11
12
|
testID,
|
|
12
13
|
value
|
|
13
14
|
}) => {
|
|
14
|
-
const onChange = useCallback((_event, date) =>
|
|
15
|
-
if (date) {
|
|
16
|
-
onValueChange?.(date);
|
|
17
|
-
}
|
|
18
|
-
}, [onValueChange]);
|
|
15
|
+
const onChange = useCallback((_event, date) => onValueChange?.(date), [onValueChange]);
|
|
19
16
|
return /*#__PURE__*/_jsx(DateTimePicker, {
|
|
20
17
|
maximumDate: max,
|
|
21
18
|
minimumDate: min,
|
|
22
19
|
mode: mode,
|
|
23
|
-
|
|
20
|
+
onValueChange: onChange,
|
|
24
21
|
testID: testID,
|
|
25
22
|
value: value
|
|
26
23
|
});
|
|
27
24
|
};
|
|
28
|
-
//# sourceMappingURL=date-picker.js.map
|
|
25
|
+
//# sourceMappingURL=date-picker.ios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DateTimePicker","useCallback","jsx","_jsx","DatePicker","max","min","mode","onValueChange","testID","value","onChange","_event","date","maximumDate","minimumDate"],"sourceRoot":"../../../../src","sources":["atoms/date-picker/date-picker.ios.tsx"],"mappings":";;AAAA,SAAQA,cAAc,QAAO,oCAAoC;AACjE,SAAQC,WAAW,QAAO,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIjC;AACA,OAAO,MAAMC,UAA+B,GAAGA,CAAC;EAC9CC,GAAG;EACHC,GAAG;EACHC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,MAAM;EACNC;AACe,CAAC,KAAK;EACrB,MAAMC,QAAQ,GAAGV,WAAW,CAAC,CAACW,MAAe,EAAEC,IAAU,KAAKL,aAAa,GAAGK,IAAI,CAAC,EAAE,CAACL,aAAa,CAAC,CAAC;EAErG,oBACEL,IAAA,CAACH,cAAc;IACbc,WAAW,EAAET,GAAI;IACjBU,WAAW,EAAET,GAAI;IACjBC,IAAI,EAAEA,IAAK;IACXC,aAAa,EAAEG,QAAS;IACxBF,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["atoms/date-picker/index.ts"],"mappings":";;AAAA,cAAc,
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["atoms/date-picker/index.ts"],"mappings":";;AAAA,cAAc,eAAe;AAC7B,cAAc,wBAAqB","ignoreList":[]}
|
|
@@ -14,9 +14,11 @@ export const Fab = ({
|
|
|
14
14
|
return /*#__PURE__*/_jsx(FloatingActionButton, {
|
|
15
15
|
containerColor: theme.color('fill.accent.primary'),
|
|
16
16
|
onClick: onPress,
|
|
17
|
-
children: /*#__PURE__*/_jsx(Icon, {
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
children: /*#__PURE__*/_jsx(FloatingActionButton.Icon, {
|
|
18
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
19
|
+
color: "content.on.bg",
|
|
20
|
+
name: name
|
|
21
|
+
})
|
|
20
22
|
})
|
|
21
23
|
});
|
|
22
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FloatingActionButton","useAppTheme","useHostGuard","Icon","jsx","_jsx","Fab","name","onPress","theme","containerColor","color","onClick","children"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.android.tsx"],"mappings":";;AAAA,SAAQA,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,WAAW,QAAO,mBAAmB;AAE7C,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,OAAO,MAAMC,GAAiB,GAAGA,CAAC;EAACC,IAAI;EAAEC;AAAiB,CAAC,KAAK;EAC9DN,YAAY,CAAC,KAAK,CAAC;EAEnB,MAAMO,KAAK,GAAGR,WAAW,CAAC,CAAC;EAE3B,oBACEI,IAAA,CAACL,oBAAoB;IAACU,cAAc,EAAED,KAAK,CAACE,KAAK,CAAC,qBAAqB,CAAE;IAACC,OAAO,EAAEJ,OAAQ;IAAAK,QAAA,
|
|
1
|
+
{"version":3,"names":["FloatingActionButton","useAppTheme","useHostGuard","Icon","jsx","_jsx","Fab","name","onPress","theme","containerColor","color","onClick","children"],"sourceRoot":"../../../../src","sources":["atoms/fab/fab.android.tsx"],"mappings":";;AAAA,SAAQA,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,WAAW,QAAO,mBAAmB;AAE7C,SAAQC,YAAY,QAAO,uBAAoB;AAC/C,SAAQC,IAAI,QAAO,kBAAS;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,OAAO,MAAMC,GAAiB,GAAGA,CAAC;EAACC,IAAI;EAAEC;AAAiB,CAAC,KAAK;EAC9DN,YAAY,CAAC,KAAK,CAAC;EAEnB,MAAMO,KAAK,GAAGR,WAAW,CAAC,CAAC;EAE3B,oBACEI,IAAA,CAACL,oBAAoB;IAACU,cAAc,EAAED,KAAK,CAACE,KAAK,CAAC,qBAAqB,CAAE;IAACC,OAAO,EAAEJ,OAAQ;IAAAK,QAAA,eAEzFR,IAAA,CAACL,oBAAoB,CAACG,IAAI;MAAAU,QAAA,eACxBR,IAAA,CAACF,IAAI;QAACQ,KAAK,EAAC,eAAe;QAACJ,IAAI,EAAEA;MAAK,CAAE;IAAC,CACjB;EAAC,CACR,CAAC;AAE3B,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { Box } from "../box/index.js";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The capsule drawn where there is no Liquid Glass to draw: the glass buttons' own translucent fill, so whatever sits
|
|
7
|
+
* on the glass — usually content meant for a colourful backdrop — stays readable, the way it would on real glass.
|
|
8
|
+
*/
|
|
6
9
|
export const GlassFallback = ({
|
|
7
10
|
children,
|
|
8
11
|
interactive: _interactive,
|
|
@@ -11,7 +14,7 @@ export const GlassFallback = ({
|
|
|
11
14
|
}) => /*#__PURE__*/_jsx(Box, {
|
|
12
15
|
borderRadius: "full",
|
|
13
16
|
...props,
|
|
14
|
-
bg: tint ?? '
|
|
17
|
+
bg: tint ?? 'btn.bg.glass.base',
|
|
15
18
|
children: children
|
|
16
19
|
});
|
|
17
20
|
//# sourceMappingURL=glass-fallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box","jsx","_jsx","GlassFallback","children","interactive","_interactive","tint","props","borderRadius","bg"],"sourceRoot":"../../../../src","sources":["atoms/glass-view/glass-fallback.tsx"],"mappings":";;AAAA,SAAQA,GAAG,QAAO,iBAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG1B;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAACC,QAAQ;EAAEC,WAAW,EAAEC,YAAY;EAAEC,IAAI;EAAE,GAAGC;AAAqB,CAAC,kBACjGN,IAAA,CAACF,GAAG;EAACS,YAAY,EAAC,MAAM;EAAA,GAAKD,KAAK;EAAEE,EAAE,EAAEH,IAAI,IAAI,
|
|
1
|
+
{"version":3,"names":["Box","jsx","_jsx","GlassFallback","children","interactive","_interactive","tint","props","borderRadius","bg"],"sourceRoot":"../../../../src","sources":["atoms/glass-view/glass-fallback.tsx"],"mappings":";;AAAA,SAAQA,GAAG,QAAO,iBAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG1B;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAACC,QAAQ;EAAEC,WAAW,EAAEC,YAAY;EAAEC,IAAI;EAAE,GAAGC;AAAqB,CAAC,kBACjGN,IAAA,CAACF,GAAG;EAACS,YAAY,EAAC,MAAM;EAAA,GAAKD,KAAK;EAAEE,EAAE,EAAEH,IAAI,IAAI,mBAAoB;EAAAH,QAAA,EACjEA;AAAQ,CACN,CACN","ignoreList":[]}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { iconResourceName } from '@hzblj/kara-native';
|
|
4
|
+
import { DrawableIcon } from '@hzblj/kara-native/jetpack-compose';
|
|
4
5
|
import { spacing, useAppTheme } from '@hzblj/kara-theme';
|
|
5
6
|
import { useHostGuard } from "../../host-context.js";
|
|
6
|
-
import { RnView } from "../rn-view/index.js";
|
|
7
|
-
import { MATERIAL_ICONS } from "./icon-names.js";
|
|
8
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
/** The app's icon as the vector drawable the config plugin generated from the SVG, drawn by Material's `Icon`. */
|
|
9
9
|
export const Icon = ({
|
|
10
|
+
accessibilityLabel,
|
|
10
11
|
color = 'content.primary',
|
|
11
12
|
name,
|
|
12
|
-
size = 's24'
|
|
13
|
-
testID
|
|
13
|
+
size = 's24'
|
|
14
14
|
}) => {
|
|
15
15
|
useHostGuard('Icon');
|
|
16
16
|
const theme = useAppTheme();
|
|
17
|
-
return /*#__PURE__*/_jsx(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
testID: testID
|
|
23
|
-
})
|
|
17
|
+
return /*#__PURE__*/_jsx(DrawableIcon, {
|
|
18
|
+
accessibilityLabel: accessibilityLabel,
|
|
19
|
+
iconColor: theme.color(color),
|
|
20
|
+
iconSize: spacing[size],
|
|
21
|
+
resourceName: iconResourceName(name)
|
|
24
22
|
});
|
|
25
23
|
};
|
|
26
24
|
//# sourceMappingURL=icon.android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["iconResourceName","DrawableIcon","spacing","useAppTheme","useHostGuard","jsx","_jsx","Icon","accessibilityLabel","color","name","size","theme","iconColor","iconSize","resourceName"],"sourceRoot":"../../../../src","sources":["atoms/icon/icon.android.tsx"],"mappings":";;AAAA,SAAQA,gBAAgB,QAAO,oBAAoB;AACnD,SAAQC,YAAY,QAAO,oCAAoC;AAC/D,SAAQC,OAAO,EAAEC,WAAW,QAAO,mBAAmB;AAEtD,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C;AACA,OAAO,MAAMC,IAAmB,GAAGA,CAAC;EAACC,kBAAkB;EAAEC,KAAK,GAAG,iBAAiB;EAAEC,IAAI;EAAEC,IAAI,GAAG;AAAgB,CAAC,KAAK;EACrHP,YAAY,CAAC,MAAM,CAAC;EACpB,MAAMQ,KAAK,GAAGT,WAAW,CAAC,CAAC;EAE3B,oBACEG,IAAA,CAACL,YAAY;IACXO,kBAAkB,EAAEA,kBAAmB;IACvCK,SAAS,EAAED,KAAK,CAACH,KAAK,CAACA,KAAK,CAAE;IAC9BK,QAAQ,EAAEZ,OAAO,CAACS,IAAI,CAAE;IACxBI,YAAY,EAAEf,gBAAgB,CAACU,IAAI;EAAE,CACtC,CAAC;AAEN,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Image } from '@expo/ui/swift-ui';
|
|
4
|
+
import { accessibilityHidden, frame, accessibilityLabel as labelModifier, resizable } from '@expo/ui/swift-ui/modifiers';
|
|
5
|
+
import { iconResourceName } from '@hzblj/kara-native';
|
|
4
6
|
import { spacing, useAppTheme } from '@hzblj/kara-theme';
|
|
7
|
+
import { useMemo } from 'react';
|
|
5
8
|
import { useHostGuard } from "../../host-context.js";
|
|
6
|
-
import { SF_SYMBOLS } from "./icon-names.js";
|
|
7
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
/**
|
|
11
|
+
* The app's icon from its asset catalog — the template image set the config plugin generated from the SVG, vector data
|
|
12
|
+
* kept, so `resizable()` scales it crisply to the token size and the platform tints it.
|
|
13
|
+
*/
|
|
8
14
|
export const Icon = ({
|
|
15
|
+
accessibilityLabel,
|
|
9
16
|
color = 'content.primary',
|
|
10
17
|
name,
|
|
11
18
|
size = 's24',
|
|
@@ -13,10 +20,15 @@ export const Icon = ({
|
|
|
13
20
|
}) => {
|
|
14
21
|
useHostGuard('Icon');
|
|
15
22
|
const theme = useAppTheme();
|
|
23
|
+
const side = spacing[size];
|
|
24
|
+
const modifiers = useMemo(() => [resizable(), frame({
|
|
25
|
+
height: side,
|
|
26
|
+
width: side
|
|
27
|
+
}), accessibilityLabel ? labelModifier(accessibilityLabel) : accessibilityHidden(true)], [accessibilityLabel, side]);
|
|
16
28
|
return /*#__PURE__*/_jsx(Image, {
|
|
29
|
+
assetName: iconResourceName(name),
|
|
17
30
|
color: theme.color(color),
|
|
18
|
-
|
|
19
|
-
systemName: SF_SYMBOLS[name],
|
|
31
|
+
modifiers: modifiers,
|
|
20
32
|
testID: testID
|
|
21
33
|
});
|
|
22
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Image","spacing","useAppTheme","
|
|
1
|
+
{"version":3,"names":["Image","accessibilityHidden","frame","accessibilityLabel","labelModifier","resizable","iconResourceName","spacing","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Icon","color","name","size","testID","theme","side","modifiers","height","width","assetName"],"sourceRoot":"../../../../src","sources":["atoms/icon/icon.ios.tsx"],"mappings":";;AAAA,SAAQA,KAAK,QAAO,mBAAmB;AACvC,SAAQC,mBAAmB,EAAEC,KAAK,EAAEC,kBAAkB,IAAIC,aAAa,EAAEC,SAAS,QAAO,6BAA6B;AACtH,SAAQC,gBAAgB,QAAO,oBAAoB;AACnD,SAAQC,OAAO,EAAEC,WAAW,QAAO,mBAAmB;AACtD,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C;AACA;AACA;AACA;AACA,OAAO,MAAMC,IAAmB,GAAGA,CAAC;EAClCV,kBAAkB;EAClBW,KAAK,GAAG,iBAAiB;EACzBC,IAAI;EACJC,IAAI,GAAG,KAAK;EACZC;AACS,CAAC,KAAK;EACfP,YAAY,CAAC,MAAM,CAAC;EACpB,MAAMQ,KAAK,GAAGV,WAAW,CAAC,CAAC;EAC3B,MAAMW,IAAI,GAAGZ,OAAO,CAACS,IAAI,CAAC;EAE1B,MAAMI,SAAS,GAAGX,OAAO,CACvB,MAAM,CACJJ,SAAS,CAAC,CAAC,EACXH,KAAK,CAAC;IAACmB,MAAM,EAAEF,IAAI;IAAEG,KAAK,EAAEH;EAAI,CAAC,CAAC,EAClChB,kBAAkB,GAAGC,aAAa,CAACD,kBAAkB,CAAC,GAAGF,mBAAmB,CAAC,IAAI,CAAC,CACnF,EACD,CAACE,kBAAkB,EAAEgB,IAAI,CAC3B,CAAC;EAED,oBAAOP,IAAA,CAACZ,KAAK;IAACuB,SAAS,EAAEjB,gBAAgB,CAACS,IAAI,CAAE;IAACD,KAAK,EAAEI,KAAK,CAACJ,KAAK,CAACA,KAAK,CAAE;IAACM,SAAS,EAAEA,SAAU;IAACH,MAAM,EAAEA;EAAO,CAAE,CAAC;AACtH,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["atoms/icon/index.ts"],"mappings":";;AAAA,cAAc,QAAQ;AACtB,cAAc,iBAAc
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["atoms/icon/index.ts"],"mappings":";;AAAA,cAAc,QAAQ;AACtB,cAAc,iBAAc","ignoreList":[]}
|
|
@@ -9,7 +9,6 @@ export * from "./card/index.js";
|
|
|
9
9
|
export * from "./checkbox/index.js";
|
|
10
10
|
export * from "./chip/index.js";
|
|
11
11
|
export * from "./color-picker/index.js";
|
|
12
|
-
export * from "./countdown/index.js";
|
|
13
12
|
export * from "./date-picker/index.js";
|
|
14
13
|
export * from "./divider/index.js";
|
|
15
14
|
export * from "./fab/index.js";
|
|
@@ -25,6 +24,7 @@ export * from "./picker/index.js";
|
|
|
25
24
|
export * from "./pressable/index.js";
|
|
26
25
|
export * from "./progress/index.js";
|
|
27
26
|
export * from "./rn-flat-list/index.js";
|
|
27
|
+
export * from "./rn-icon/index.js";
|
|
28
28
|
export * from "./rn-scroll-view/index.js";
|
|
29
29
|
export * from "./rn-section-list/index.js";
|
|
30
30
|
export * from "./rn-text/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;AAAA,cAAc,+BAAsB;AACpC,cAAc,mBAAU;AACxB,cAAc,kBAAS;AACvB,cAAc,gBAAO;AACrB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,iBAAQ;AACtB,cAAc,yBAAgB;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;AAAA,cAAc,+BAAsB;AACpC,cAAc,mBAAU;AACxB,cAAc,kBAAS;AACvB,cAAc,gBAAO;AACrB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,iBAAQ;AACtB,cAAc,yBAAgB;AAC9B,cAAc,wBAAe;AAC7B,cAAc,oBAAW;AACzB,cAAc,gBAAO;AACrB,cAAc,uBAAc;AAC5B,cAAc,uBAAc;AAC5B,cAAc,oBAAW;AACzB,cAAc,iBAAQ;AACtB,cAAc,wBAAe;AAC7B,cAAc,kBAAS;AACvB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,mBAAU;AACxB,cAAc,sBAAa;AAC3B,cAAc,qBAAY;AAC1B,cAAc,yBAAgB;AAC9B,cAAc,oBAAW;AACzB,cAAc,2BAAkB;AAChC,cAAc,4BAAmB;AACjC,cAAc,oBAAW;AACzB,cAAc,oBAAW;AACzB,cAAc,wBAAe;AAC7B,cAAc,8BAAqB;AACnC,cAAc,qBAAY;AAC1B,cAAc,mBAAU;AACxB,cAAc,mBAAU;AACxB,cAAc,oBAAW;AACzB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,uBAAc;AAC5B,cAAc,oBAAW;AACzB,cAAc,oBAAW","ignoreList":[]}
|