@channel.io/bezier-react 3.5.2-beta.2 → 3.5.2-beta.4
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/dist/cjs/components/AlphaAvatar/Avatar.js +1 -3
- package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js +1 -1
- package/dist/cjs/components/AlphaStatusBadge/StatusBadge.js.map +1 -1
- package/dist/cjs/components/AppProvider/AppProvider.js +5 -1
- package/dist/cjs/components/AppProvider/AppProvider.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js +1 -2
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AvatarGroup/AvatarGroup.js +1 -1
- package/dist/cjs/components/BetaTokenProvider/TokenProvider.js +38 -0
- package/dist/cjs/components/BetaTokenProvider/TokenProvider.js.map +1 -0
- package/dist/cjs/components/Status/Status.js.map +1 -1
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js +20 -7
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/darkTheme.js +1589 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/darkTheme.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/global.js +952 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/global.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/index.js +14 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/index.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/lightTheme.js +1589 -0
- package/dist/cjs/packages/bezier-tokens/dist/beta/esm/lightTheme.js.map +1 -0
- package/dist/cjs/styles.css +1 -1
- package/dist/cjs/types/props-helpers.js.map +1 -1
- package/dist/cjs/utils/style.js +3 -1
- package/dist/cjs/utils/style.js.map +1 -1
- package/dist/esm/components/AlphaAvatar/Avatar.mjs +1 -3
- package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs +1 -1
- package/dist/esm/components/AlphaStatusBadge/StatusBadge.mjs.map +1 -1
- package/dist/esm/components/AppProvider/AppProvider.mjs +5 -1
- package/dist/esm/components/AppProvider/AppProvider.mjs.map +1 -1
- package/dist/esm/components/Avatar/Avatar.mjs +1 -2
- package/dist/esm/components/Avatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AvatarGroup/AvatarGroup.mjs +1 -1
- package/dist/esm/components/BetaTokenProvider/TokenProvider.mjs +35 -0
- package/dist/esm/components/BetaTokenProvider/TokenProvider.mjs.map +1 -0
- package/dist/esm/components/Status/Status.mjs.map +1 -1
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs +20 -8
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/darkTheme.mjs +1585 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/darkTheme.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/global.mjs +948 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/global.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/index.mjs +12 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/index.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/lightTheme.mjs +1585 -0
- package/dist/esm/packages/bezier-tokens/dist/beta/esm/lightTheme.mjs.map +1 -0
- package/dist/esm/styles.css +1 -1
- package/dist/esm/types/props-helpers.mjs.map +1 -1
- package/dist/esm/utils/style.mjs +3 -1
- package/dist/esm/utils/style.mjs.map +1 -1
- package/dist/types/components/AlphaAvatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/AppProvider/AppProvider.d.ts.map +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/BetaTokenProvider/TokenProvider.d.ts +8 -0
- package/dist/types/components/BetaTokenProvider/TokenProvider.d.ts.map +1 -0
- package/dist/types/components/BetaTokenProvider/TokenProvider.types.d.ts +14 -0
- package/dist/types/components/BetaTokenProvider/TokenProvider.types.d.ts.map +1 -0
- package/dist/types/components/BetaTokenProvider/index.d.ts +3 -0
- package/dist/types/components/BetaTokenProvider/index.d.ts.map +1 -0
- package/dist/types/components/Select/Select.types.d.ts +2 -2
- package/dist/types/components/Select/Select.types.d.ts.map +1 -1
- package/dist/types/components/SmoothCornersBox/SmoothCornersBox.types.d.ts +3 -3
- package/dist/types/components/SmoothCornersBox/SmoothCornersBox.types.d.ts.map +1 -1
- package/dist/types/components/Text/Text.types.d.ts +2 -2
- package/dist/types/components/Text/Text.types.d.ts.map +1 -1
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts +5 -0
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/components/ThemeProvider/index.d.ts +1 -1
- package/dist/types/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/beta-tokens.d.ts +21 -21
- package/dist/types/types/beta-tokens.d.ts.map +1 -1
- package/dist/types/types/props-helpers.d.ts +3 -3
- package/dist/types/types/props-helpers.d.ts.map +1 -1
- package/dist/types/types/props.d.ts +9 -9
- package/dist/types/types/props.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +1 -1
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/utils/style.d.ts +2 -2
- package/dist/types/utils/style.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/AlphaAvatar/Avatar.tsx +1 -3
- package/src/components/AlphaStatusBadge/StatusBadge.tsx +3 -3
- package/src/components/AppProvider/AppProvider.tsx +4 -1
- package/src/components/Avatar/Avatar.tsx +1 -2
- package/src/components/BetaTokenProvider/TokenProvider.tsx +50 -0
- package/src/components/BetaTokenProvider/TokenProvider.types.ts +20 -0
- package/src/components/BetaTokenProvider/index.ts +6 -0
- package/src/components/Icon/Icon.stories.tsx +5 -5
- package/src/components/Select/Select.types.ts +2 -2
- package/src/components/SmoothCornersBox/SmoothCornersBox.types.ts +3 -3
- package/src/components/Status/Status.tsx +2 -2
- package/src/components/Text/Text.types.ts +2 -2
- package/src/components/ThemeProvider/ThemeProvider.tsx +22 -8
- package/src/components/ThemeProvider/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/types/beta-tokens.ts +47 -27
- package/src/types/props-helpers.ts +6 -6
- package/src/types/props.ts +15 -15
- package/src/types/utils.ts +5 -1
- package/src/utils/style.test.ts +3 -0
- package/src/utils/style.ts +8 -6
|
@@ -8,7 +8,6 @@ var defaultAvatar = require('./assets/default-avatar.svg.js');
|
|
|
8
8
|
var useProgressiveImage = require('./useProgressiveImage.js');
|
|
9
9
|
var Avatar_module = require('./Avatar.module.scss.js');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
-
var ThemeProvider = require('../ThemeProvider/ThemeProvider.js');
|
|
12
11
|
var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
|
|
13
12
|
var Status = require('../Status/Status.js');
|
|
14
13
|
|
|
@@ -38,8 +37,7 @@ function getShadow(size) {
|
|
|
38
37
|
};
|
|
39
38
|
}
|
|
40
39
|
function useAvatarRadiusToken() {
|
|
41
|
-
|
|
42
|
-
return ThemeProvider.useTokens().global.radius['radius-42-p'];
|
|
40
|
+
return '42%';
|
|
43
41
|
}
|
|
44
42
|
const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper';
|
|
45
43
|
const AVATAR_TEST_ID = 'bezier-avatar';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/AlphaAvatar/Avatar.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, isValidElement, useMemo } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useAvatarContext } from '~/src/components/AlphaAvatar/AvatarSizeContext'\nimport {\n SmoothCornersBox,\n type SmoothCornersBoxProps,\n} from '~/src/components/SmoothCornersBox'\nimport { Status, type StatusSize } from '~/src/components/Status'\
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/AlphaAvatar/Avatar.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, isValidElement, useMemo } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useAvatarContext } from '~/src/components/AlphaAvatar/AvatarSizeContext'\nimport {\n SmoothCornersBox,\n type SmoothCornersBoxProps,\n} from '~/src/components/SmoothCornersBox'\nimport { Status, type StatusSize } from '~/src/components/Status'\n\nimport type { AvatarProps, AvatarSize } from './Avatar.types'\nimport defaultAvatarUrl from './assets/default-avatar.svg'\nimport useProgressiveImage from './useProgressiveImage'\n\nimport styles from './Avatar.module.scss'\n\nfunction getStatusSize(size: AvatarSize): StatusSize {\n switch (size) {\n case '90':\n case '120':\n return 'l'\n default:\n return 'm'\n }\n}\n\nfunction getShadow(size: AvatarSize): SmoothCornersBoxProps['shadow'] {\n const spreadRadius = (() => {\n switch (size) {\n case '90':\n return 3\n case '120':\n return 4\n default:\n return 2\n }\n })()\n\n return {\n spreadRadius,\n color: 'surface-higher',\n }\n}\n\nexport function useAvatarRadiusToken() {\n return '42%' as const\n}\n\nexport const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper'\nconst AVATAR_TEST_ID = 'bezier-avatar'\nconst STATUS_WRAPPER_TEST_ID = 'bezier-status-wrapper'\n\n/**\n * `Avatar` is a component for representing some profile image.\n * @example\n *\n * ```tsx\n * <Avatar\n * avatarUrl=\"https://...\"\n * name=\"channel\"\n * size=\"48\"\n * showBorder\n * disabled\n * />\n * ```\n */\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n avatarUrl = '',\n fallbackUrl = defaultAvatarUrl,\n size: sizeProps = '24',\n name,\n disabled = false,\n showBorder = false,\n smoothCorners = true,\n status,\n className,\n children,\n ...rest\n },\n forwardedRef\n) {\n const avatarGroupContext = useAvatarContext()\n const size = avatarGroupContext?.size ?? sizeProps\n const loadedAvatarUrl = useProgressiveImage(avatarUrl, fallbackUrl)\n const AVATAR_BORDER_RADIUS = useAvatarRadiusToken()\n\n const StatusComponent = useMemo(() => {\n if (\n (isEmpty(children) && !status) ||\n (children && !isValidElement(children))\n ) {\n return null\n }\n\n const Contents = (() => {\n if (children) {\n return children\n }\n if (status) {\n return (\n <Status\n type={status}\n size={getStatusSize(size)}\n />\n )\n }\n return null\n })()\n\n return (\n Contents && (\n <div\n className={styles.StatusWrapper}\n data-testid={STATUS_WRAPPER_TEST_ID}\n >\n {Contents}\n </div>\n )\n )\n }, [status, size, children])\n\n return (\n <div\n className={classNames(\n styles.Avatar,\n styles[`size-${size}`],\n disabled && styles.disabled,\n className\n )}\n data-disabled={disabled}\n data-testid={AVATAR_WRAPPER_TEST_ID}\n {...rest}\n >\n <SmoothCornersBox\n ref={forwardedRef}\n aria-description={name}\n className={classNames(\n styles.AvatarImage,\n Number(size) >= 72 && styles['big-size'],\n showBorder && styles.bordered\n )}\n disabled={!smoothCorners}\n borderRadius={AVATAR_BORDER_RADIUS}\n shadow={showBorder ? getShadow(size) : undefined}\n backgroundColor=\"surface\"\n backgroundImage={loadedAvatarUrl}\n data-testid={AVATAR_TEST_ID}\n >\n {StatusComponent}\n </SmoothCornersBox>\n </div>\n )\n})\n"],"names":["getStatusSize","size","getShadow","spreadRadius","color","useAvatarRadiusToken","AVATAR_WRAPPER_TEST_ID","AVATAR_TEST_ID","STATUS_WRAPPER_TEST_ID","Avatar","forwardRef","avatarUrl","fallbackUrl","defaultAvatarUrl","sizeProps","name","disabled","showBorder","smoothCorners","status","className","children","rest","forwardedRef","_avatarGroupContext$s","avatarGroupContext","useAvatarContext","loadedAvatarUrl","useProgressiveImage","AVATAR_BORDER_RADIUS","StatusComponent","useMemo","isEmpty","isValidElement","Contents","_jsx","Status","type","styles","StatusWrapper","classNames","SmoothCornersBox","ref","AvatarImage","Number","bordered","borderRadius","shadow","undefined","backgroundColor","backgroundImage"],"mappings":"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"}
|
|
@@ -8,10 +8,10 @@ var style = require('../../utils/style.js');
|
|
|
8
8
|
var AvatarSizeContext = require('../AlphaAvatar/AvatarSizeContext.js');
|
|
9
9
|
var AvatarGroup_module = require('./AvatarGroup.module.scss.js');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
-
var Avatar = require('../AlphaAvatar/Avatar.js');
|
|
12
11
|
var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
|
|
13
12
|
var Icon = require('../Icon/Icon.js');
|
|
14
13
|
var Text = require('../Text/Text.js');
|
|
14
|
+
var Avatar = require('../AlphaAvatar/Avatar.js');
|
|
15
15
|
|
|
16
16
|
function _interopNamespaceDefault(e) {
|
|
17
17
|
var n = Object.create(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.js","sources":["../../../../src/components/AlphaStatusBadge/StatusBadge.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSProperties, forwardRef } from 'react'\n\nimport { MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type
|
|
1
|
+
{"version":3,"file":"StatusBadge.js","sources":["../../../../src/components/AlphaStatusBadge/StatusBadge.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSProperties, forwardRef } from 'react'\n\nimport { MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type BetaSemanticColor } from '~/src/types/beta-tokens'\nimport { betaTokenCssVar } from '~/src/utils/style'\n\nimport { Icon } from '~/src/components/Icon'\n\nimport { type StatusBadgeProps } from './StatusBadge.types'\n\nimport styles from './StatusBadge.module.scss'\n\n// TODO: Change to use AlphaIcon and alpha color tokens\n\n/**\n * `StatusBadge` is a component to indicate user status.\n * @example\n *\n * ```tsx\n * <StatusBadge\n * size=\"m\"\n * online\n * doNotDisturb\n * />\n * ```\n */\nexport const StatusBadge = forwardRef<HTMLDivElement, StatusBadgeProps>(\n function StatusBadge(\n {\n size = 'm',\n online = false,\n doNotDisturb = false,\n style,\n className,\n ...rest\n },\n forwardedRef\n ) {\n const iconColor: BetaSemanticColor = online\n ? 'text-accent-green'\n : doNotDisturb\n ? 'text-accent-yellow'\n : 'fill-neutral-heavy'\n const backgroundColor: BetaSemanticColor = doNotDisturb\n ? 'surface-high'\n : iconColor\n\n return (\n <div\n ref={forwardedRef}\n style={\n {\n '--b-status-bg-color': betaTokenCssVar(backgroundColor),\n ...style,\n } as CSSProperties\n }\n className={classNames(\n styles.StatusBadge,\n styles[`size-${size}`],\n className\n )}\n {...rest}\n >\n {doNotDisturb && (\n <Icon\n source={MoonFilledIcon}\n size={size === 'm' ? 'xxxs' : 'xs'}\n color={iconColor}\n className={styles.Icon}\n />\n )}\n </div>\n )\n }\n)\n"],"names":["StatusBadge","forwardRef","size","online","doNotDisturb","style","className","rest","forwardedRef","iconColor","backgroundColor","_jsx","ref","betaTokenCssVar","classNames","styles","children","Icon","source","MoonFilledIcon","color"],"mappings":";;;;;;;;;;MA8BaA,WAAW,gBAAGC,gBAAU,CACnC,SAASD,WAAWA,CAClB;AACEE,EAAAA,IAAI,GAAG,GAAG;AACVC,EAAAA,MAAM,GAAG,KAAK;AACdC,EAAAA,YAAY,GAAG,KAAK;SACpBC,OAAK;EACLC,SAAS;EACT,GAAGC;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,SAA4B,GAAGN,MAAM,GACvC,mBAAmB,GACnBC,YAAY,GACV,oBAAoB,GACpB,oBAAoB;AAC1B,EAAA,MAAMM,eAAkC,GAAGN,YAAY,GACnD,cAAc,GACdK,SAAS;AAEb,EAAA,oBACEE,cAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,GAAG,EAAEJ,YAAa;AAClBH,IAAAA,KAAK,EACH;AACE,MAAA,qBAAqB,EAAEQ,qBAAe,CAACH,eAAe,CAAC;MACvD,GAAGL;KAEN;AACDC,IAAAA,SAAS,EAAEQ,aAAU,CACnBC,0BAAM,CAACf,WAAW,EAClBe,0BAAM,CAAC,QAAQb,IAAI,CAAA,CAAE,CAAC,EACtBI,SACF,CAAE;AAAA,IAAA,GACEC,IAAI;AAAAS,IAAAA,QAAA,EAEPZ,YAAY,iBACXO,cAAA,CAACM,SAAI,EAAA;AACHC,MAAAA,MAAM,EAAEC,0BAAe;AACvBjB,MAAAA,IAAI,EAAEA,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,IAAK;AACnCkB,MAAAA,KAAK,EAAEX,SAAU;MACjBH,SAAS,EAAES,0BAAM,CAACE;KACnB;AACF,GACE,CAAC;AAEV,CACF;;;;"}
|
|
@@ -7,6 +7,7 @@ var WindowProvider = require('../WindowProvider/WindowProvider.js');
|
|
|
7
7
|
var FeatureProvider = require('../FeatureProvider/FeatureProvider.js');
|
|
8
8
|
var TokenProvider = require('../TokenProvider/TokenProvider.js');
|
|
9
9
|
var TokenProvider$1 = require('../AlphaTokenProvider/TokenProvider.js');
|
|
10
|
+
var TokenProvider$2 = require('../BetaTokenProvider/TokenProvider.js');
|
|
10
11
|
|
|
11
12
|
const defaultWindow = ssrWindow_esm.getWindow();
|
|
12
13
|
|
|
@@ -51,7 +52,10 @@ function AppProvider({
|
|
|
51
52
|
themeName: themeName,
|
|
52
53
|
children: /*#__PURE__*/jsxRuntime.jsx(TokenProvider$1.TokenProvider, {
|
|
53
54
|
themeName: themeName,
|
|
54
|
-
children:
|
|
55
|
+
children: /*#__PURE__*/jsxRuntime.jsx(TokenProvider$2.TokenProvider, {
|
|
56
|
+
themeName: themeName,
|
|
57
|
+
children: children
|
|
58
|
+
})
|
|
55
59
|
})
|
|
56
60
|
})
|
|
57
61
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppProvider.js","sources":["../../../../src/components/AppProvider/AppProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\n\nimport { getWindow } from 'ssr-window'\n\nimport { AlphaTokenProvider } from '~/src/components/AlphaTokenProvider'\nimport { FeatureProvider } from '~/src/components/FeatureProvider'\nimport { TokenProvider } from '~/src/components/TokenProvider'\nimport { WindowProvider } from '~/src/components/WindowProvider'\n\nimport { type AppProviderProps } from './AppProvider.types'\n\nconst defaultWindow = getWindow()\n\n/**\n * `AppProvider` is a required wrapper component that provides context for the app.\n * @example\n *\n * ```tsx\n * import React from 'react'\n * import { createRoot } from 'react-dom/client'\n * import { AppProvider } from '@channel.io/bezier-react'\n *\n * const container = document.getElementById('root')\n * const root = createRoot(container)\n *\n * root.render(\n * <AppProvider themeName=\"light\">\n * <App />\n * </AppProvider>,\n * )\n * ```\n */\nexport function AppProvider({\n children,\n themeName = 'light',\n features = [],\n window = defaultWindow,\n}: AppProviderProps) {\n useEffect(\n function updateRootThemeDataAttribute() {\n const rootElement = window.document.documentElement\n // TODO: Change data attribute constant to import from bezier-tokens\n rootElement.setAttribute('data-bezier-theme', themeName)\n return function cleanup() {\n rootElement.removeAttribute('data-bezier-theme')\n }\n },\n [window, themeName]\n )\n\n return (\n <WindowProvider window={window}>\n <FeatureProvider features={features}>\n <TokenProvider themeName={themeName}>\n <AlphaTokenProvider themeName={themeName}>\n {children}\n </AlphaTokenProvider>\n </TokenProvider>\n </FeatureProvider>\n </WindowProvider>\n )\n}\n"],"names":["defaultWindow","getWindow","AppProvider","children","themeName","features","window","useEffect","updateRootThemeDataAttribute","rootElement","document","documentElement","setAttribute","cleanup","removeAttribute","_jsx","WindowProvider","FeatureProvider","TokenProvider","AlphaTokenProvider"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppProvider.js","sources":["../../../../src/components/AppProvider/AppProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\n\nimport { getWindow } from 'ssr-window'\n\nimport { AlphaTokenProvider } from '~/src/components/AlphaTokenProvider'\nimport { BetaTokenProvider } from '~/src/components/BetaTokenProvider'\nimport { FeatureProvider } from '~/src/components/FeatureProvider'\nimport { TokenProvider } from '~/src/components/TokenProvider'\nimport { WindowProvider } from '~/src/components/WindowProvider'\n\nimport { type AppProviderProps } from './AppProvider.types'\n\nconst defaultWindow = getWindow()\n\n/**\n * `AppProvider` is a required wrapper component that provides context for the app.\n * @example\n *\n * ```tsx\n * import React from 'react'\n * import { createRoot } from 'react-dom/client'\n * import { AppProvider } from '@channel.io/bezier-react'\n *\n * const container = document.getElementById('root')\n * const root = createRoot(container)\n *\n * root.render(\n * <AppProvider themeName=\"light\">\n * <App />\n * </AppProvider>,\n * )\n * ```\n */\nexport function AppProvider({\n children,\n themeName = 'light',\n features = [],\n window = defaultWindow,\n}: AppProviderProps) {\n useEffect(\n function updateRootThemeDataAttribute() {\n const rootElement = window.document.documentElement\n // TODO: Change data attribute constant to import from bezier-tokens\n rootElement.setAttribute('data-bezier-theme', themeName)\n return function cleanup() {\n rootElement.removeAttribute('data-bezier-theme')\n }\n },\n [window, themeName]\n )\n\n return (\n <WindowProvider window={window}>\n <FeatureProvider features={features}>\n <TokenProvider themeName={themeName}>\n <AlphaTokenProvider themeName={themeName}>\n <BetaTokenProvider themeName={themeName}>\n {children}\n </BetaTokenProvider>\n </AlphaTokenProvider>\n </TokenProvider>\n </FeatureProvider>\n </WindowProvider>\n )\n}\n"],"names":["defaultWindow","getWindow","AppProvider","children","themeName","features","window","useEffect","updateRootThemeDataAttribute","rootElement","document","documentElement","setAttribute","cleanup","removeAttribute","_jsx","WindowProvider","FeatureProvider","TokenProvider","AlphaTokenProvider","BetaTokenProvider"],"mappings":";;;;;;;;;;;AAcA,MAAMA,aAAa,GAAGC,uBAAS,EAAE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAAC;EAC1BC,QAAQ;AACRC,EAAAA,SAAS,GAAG,OAAO;AACnBC,EAAAA,QAAQ,GAAG,EAAE;AACbC,EAAAA,MAAM,GAAGN;AACO,CAAC,EAAE;AACnBO,EAAAA,eAAS,CACP,SAASC,4BAA4BA,GAAG;AACtC,IAAA,MAAMC,WAAW,GAAGH,MAAM,CAACI,QAAQ,CAACC,eAAe;AACnD;AACAF,IAAAA,WAAW,CAACG,YAAY,CAAC,mBAAmB,EAAER,SAAS,CAAC;IACxD,OAAO,SAASS,OAAOA,GAAG;AACxBJ,MAAAA,WAAW,CAACK,eAAe,CAAC,mBAAmB,CAAC;KACjD;AACH,GAAC,EACD,CAACR,MAAM,EAAEF,SAAS,CACpB,CAAC;EAED,oBACEW,cAAA,CAACC,6BAAc,EAAA;AAACV,IAAAA,MAAM,EAAEA,MAAO;IAAAH,QAAA,eAC7BY,cAAA,CAACE,+BAAe,EAAA;AAACZ,MAAAA,QAAQ,EAAEA,QAAS;MAAAF,QAAA,eAClCY,cAAA,CAACG,2BAAa,EAAA;AAACd,QAAAA,SAAS,EAAEA,SAAU;QAAAD,QAAA,eAClCY,cAAA,CAACI,6BAAkB,EAAA;AAACf,UAAAA,SAAS,EAAEA,SAAU;UAAAD,QAAA,eACvCY,cAAA,CAACK,6BAAiB,EAAA;AAAChB,YAAAA,SAAS,EAAEA,SAAU;AAAAD,YAAAA,QAAA,EACrCA;WACgB;SACD;OACP;KACA;AAAC,GACJ,CAAC;AAErB;;;;"}
|
|
@@ -7,7 +7,6 @@ var defaultAvatar = require('./assets/default-avatar.svg.js');
|
|
|
7
7
|
var useProgressiveImage = require('./useProgressiveImage.js');
|
|
8
8
|
var Avatar_module = require('./Avatar.module.scss.js');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
var ThemeProvider = require('../ThemeProvider/ThemeProvider.js');
|
|
11
10
|
var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
|
|
12
11
|
var Status = require('../Status/Status.js');
|
|
13
12
|
|
|
@@ -16,7 +15,7 @@ const shadow = {
|
|
|
16
15
|
color: 'surface-high'
|
|
17
16
|
};
|
|
18
17
|
function useAvatarRadiusToken() {
|
|
19
|
-
return
|
|
18
|
+
return '42%';
|
|
20
19
|
}
|
|
21
20
|
const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper';
|
|
22
21
|
const AVATAR_TEST_ID = 'bezier-avatar';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, isValidElement, useMemo } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport {\n SmoothCornersBox,\n type SmoothCornersBoxProps,\n} from '~/src/components/SmoothCornersBox'\nimport { Status, type StatusSize } from '~/src/components/Status'\
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, isValidElement, useMemo } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport {\n SmoothCornersBox,\n type SmoothCornersBoxProps,\n} from '~/src/components/SmoothCornersBox'\nimport { Status, type StatusSize } from '~/src/components/Status'\n\nimport type { AvatarProps } from './Avatar.types'\nimport defaultAvatarUrl from './assets/default-avatar.svg'\nimport useProgressiveImage from './useProgressiveImage'\n\nimport styles from './Avatar.module.scss'\n\nconst shadow: SmoothCornersBoxProps['shadow'] = {\n spreadRadius: 2,\n color: 'surface-high',\n}\n\nexport function useAvatarRadiusToken() {\n return '42%' as const\n}\n\nexport const AVATAR_WRAPPER_TEST_ID = 'bezier-avatar-wrapper'\nconst AVATAR_TEST_ID = 'bezier-avatar'\nconst STATUS_WRAPPER_TEST_ID = 'bezier-status-wrapper'\n\n/**\n * `Avatar` is a component for representing some profile image.\n * @example\n *\n * ```tsx\n * <Avatar\n * avatarUrl=\"https://...\"\n * name=\"channel\"\n * size=\"48\"\n * showBorder\n * disabled\n * />\n * ```\n */\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n avatarUrl = '',\n fallbackUrl = defaultAvatarUrl,\n size = '24',\n name,\n disabled = false,\n showBorder = false,\n smoothCorners = true,\n status,\n className,\n children,\n ...rest\n },\n forwardedRef\n) {\n const loadedAvatarUrl = useProgressiveImage(avatarUrl, fallbackUrl)\n const AVATAR_BORDER_RADIUS = useAvatarRadiusToken()\n\n const StatusComponent = useMemo(() => {\n if (\n (isEmpty(children) && !status) ||\n (children && !isValidElement(children))\n ) {\n return null\n }\n\n const statusSize: StatusSize = (() => {\n switch (size) {\n case '90':\n case '120':\n return 'l'\n default:\n return 'm'\n }\n })()\n\n const Contents = (() => {\n if (children) {\n return children\n }\n if (status) {\n return (\n <Status\n type={status}\n size={statusSize}\n />\n )\n }\n return null\n })()\n\n return (\n Contents && (\n <div\n className={styles.StatusWrapper}\n data-testid={STATUS_WRAPPER_TEST_ID}\n >\n {Contents}\n </div>\n )\n )\n }, [status, size, children])\n\n return (\n <div\n className={classNames(\n styles.Avatar,\n styles[`size-${size}`],\n disabled && styles.disabled,\n className\n )}\n data-disabled={disabled}\n data-testid={AVATAR_WRAPPER_TEST_ID}\n {...rest}\n >\n <SmoothCornersBox\n ref={forwardedRef}\n aria-description={name}\n className={classNames(\n styles.AvatarImage,\n Number(size) >= 72 && styles['big-size'],\n showBorder && styles.bordered\n )}\n disabled={!smoothCorners}\n borderRadius={AVATAR_BORDER_RADIUS}\n shadow={showBorder ? shadow : undefined}\n backgroundColor=\"surface\"\n backgroundImage={loadedAvatarUrl}\n data-testid={AVATAR_TEST_ID}\n >\n {StatusComponent}\n </SmoothCornersBox>\n </div>\n )\n})\n"],"names":["shadow","spreadRadius","color","useAvatarRadiusToken","AVATAR_WRAPPER_TEST_ID","AVATAR_TEST_ID","STATUS_WRAPPER_TEST_ID","Avatar","forwardRef","avatarUrl","fallbackUrl","defaultAvatarUrl","size","name","disabled","showBorder","smoothCorners","status","className","children","rest","forwardedRef","loadedAvatarUrl","useProgressiveImage","AVATAR_BORDER_RADIUS","StatusComponent","useMemo","isEmpty","isValidElement","statusSize","Contents","_jsx","Status","type","styles","StatusWrapper","classNames","SmoothCornersBox","ref","AvatarImage","Number","bordered","borderRadius","undefined","backgroundColor","backgroundImage"],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@ var array = require('../../utils/array.js');
|
|
|
7
7
|
var style = require('../../utils/style.js');
|
|
8
8
|
var AvatarGroup_module = require('./AvatarGroup.module.scss.js');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
var Avatar = require('../Avatar/Avatar.js');
|
|
11
10
|
var SmoothCornersBox = require('../SmoothCornersBox/SmoothCornersBox.js');
|
|
12
11
|
var Icon = require('../Icon/Icon.js');
|
|
13
12
|
var Text = require('../Text/Text.js');
|
|
13
|
+
var Avatar = require('../Avatar/Avatar.js');
|
|
14
14
|
|
|
15
15
|
function _interopNamespaceDefault(e) {
|
|
16
16
|
var n = Object.create(null);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var index = require('../../packages/bezier-tokens/dist/beta/esm/index.js');
|
|
5
|
+
var react = require('../../utils/react.js');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
const [TokenContextProvider, useTokenContext] = react.createContext(null, 'BetaTokenProvider');
|
|
9
|
+
const tokenSet = Object.freeze({
|
|
10
|
+
light: {
|
|
11
|
+
global: index.tokens.global,
|
|
12
|
+
semantic: index.tokens.lightTheme
|
|
13
|
+
},
|
|
14
|
+
dark: {
|
|
15
|
+
global: index.tokens.global,
|
|
16
|
+
semantic: index.tokens.darkTheme
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
function TokenProvider({
|
|
24
|
+
themeName,
|
|
25
|
+
children
|
|
26
|
+
}) {
|
|
27
|
+
return /*#__PURE__*/jsxRuntime.jsx(TokenContextProvider, {
|
|
28
|
+
value: React.useMemo(() => ({
|
|
29
|
+
themeName,
|
|
30
|
+
tokens: tokenSet[themeName]
|
|
31
|
+
}), [themeName]),
|
|
32
|
+
children: children
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.TokenProvider = TokenProvider;
|
|
37
|
+
exports.useBetaTokenContext = useTokenContext;
|
|
38
|
+
//# sourceMappingURL=TokenProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenProvider.js","sources":["../../../../src/components/BetaTokenProvider/TokenProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo } from 'react'\n\nimport { tokens } from '@channel.io/bezier-tokens/beta'\n\nimport { type BetaThemeName } from '~/src/types/beta-tokens'\nimport { createContext } from '~/src/utils/react'\n\nimport {\n type ThemeSpecificTokens,\n type TokenContextValue,\n type TokenProviderProps,\n} from './TokenProvider.types'\n\nconst [TokenContextProvider, useTokenContext] =\n createContext<TokenContextValue | null>(null, 'BetaTokenProvider')\n\nexport { useTokenContext as useBetaTokenContext }\n\nconst tokenSet: Record<BetaThemeName, ThemeSpecificTokens> = Object.freeze({\n light: {\n global: tokens.global,\n semantic: tokens.lightTheme,\n },\n dark: {\n global: tokens.global,\n semantic: tokens.darkTheme,\n },\n})\n\n/**\n * @private\n */\nexport function TokenProvider({ themeName, children }: TokenProviderProps) {\n return (\n <TokenContextProvider\n value={useMemo(\n () => ({\n themeName,\n tokens: tokenSet[themeName],\n }),\n [themeName]\n )}\n >\n {children}\n </TokenContextProvider>\n )\n}\n\n"],"names":["TokenContextProvider","useTokenContext","createContext","tokenSet","Object","freeze","light","global","tokens","semantic","lightTheme","dark","darkTheme","TokenProvider","themeName","children","_jsx","value","useMemo"],"mappings":";;;;;;;AAeM,MAAA,CAACA,oBAAoB,EAAEC,eAAe,CAAC,GAC3CC,mBAAa,CAA2B,IAAI,EAAE,mBAAmB;AAInE,MAAMC,QAAoD,GAAGC,MAAM,CAACC,MAAM,CAAC;AACzEC,EAAAA,KAAK,EAAE;IACLC,MAAM,EAAEC,YAAM,CAACD,MAAM;IACrBE,QAAQ,EAAED,YAAM,CAACE;GAClB;AACDC,EAAAA,IAAI,EAAE;IACJJ,MAAM,EAAEC,YAAM,CAACD,MAAM;IACrBE,QAAQ,EAAED,YAAM,CAACI;AACnB;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACO,SAASC,aAAaA,CAAC;EAAEC,SAAS;AAAEC,EAAAA;AAA6B,CAAC,EAAE;EACzE,oBACEC,cAAA,CAAChB,oBAAoB,EAAA;IACnBiB,KAAK,EAAEC,aAAO,CACZ,OAAO;MACLJ,SAAS;MACTN,MAAM,EAAEL,QAAQ,CAACW,SAAS;AAC5B,KAAC,CAAC,EACF,CAACA,SAAS,CACZ,CAAE;AAAAC,IAAAA,QAAA,EAEDA;AAAQ,GACW,CAAC;AAE3B;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Status.js","sources":["../../../../src/components/Status/Status.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSProperties, forwardRef, memo } from 'react'\n\nimport { LockIcon, MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type
|
|
1
|
+
{"version":3,"file":"Status.js","sources":["../../../../src/components/Status/Status.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSProperties, forwardRef, memo } from 'react'\n\nimport { LockIcon, MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type BetaSemanticColor } from '~/src/types/beta-tokens'\nimport { betaTokenCssVar } from '~/src/utils/style'\n\nimport { Icon } from '~/src/components/Icon'\n\nimport { type StatusProps, type StatusType } from './Status.types'\n\nimport styles from './Status.module.scss'\n\nconst statusTypesWithIcon: Readonly<StatusType[]> = [\n 'online-crescent',\n 'offline-crescent',\n 'lock',\n]\n\nconst statusColor: Readonly<Record<StatusType, BetaSemanticColor>> = {\n online: 'text-accent-green',\n offline: 'fill-neutral-heavy',\n 'online-crescent': 'text-accent-green',\n 'offline-crescent': 'text-accent-yellow',\n lock: 'text-neutral-light',\n}\n\n/**\n * `Status` is a component to indicate user status.\n */\nexport const Status = memo(\n forwardRef<HTMLDivElement, StatusProps>(function Status(\n { type, size = 'm', style, className, ...rest },\n forwardedRef\n ) {\n const withIcon = statusTypesWithIcon.includes(type)\n const backgroundColor = withIcon ? 'surface-high' : statusColor[type]\n\n return (\n <div\n ref={forwardedRef}\n style={\n {\n '--b-status-bg-color': betaTokenCssVar(backgroundColor),\n ...style,\n } as CSSProperties\n }\n className={classNames(styles.Status, styles[`size-${size}`], className)}\n {...rest}\n >\n {withIcon && (\n <Icon\n source={type === 'lock' ? LockIcon : MoonFilledIcon}\n size={size === 'm' ? 'xxxs' : 'xs'}\n color={statusColor[type]}\n className={styles.Icon}\n />\n )}\n </div>\n )\n })\n)\n"],"names":["statusTypesWithIcon","statusColor","online","offline","lock","Status","memo","forwardRef","type","size","style","className","rest","forwardedRef","withIcon","includes","backgroundColor","_jsx","ref","betaTokenCssVar","classNames","styles","children","Icon","source","LockIcon","MoonFilledIcon","color"],"mappings":";;;;;;;;;;AAgBA,MAAMA,mBAA2C,GAAG,CAClD,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,CACP;AAED,MAAMC,WAA4D,GAAG;AACnEC,EAAAA,MAAM,EAAE,mBAAmB;AAC3BC,EAAAA,OAAO,EAAE,oBAAoB;AAC7B,EAAA,iBAAiB,EAAE,mBAAmB;AACtC,EAAA,kBAAkB,EAAE,oBAAoB;AACxCC,EAAAA,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACO,MAAMC,MAAM,gBAAGC,UAAI,cACxBC,gBAAU,CAA8B,SAASF,MAAMA,CACrD;EAAEG,IAAI;AAAEC,EAAAA,IAAI,GAAG,GAAG;SAAEC,OAAK;EAAEC,SAAS;EAAE,GAAGC;AAAK,CAAC,EAC/CC,YAAY,EACZ;AACA,EAAA,MAAMC,QAAQ,GAAGd,mBAAmB,CAACe,QAAQ,CAACP,IAAI,CAAC;EACnD,MAAMQ,eAAe,GAAGF,QAAQ,GAAG,cAAc,GAAGb,WAAW,CAACO,IAAI,CAAC;AAErE,EAAA,oBACES,cAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,GAAG,EAAEL,YAAa;AAClBH,IAAAA,KAAK,EACH;AACE,MAAA,qBAAqB,EAAES,qBAAe,CAACH,eAAe,CAAC;MACvD,GAAGN;KAEN;AACDC,IAAAA,SAAS,EAAES,aAAU,CAACC,qBAAM,CAAChB,MAAM,EAAEgB,qBAAM,CAAC,QAAQZ,IAAI,CAAA,CAAE,CAAC,EAAEE,SAAS,CAAE;AAAA,IAAA,GACpEC,IAAI;AAAAU,IAAAA,QAAA,EAEPR,QAAQ,iBACPG,cAAA,CAACM,SAAI,EAAA;AACHC,MAAAA,MAAM,EAAEhB,IAAI,KAAK,MAAM,GAAGiB,oBAAQ,GAAGC,0BAAe;AACpDjB,MAAAA,IAAI,EAAEA,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,IAAK;AACnCkB,MAAAA,KAAK,EAAE1B,WAAW,CAACO,IAAI,CAAE;MACzBG,SAAS,EAAEU,qBAAM,CAACE;KACnB;AACF,GACE,CAAC;AAEV,CAAC,CACH;;;;"}
|
|
@@ -5,6 +5,7 @@ var index = require('../../node_modules/@radix-ui/react-slot/dist/index.js');
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var TokenProvider = require('../TokenProvider/TokenProvider.js');
|
|
7
7
|
var TokenProvider$1 = require('../AlphaTokenProvider/TokenProvider.js');
|
|
8
|
+
var TokenProvider$2 = require('../BetaTokenProvider/TokenProvider.js');
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* `useThemeName` is a hook that returns the current theme name.
|
|
@@ -28,6 +29,14 @@ function useAlphaTokens() {
|
|
|
28
29
|
return TokenProvider$1.useAlphaTokenContext('useAlphaTokens').tokens;
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
/**
|
|
33
|
+
* `useBetaTokens` is a hook that returns the beta tokens of the current theme.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
function useBetaTokens() {
|
|
37
|
+
return TokenProvider$2.useBetaTokenContext('useBetaTokens').tokens;
|
|
38
|
+
}
|
|
39
|
+
|
|
31
40
|
/**
|
|
32
41
|
* `ThemeProvider` is a wrapper component that provides theme context.
|
|
33
42
|
*
|
|
@@ -42,13 +51,16 @@ const ThemeProvider = /*#__PURE__*/React.forwardRef(function ThemeProvider({
|
|
|
42
51
|
themeName: themeName,
|
|
43
52
|
children: /*#__PURE__*/jsxRuntime.jsx(TokenProvider$1.TokenProvider, {
|
|
44
53
|
themeName: themeName,
|
|
45
|
-
children: /*#__PURE__*/jsxRuntime.jsx(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
children: /*#__PURE__*/jsxRuntime.jsx(TokenProvider$2.TokenProvider, {
|
|
55
|
+
themeName: themeName,
|
|
56
|
+
children: /*#__PURE__*/jsxRuntime.jsx(index.Slot, {
|
|
57
|
+
ref: forwardedRef
|
|
58
|
+
// TODO: Change data attribute constant to import from bezier-tokens
|
|
59
|
+
,
|
|
60
|
+
"data-bezier-theme": themeName,
|
|
61
|
+
...rest,
|
|
62
|
+
children: children
|
|
63
|
+
})
|
|
52
64
|
})
|
|
53
65
|
})
|
|
54
66
|
});
|
|
@@ -108,6 +120,7 @@ exports.InvertedThemeProvider = InvertedThemeProvider;
|
|
|
108
120
|
exports.LightThemeProvider = LightThemeProvider;
|
|
109
121
|
exports.ThemeProvider = ThemeProvider;
|
|
110
122
|
exports.useAlphaTokens = useAlphaTokens;
|
|
123
|
+
exports.useBetaTokens = useBetaTokens;
|
|
111
124
|
exports.useThemeName = useThemeName;
|
|
112
125
|
exports.useTokens = useTokens;
|
|
113
126
|
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sources":["../../../../src/components/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\n\nimport { Slot } from '@radix-ui/react-slot'\n\nimport {\n AlphaTokenProvider,\n useAlphaTokenContext,\n} from '~/src/components/AlphaTokenProvider'\nimport { TokenProvider, useTokenContext } from '~/src/components/TokenProvider'\n\nimport {\n type FixedThemeProviderProps,\n type ThemeProviderProps,\n} from './ThemeProvider.types'\n\n/**\n * `useThemeName` is a hook that returns the current theme name.\n */\nexport function useThemeName() {\n return useTokenContext('useThemeName').themeName\n}\n\n/**\n * `useTokens` is a hook that returns the design tokens of the current theme.\n */\nexport function useTokens() {\n return useTokenContext('useTokens').tokens\n}\n\n/**\n * `useAlphaTokens` is a hook that returns the alpha tokens of the current theme.\n * @internal\n */\nexport function useAlphaTokens() {\n return useAlphaTokenContext('useAlphaTokens').tokens\n}\n\n/**\n * `ThemeProvider` is a wrapper component that provides theme context.\n *\n * Components that pass to children **must spread props and forward ref.**\n */\nexport const ThemeProvider = forwardRef<HTMLElement, ThemeProviderProps>(\n function ThemeProvider({ themeName, children, ...rest }, forwardedRef) {\n return (\n <TokenProvider themeName={themeName}>\n <AlphaTokenProvider themeName={themeName}>\n <Slot\n
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../../../src/components/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\n\nimport { Slot } from '@radix-ui/react-slot'\n\nimport {\n AlphaTokenProvider,\n useAlphaTokenContext,\n} from '~/src/components/AlphaTokenProvider'\nimport {\n BetaTokenProvider,\n useBetaTokenContext,\n} from '~/src/components/BetaTokenProvider'\nimport { TokenProvider, useTokenContext } from '~/src/components/TokenProvider'\n\nimport {\n type FixedThemeProviderProps,\n type ThemeProviderProps,\n} from './ThemeProvider.types'\n\n/**\n * `useThemeName` is a hook that returns the current theme name.\n */\nexport function useThemeName() {\n return useTokenContext('useThemeName').themeName\n}\n\n/**\n * `useTokens` is a hook that returns the design tokens of the current theme.\n */\nexport function useTokens() {\n return useTokenContext('useTokens').tokens\n}\n\n/**\n * `useAlphaTokens` is a hook that returns the alpha tokens of the current theme.\n * @internal\n */\nexport function useAlphaTokens() {\n return useAlphaTokenContext('useAlphaTokens').tokens\n}\n\n/**\n * `useBetaTokens` is a hook that returns the beta tokens of the current theme.\n * @internal\n */\nexport function useBetaTokens() {\n return useBetaTokenContext('useBetaTokens').tokens\n}\n\n/**\n * `ThemeProvider` is a wrapper component that provides theme context.\n *\n * Components that pass to children **must spread props and forward ref.**\n */\nexport const ThemeProvider = forwardRef<HTMLElement, ThemeProviderProps>(\n function ThemeProvider({ themeName, children, ...rest }, forwardedRef) {\n return (\n <TokenProvider themeName={themeName}>\n <AlphaTokenProvider themeName={themeName}>\n <BetaTokenProvider themeName={themeName}>\n <Slot\n ref={forwardedRef}\n // TODO: Change data attribute constant to import from bezier-tokens\n data-bezier-theme={themeName}\n {...rest}\n >\n {children}\n </Slot>\n </BetaTokenProvider>\n </AlphaTokenProvider>\n </TokenProvider>\n )\n }\n)\n\n/**\n * `LightThemeProvider` is a wrapper component that provides light theme context.\n *\n * Components that pass to children **must spread props and forward ref.**\n */\nexport const LightThemeProvider = forwardRef<\n HTMLElement,\n FixedThemeProviderProps\n>(function LightTheme({ children, ...rest }, forwardedRef) {\n return (\n <ThemeProvider\n ref={forwardedRef}\n themeName=\"light\"\n {...rest}\n >\n {children}\n </ThemeProvider>\n )\n})\n\n/**\n * `DarkThemeProvider` is a wrapper component that provides dark theme context.\n *\n * Components that pass to children **must spread props and forward ref.**\n */\nexport const DarkThemeProvider = forwardRef<\n HTMLElement,\n FixedThemeProviderProps\n>(function DarkTheme({ children, ...rest }, forwardedRef) {\n return (\n <ThemeProvider\n ref={forwardedRef}\n themeName=\"dark\"\n {...rest}\n >\n {children}\n </ThemeProvider>\n )\n})\n\n/**\n * `InvertedThemeProvider` is a wrapper component that provides inverted theme context.\n */\nexport const InvertedThemeProvider = forwardRef<\n HTMLElement,\n FixedThemeProviderProps\n>(function InvertedTheme({ children, ...rest }, forwardedRef) {\n return (\n <ThemeProvider\n ref={forwardedRef}\n themeName={useThemeName() === 'light' ? 'dark' : 'light'}\n {...rest}\n >\n {children}\n </ThemeProvider>\n )\n})\n"],"names":["useThemeName","useTokenContext","themeName","useTokens","tokens","useAlphaTokens","useAlphaTokenContext","useBetaTokens","useBetaTokenContext","ThemeProvider","forwardRef","children","rest","forwardedRef","_jsx","TokenProvider","AlphaTokenProvider","BetaTokenProvider","Slot","ref","LightThemeProvider","LightTheme","DarkThemeProvider","DarkTheme","InvertedThemeProvider","InvertedTheme"],"mappings":";;;;;;;;;AAqBA;AACA;AACA;AACO,SAASA,YAAYA,GAAG;AAC7B,EAAA,OAAOC,6BAAe,CAAC,cAAc,CAAC,CAACC,SAAS;AAClD;;AAEA;AACA;AACA;AACO,SAASC,SAASA,GAAG;AAC1B,EAAA,OAAOF,6BAAe,CAAC,WAAW,CAAC,CAACG,MAAM;AAC5C;;AAEA;AACA;AACA;AACA;AACO,SAASC,cAAcA,GAAG;AAC/B,EAAA,OAAOC,oCAAoB,CAAC,gBAAgB,CAAC,CAACF,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACO,SAASG,aAAaA,GAAG;AAC9B,EAAA,OAAOC,mCAAmB,CAAC,eAAe,CAAC,CAACJ,MAAM;AACpD;;AAEA;AACA;AACA;AACA;AACA;MACaK,aAAa,gBAAGC,gBAAU,CACrC,SAASD,aAAaA,CAAC;EAAEP,SAAS;EAAES,QAAQ;EAAE,GAAGC;AAAK,CAAC,EAAEC,YAAY,EAAE;EACrE,oBACEC,cAAA,CAACC,2BAAa,EAAA;AAACb,IAAAA,SAAS,EAAEA,SAAU;IAAAS,QAAA,eAClCG,cAAA,CAACE,6BAAkB,EAAA;AAACd,MAAAA,SAAS,EAAEA,SAAU;MAAAS,QAAA,eACvCG,cAAA,CAACG,6BAAiB,EAAA;AAACf,QAAAA,SAAS,EAAEA,SAAU;QAAAS,QAAA,eACtCG,cAAA,CAACI,UAAI,EAAA;AACHC,UAAAA,GAAG,EAAEN;AACL;AAAA;AACA,UAAA,mBAAA,EAAmBX,SAAU;AAAA,UAAA,GACzBU,IAAI;AAAAD,UAAAA,QAAA,EAEPA;SACG;OACW;KACD;AAAC,GACR,CAAC;AAEpB,CACF;;AAEA;AACA;AACA;AACA;AACA;MACaS,kBAAkB,gBAAGV,gBAAU,CAG1C,SAASW,UAAUA,CAAC;EAAEV,QAAQ;EAAE,GAAGC;AAAK,CAAC,EAAEC,YAAY,EAAE;EACzD,oBACEC,cAAA,CAACL,aAAa,EAAA;AACZU,IAAAA,GAAG,EAAEN,YAAa;AAClBX,IAAAA,SAAS,EAAC,OAAO;AAAA,IAAA,GACbU,IAAI;AAAAD,IAAAA,QAAA,EAEPA;AAAQ,GACI,CAAC;AAEpB,CAAC;;AAED;AACA;AACA;AACA;AACA;MACaW,iBAAiB,gBAAGZ,gBAAU,CAGzC,SAASa,SAASA,CAAC;EAAEZ,QAAQ;EAAE,GAAGC;AAAK,CAAC,EAAEC,YAAY,EAAE;EACxD,oBACEC,cAAA,CAACL,aAAa,EAAA;AACZU,IAAAA,GAAG,EAAEN,YAAa;AAClBX,IAAAA,SAAS,EAAC,MAAM;AAAA,IAAA,GACZU,IAAI;AAAAD,IAAAA,QAAA,EAEPA;AAAQ,GACI,CAAC;AAEpB,CAAC;;AAED;AACA;AACA;MACaa,qBAAqB,gBAAGd,gBAAU,CAG7C,SAASe,aAAaA,CAAC;EAAEd,QAAQ;EAAE,GAAGC;AAAK,CAAC,EAAEC,YAAY,EAAE;EAC5D,oBACEC,cAAA,CAACL,aAAa,EAAA;AACZU,IAAAA,GAAG,EAAEN,YAAa;IAClBX,SAAS,EAAEF,YAAY,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAQ;AAAA,IAAA,GACrDY,IAAI;AAAAD,IAAAA,QAAA,EAEPA;AAAQ,GACI,CAAC;AAEpB,CAAC;;;;;;;;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./packages/bezier-tokens/dist/esm/index.js');
|
|
4
4
|
var index$1 = require('./packages/bezier-tokens/dist/alpha/esm/index.js');
|
|
5
|
+
var index$2 = require('./packages/bezier-tokens/dist/beta/esm/index.js');
|
|
5
6
|
var useKeyboardActionLockerWhileComposing = require('./hooks/useKeyboardActionLockerWhileComposing.js');
|
|
6
7
|
var Avatar = require('./components/AlphaAvatar/Avatar.js');
|
|
7
8
|
var AvatarGroup = require('./components/AlphaAvatarGroup/AvatarGroup.js');
|
|
@@ -81,6 +82,7 @@ var WindowProvider = require('./components/WindowProvider/WindowProvider.js');
|
|
|
81
82
|
|
|
82
83
|
exports.tokens = index.tokens;
|
|
83
84
|
exports.alphaTokens = index$1.tokens;
|
|
85
|
+
exports.betaTokens = index$2.tokens;
|
|
84
86
|
exports.COMMON_IME_CONTROL_KEYS = useKeyboardActionLockerWhileComposing.COMMON_IME_CONTROL_KEYS;
|
|
85
87
|
exports.useKeyboardActionLockerWhileComposing = useKeyboardActionLockerWhileComposing.useKeyboardActionLockerWhileComposing;
|
|
86
88
|
exports.AlphaAvatar = Avatar.Avatar;
|
|
@@ -201,6 +203,7 @@ exports.InvertedThemeProvider = ThemeProvider.InvertedThemeProvider;
|
|
|
201
203
|
exports.LightThemeProvider = ThemeProvider.LightThemeProvider;
|
|
202
204
|
exports.ThemeProvider = ThemeProvider.ThemeProvider;
|
|
203
205
|
exports.useAlphaTokens = ThemeProvider.useAlphaTokens;
|
|
206
|
+
exports.useBetaTokens = ThemeProvider.useBetaTokens;
|
|
204
207
|
exports.useThemeName = ThemeProvider.useThemeName;
|
|
205
208
|
exports.useTokens = ThemeProvider.useTokens;
|
|
206
209
|
exports.ToastProvider = Toast.ToastProvider;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|