@bookjane2/bookjane-design-library 9.0.27 → 9.0.29

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BKJAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyB/C,CAAC"}
1
+ {"version":3,"file":"BKJAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0B/C,CAAC"}
@@ -3,8 +3,8 @@ import { useCallback } from 'react';
3
3
  import { BKJIcon } from '../index.js';
4
4
  import { BKJImage } from '../BKJImage/index.js';
5
5
  import { PendingSignUpIcon, ImageContainer } from './BKJAvatar.styled.js';
6
- export const BKJAvatar = ({ src, fontSize = 24, fallbackAvatarColor, showPendingSignUp = false, ...rest }) => {
6
+ export const BKJAvatar = ({ src, alt = '', fontSize = 24, fallbackAvatarColor, showPendingSignUp = false, ...rest }) => {
7
7
  const FallbackLoadingComponent = useCallback(() => _jsx(BKJIcon, { color: fallbackAvatarColor, fontSize: fontSize, iconName: "Avatar", ...rest }), [fallbackAvatarColor, fontSize, rest]);
8
- return (_jsxs(ImageContainer, { children: [_jsx(BKJImage, { alt: "Avatar", src: src || '', LoadingComponent: FallbackLoadingComponent, FallbackComponent: FallbackLoadingComponent, variant: 'Round', ...rest }), showPendingSignUp && _jsx(PendingSignUpIcon, { iconName: "PendingSignup", ...rest })] }));
8
+ return (_jsxs(ImageContainer, { children: [_jsx(BKJImage, { alt: alt, src: src || '', LoadingComponent: FallbackLoadingComponent, FallbackComponent: FallbackLoadingComponent, variant: 'Round', ...rest }), showPendingSignUp && _jsx(PendingSignUpIcon, { iconName: "PendingSignup", ...rest })] }));
9
9
  };
10
10
  //# sourceMappingURL=BKJAvatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJAvatar.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,EACO,GAAG,EACH,QAAQ,GAAG,EAAE,EACb,mBAAmB,EACnB,iBAAiB,GAAG,KAAK,EACzB,GAAG,IAAI,EACR,EAAE,EAAE;IAC7D,MAAM,wBAAwB,GAAG,WAAW,CAC1C,GAAG,EAAE,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,QAAQ,KAAK,IAAI,GAAI,EAC7F,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CACtC,CAAC;IAEF,OAAO,CACL,MAAC,cAAc,eACb,KAAC,QAAQ,IACP,GAAG,EAAC,QAAQ,EACZ,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,gBAAgB,EAAE,wBAAwB,EAC1C,iBAAiB,EAAE,wBAAwB,EAC3C,OAAO,EAAE,OAAO,KACZ,IAAI,GACR,EACD,iBAAiB,IAAI,KAAC,iBAAiB,IAAC,QAAQ,EAAC,eAAe,KAAK,IAAI,GAAI,IAC/D,CAClB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"BKJAvatar.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,EACO,GAAG,EACH,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,EAAE,EACb,mBAAmB,EACnB,iBAAiB,GAAG,KAAK,EACzB,GAAG,IAAI,EACR,EAAE,EAAE;IAC7D,MAAM,wBAAwB,GAAG,WAAW,CAC1C,GAAG,EAAE,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,QAAQ,KAAK,IAAI,GAAI,EAC7F,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CACtC,CAAC;IAEF,OAAO,CACL,MAAC,cAAc,eACb,KAAC,QAAQ,IACP,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,gBAAgB,EAAE,wBAAwB,EAC1C,iBAAiB,EAAE,wBAAwB,EAC3C,OAAO,EAAE,OAAO,KACZ,IAAI,GACR,EACD,iBAAiB,IAAI,KAAC,iBAAiB,IAAC,QAAQ,EAAC,eAAe,KAAK,IAAI,GAAI,IAC/D,CAClB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { StoryFn } from '@storybook/react';
1
2
  import { IBKJAvatarProps } from './BKJAvatar.types.js';
2
3
  declare const _default: {
3
4
  title: string;
@@ -9,6 +10,12 @@ declare const _default: {
9
10
  type: string;
10
11
  };
11
12
  };
13
+ alt: {
14
+ name: string;
15
+ control: {
16
+ type: string;
17
+ };
18
+ };
12
19
  width: {
13
20
  name: string;
14
21
  control: {
@@ -37,4 +44,7 @@ declare const _default: {
37
44
  };
38
45
  export default _default;
39
46
  export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJAvatarProps>;
47
+ export declare const AdjacentToName: StoryFn<IBKJAvatarProps>;
48
+ export declare const Standalone: StoryFn<IBKJAvatarProps>;
49
+ export declare const WithPendingSignUp: StoryFn<IBKJAvatarProps>;
40
50
  //# sourceMappingURL=BKJAvatar.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJAvatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpD,wBAmCE;AAQF,eAAO,MAAM,OAAO,2GAKlB,CAAC"}
1
+ {"version":3,"file":"BKJAvatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKpD,wBAyCE;AAQF,eAAO,MAAM,OAAO,2GAKlB,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAOnD,CAAC;AASF,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,eAAe,CAI/C,CAAC;AASF,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,eAAe,CAItD,CAAC"}
@@ -1,6 +1,7 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { BKJAvatar } from './BKJAvatar.js';
3
3
  import { BKJThemeProvider } from '../../providers/BKJThemeProvider/index.js';
4
+ const SAMPLE_AVATAR_SRC = 'https://s3.amazonaws.com/bjk2-0/sandbox/user/avatar/15605/small_8153694F-2098-49BE-A135-4C2B9EBA3DFA.jpg';
4
5
  export default {
5
6
  title: 'Basic Elements/BKJAvatar',
6
7
  component: BKJAvatar,
@@ -11,6 +12,12 @@ export default {
11
12
  type: 'text',
12
13
  },
13
14
  },
15
+ alt: {
16
+ name: 'Alt Text',
17
+ control: {
18
+ type: 'text',
19
+ },
20
+ },
14
21
  width: {
15
22
  name: 'Width',
16
23
  control: {
@@ -39,9 +46,34 @@ export default {
39
46
  };
40
47
  const Template = ({ ...rest }) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...rest }) }));
41
48
  export const Default = Template.bind({
42
- src: 'https://s3.amazonaws.com/bjk2-0/sandbox/user/avatar/15605/small_8153694F-2098-49BE-A135-4C2B9EBA3DFA.jpg',
49
+ src: SAMPLE_AVATAR_SRC,
43
50
  width: '20px',
44
51
  height: '20px',
45
52
  fallbackAvatarColor: 'Grey3',
46
53
  });
54
+ export const AdjacentToName = (args) => (_jsx(BKJThemeProvider, { children: _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx(BKJAvatar, { ...args }), _jsx("span", { children: "Jane Smith" })] }) }));
55
+ AdjacentToName.args = {
56
+ src: SAMPLE_AVATAR_SRC,
57
+ alt: '',
58
+ width: '40px',
59
+ height: '40px',
60
+ fallbackAvatarColor: 'Grey3',
61
+ };
62
+ export const Standalone = (args) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...args }) }));
63
+ Standalone.args = {
64
+ src: SAMPLE_AVATAR_SRC,
65
+ alt: 'Jane Smith',
66
+ width: '40px',
67
+ height: '40px',
68
+ fallbackAvatarColor: 'Grey3',
69
+ };
70
+ export const WithPendingSignUp = (args) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...args }) }));
71
+ WithPendingSignUp.args = {
72
+ src: SAMPLE_AVATAR_SRC,
73
+ alt: 'Jane Smith (pending signup)',
74
+ width: '40px',
75
+ height: '40px',
76
+ fallbackAvatarColor: 'Grey3',
77
+ showPendingSignUp: true,
78
+ };
47
79
  //# sourceMappingURL=BKJAvatar.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJAvatar.stories.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,eAAe;IACb,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;aACd;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;aAChB;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA6B,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAC1D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,GAAG,EAAE,0GAA0G;IAC/G,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"BKJAvatar.stories.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,MAAM,iBAAiB,GACrB,0GAA0G,CAAC;AAE7G,eAAe;IACb,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,GAAG,EAAE;YACH,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;aACd;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;aAChB;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA6B,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAC1D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAChE,KAAC,gBAAgB,cACf,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC3D,KAAC,SAAS,OAAK,IAAI,GAAI,EACvB,wCAAuB,IACnB,GACW,CACpB,CAAC;AACF,cAAc,CAAC,IAAI,GAAG;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAC5D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AACF,UAAU,CAAC,IAAI,GAAG;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CACnE,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AACF,iBAAiB,CAAC,IAAI,GAAG;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,6BAA6B;IAClC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,IAAI;CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BKJAvatar.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJAvatar.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
3
+ import { BKJAvatar } from './BKJAvatar.js';
4
+ describe('BKJAvatar', () => {
5
+ describe('Accessibility (FR-008)', () => {
6
+ it('decorative default — no alt prop, axe-clean', async () => {
7
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
8
+ expect(axeResults).toHaveNoViolations();
9
+ });
10
+ it('informative — alt="Jane Smith", axe-clean', async () => {
11
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { alt: "Jane Smith", src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
12
+ expect(axeResults).toHaveNoViolations();
13
+ });
14
+ it('fallback path — no src triggers BKJIcon fallback rendering, axe-clean', async () => {
15
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
16
+ expect(axeResults).toHaveNoViolations();
17
+ });
18
+ it('showPendingSignUp={true} — indicator overlay, axe-clean', async () => {
19
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3", showPendingSignUp: true }));
20
+ expect(axeResults).toHaveNoViolations();
21
+ });
22
+ });
23
+ describe('Behavioural contracts (FR-009)', () => {
24
+ // DOM-selector exception (Constitution §VII): aria-hidden / empty-alt elements are
25
+ // AT-tree-invisible by definition and have no Testing Library role query. Same
26
+ // exception applied in WEB-4841 BKJIcon's tests.
27
+ it('(a) <img> carries alt="" when no alt prop is passed', () => {
28
+ const { container } = renderWithTheme(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
29
+ const img = container.querySelector('img');
30
+ expect(img).not.toBeNull();
31
+ expect(img.getAttribute('alt')).toBe('');
32
+ });
33
+ it('(b) <img> carries consumer-supplied string when alt="Jane Smith" passed', () => {
34
+ const { container } = renderWithTheme(_jsx(BKJAvatar, { alt: "Jane Smith", src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
35
+ const img = container.querySelector('img');
36
+ expect(img).not.toBeNull();
37
+ expect(img.getAttribute('alt')).toBe('Jane Smith');
38
+ });
39
+ it('(c) fallback BKJIcon renders with aria-hidden="true" (verifies WEB-4841 inheritance)', () => {
40
+ const { container } = renderWithTheme(_jsx(BKJAvatar, { width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
41
+ const svg = container.querySelector('svg');
42
+ expect(svg).not.toBeNull();
43
+ expect(svg.getAttribute('aria-hidden')).toBe('true');
44
+ });
45
+ it('(d) PendingSignup indicator renders with aria-hidden="true" when showPendingSignUp=true', () => {
46
+ const { container } = renderWithTheme(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3", showPendingSignUp: true }));
47
+ const svgs = container.querySelectorAll('svg');
48
+ // Indicator is rendered after the BKJImage subtree; last SVG in the tree.
49
+ const indicator = svgs[svgs.length - 1];
50
+ expect(indicator).not.toBeUndefined();
51
+ expect(indicator.getAttribute('aria-hidden')).toBe('true');
52
+ });
53
+ });
54
+ });
55
+ //# sourceMappingURL=BKJAvatar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJAvatar.test.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { BKJThemeColorType } from '../../index.js';
2
2
  export interface IBKJAvatarProps {
3
3
  src?: string | null;
4
+ alt?: string;
4
5
  fontSize?: number;
5
6
  width: string;
6
7
  height: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BKJAvatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,iBAAiB,CAAC;CACxC"}
1
+ {"version":3,"file":"BKJAvatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,iBAAiB,CAAC;CACxC"}
@@ -19,4 +19,9 @@ declare const _default: {
19
19
  };
20
20
  export default _default;
21
21
  export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
22
+ export declare const Decorative: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
23
+ export declare const WithRemoveButton: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
24
+ export declare const DisabledRemoveButton: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
25
+ export declare const RedVariant: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
26
+ export declare const LegacyDisabledSuppression: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
22
27
  //# sourceMappingURL=BKJChip.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJChip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;AAEhD,wBAiBE;AAQF,eAAO,MAAM,OAAO,yGAAoB,CAAC"}
1
+ {"version":3,"file":"BKJChip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;AAEhD,wBAiBE;AAQF,eAAO,MAAM,OAAO,yGAAoB,CAAC;AAKzC,eAAO,MAAM,UAAU,yGAAoB,CAAC;AAK5C,eAAO,MAAM,gBAAgB,yGAAoB,CAAC;AAOlD,eAAO,MAAM,oBAAoB,yGAAoB,CAAC;AActD,eAAO,MAAM,UAAU,yGAAuB,CAAC;AAK/C,eAAO,MAAM,yBAAyB,yGAAoB,CAAC"}
@@ -24,4 +24,41 @@ export const Default = Template.bind({});
24
24
  Default.args = {
25
25
  variant: 'Purple',
26
26
  };
27
+ export const Decorative = Template.bind({});
28
+ Decorative.args = {
29
+ variant: 'Purple',
30
+ };
31
+ export const WithRemoveButton = Template.bind({});
32
+ WithRemoveButton.args = {
33
+ variant: 'Purple',
34
+ onClose: () => undefined,
35
+ closeAriaLabel: 'Remove Filter Pill',
36
+ };
37
+ export const DisabledRemoveButton = Template.bind({});
38
+ DisabledRemoveButton.args = {
39
+ variant: 'Purple',
40
+ onClose: () => undefined,
41
+ closeAriaLabel: 'Remove Filter Pill',
42
+ closeButtonDisabled: true,
43
+ };
44
+ const RedTemplate = ({ ...props }) => (_jsx(BKJThemeProvider, { children: _jsx(BKJChip, { ...props, children: "Active" }) }));
45
+ export const RedVariant = RedTemplate.bind({});
46
+ RedVariant.args = {
47
+ variant: 'Red',
48
+ };
49
+ export const LegacyDisabledSuppression = Template.bind({});
50
+ LegacyDisabledSuppression.args = {
51
+ variant: 'Purple',
52
+ onClose: () => undefined,
53
+ };
54
+ LegacyDisabledSuppression.parameters = {
55
+ docs: {
56
+ description: {
57
+ story: 'Demonstrates the legacy `<div onMouseDown>` close-icon rendering retained for the WEB-4818 disabled-pill-dropdown tab-stop-suppression mechanism. ' +
58
+ '`BKJPillDropdown` deliberately omits `closeAriaLabel` when `disabled={true}` so chip remove buttons are removed from the tab order while their visual close-icon affordance is preserved. ' +
59
+ '**Standalone consumers (outside the BKJPill* family) MUST supply `closeAriaLabel` whenever `onClose` is provided** so the focusable, keyboard-accessible `<button>` rendering is used. ' +
60
+ 'See [WEB-4818](https://bookjane.atlassian.net/browse/WEB-4818) for the rationale; see [WEB-4844](https://bookjane.atlassian.net/browse/WEB-4844) for the audit ticket that locks in this dual-path contract.',
61
+ },
62
+ },
63
+ };
27
64
  //# sourceMappingURL=BKJChip.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJChip.stories.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAe;IACb,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;aACf;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC1B;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACzD,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,4BAAuB,GACxB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE,QAAQ;CAClB,CAAC"}
1
+ {"version":3,"file":"BKJChip.stories.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAe;IACb,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;aACf;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC1B;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACzD,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,4BAAuB,GACxB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IAChB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,gBAAgB,CAAC,IAAI,GAAG;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;IACxB,cAAc,EAAE,oBAAoB;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,oBAAoB,CAAC,IAAI,GAAG;IAC1B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;IACxB,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF,MAAM,WAAW,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAC5D,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,uBAAkB,GACnB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/C,UAAU,CAAC,IAAI,GAAG;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D,yBAAyB,CAAC,IAAI,GAAG;IAC/B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;CACzB,CAAC;AACF,yBAAyB,CAAC,UAAU,GAAG;IACrC,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,KAAK,EACH,oJAAoJ;gBACpJ,4LAA4L;gBAC5L,yLAAyL;gBACzL,8MAA8M;SACjN;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BKJChip.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJChip.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import userEvent from '@testing-library/user-event';
3
+ import { computeAccessibleName } from 'dom-accessibility-api';
4
+ import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
5
+ import { BKJChip } from './BKJChip.js';
6
+ describe('BKJChip — jest-axe states (FR-007)', () => {
7
+ it('a) decorative — no onClose, axe-clean', async () => {
8
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", children: "Filter Pill" }));
9
+ expect(axeResults).toHaveNoViolations();
10
+ });
11
+ it('b) with-remove-button — onClose + closeAriaLabel, axe-clean', async () => {
12
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
13
+ expect(axeResults).toHaveNoViolations();
14
+ });
15
+ it('c) disabled-remove-button — closeButtonDisabled, axe-clean', async () => {
16
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }));
17
+ expect(axeResults).toHaveNoViolations();
18
+ });
19
+ it('d) red-variant — Red variant, axe-clean', async () => {
20
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Red", children: "Active" }));
21
+ expect(axeResults).toHaveNoViolations();
22
+ });
23
+ it('e) WEB-4818 legacy-path — onClose without closeAriaLabel, axe-clean', async () => {
24
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
25
+ expect(axeResults).toHaveNoViolations();
26
+ });
27
+ });
28
+ describe('BKJChip — behavioural contracts (FR-008)', () => {
29
+ it('a) decorative chips render zero <button> elements and contribute zero tab stops', async () => {
30
+ const user = userEvent.setup();
31
+ const { container, getByRole } = renderWithTheme(_jsxs(_Fragment, { children: [_jsx("button", { children: "before" }), _jsx(BKJChip, { variant: "Purple", children: "Filter Pill" }), _jsx("button", { children: "after" })] }));
32
+ expect(container.querySelectorAll('button')).toHaveLength(2);
33
+ const beforeBtn = getByRole('button', { name: 'before' });
34
+ const afterBtn = getByRole('button', { name: 'after' });
35
+ beforeBtn.focus();
36
+ await user.tab();
37
+ expect(document.activeElement).toBe(afterBtn);
38
+ });
39
+ it('b) <button type="button"> with aria-label when closeAriaLabel is supplied', () => {
40
+ const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
41
+ const btn = container.querySelector('button[type="button"]');
42
+ expect(btn).not.toBeNull();
43
+ expect(btn).toHaveAttribute('aria-label', 'Remove Filter Pill');
44
+ expect(computeAccessibleName(btn)).toBe('Remove Filter Pill');
45
+ });
46
+ it('c) closeButtonDisabled sets button.disabled === true and Tab skips it', async () => {
47
+ const user = userEvent.setup();
48
+ const { container, getByRole } = renderWithTheme(_jsxs(_Fragment, { children: [_jsx("button", { children: "before" }), _jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }), _jsx("button", { children: "after" })] }));
49
+ const chipBtn = container.querySelector('button[type="button"]');
50
+ expect(chipBtn).not.toBeNull();
51
+ expect(chipBtn.disabled).toBe(true);
52
+ const beforeBtn = getByRole('button', { name: 'before' });
53
+ const afterBtn = getByRole('button', { name: 'after' });
54
+ beforeBtn.focus();
55
+ await user.tab();
56
+ expect(document.activeElement).toBe(afterBtn);
57
+ });
58
+ it('d) Enter and Space fire onClose on a focused enabled close button', async () => {
59
+ const user = userEvent.setup();
60
+ const onClose = jest.fn();
61
+ renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: onClose, closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
62
+ await user.tab();
63
+ expect(document.activeElement?.tagName).toBe('BUTTON');
64
+ await user.keyboard('{Enter}');
65
+ expect(onClose).toHaveBeenCalledTimes(1);
66
+ await user.keyboard(' ');
67
+ expect(onClose).toHaveBeenCalledTimes(2);
68
+ });
69
+ it('d) Enter and Space do NOT fire onClose on a disabled close button', async () => {
70
+ const user = userEvent.setup();
71
+ const onClose = jest.fn();
72
+ const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: onClose, closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }));
73
+ const btn = container.querySelector('button[type="button"]');
74
+ btn.focus();
75
+ await user.keyboard('{Enter}');
76
+ await user.keyboard(' ');
77
+ expect(onClose).toHaveBeenCalledTimes(0);
78
+ });
79
+ it('e) WEB-4818 legacy-path: onClose without closeAriaLabel renders <div>, no <button>', () => {
80
+ const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
81
+ expect(container.querySelector('button')).toBeNull();
82
+ });
83
+ it('f) inner CloseBold svg is aria-hidden on focusable-path branch', () => {
84
+ const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove", children: "Filter Pill" }));
85
+ const svg = container.querySelector('svg');
86
+ expect(svg).not.toBeNull();
87
+ expect(svg.getAttribute('aria-hidden')).toBe('true');
88
+ });
89
+ it('f) inner CloseBold svg is aria-hidden on legacy-path branch (WEB-4841 inheritance)', () => {
90
+ const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
91
+ const svg = container.querySelector('svg');
92
+ expect(svg).not.toBeNull();
93
+ expect(svg.getAttribute('aria-hidden')).toBe('true');
94
+ });
95
+ });
96
+ //# sourceMappingURL=BKJChip.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJChip.test.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.test.tsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAC7C,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,4BAAsB,CAChD,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAC7C,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAC,oBAAoB,4BAEvE,CACX,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAC7C,KAAC,OAAO,IACN,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAClB,cAAc,EAAC,oBAAoB,EACnC,mBAAmB,kCAGX,CACX,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAC7C,KAAC,OAAO,IAAC,OAAO,EAAC,KAAK,uBAAiB,CACxC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,CAC7C,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,4BAElC,CACX,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAC9C,8BACE,sCAAuB,EACvB,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,4BAAsB,EAC/C,qCAAsB,IACrB,CACJ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAsB,CAAC;QAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAsB,CAAC;QAC7E,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CACnC,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAC,oBAAoB,4BAEvE,CACX,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAA6B,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;QAChE,MAAM,CAAC,qBAAqB,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAC9C,8BACE,sCAAuB,EACvB,KAAC,OAAO,IACN,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAClB,cAAc,EAAC,oBAAoB,EACnC,mBAAmB,kCAGX,EACV,qCAAsB,IACrB,CACJ,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAA6B,CAAC;QAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAsB,CAAC;QAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAsB,CAAC;QAC7E,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,eAAe,CACb,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAC,oBAAoB,4BAErE,CACX,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CACnC,KAAC,OAAO,IACN,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAC,oBAAoB,EACnC,mBAAmB,kCAGX,CACX,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAAsB,CAAC;QAClF,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CACnC,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,4BAElC,CACX,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CACnC,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAC,QAAQ,4BAE3D,CACX,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CACnC,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,4BAElC,CACX,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bookjane2/bookjane-design-library",
3
- "version": "9.0.27",
3
+ "version": "9.0.29",
4
4
  "main": "./lib/index.js",
5
5
  "typings": "./lib/index.d.ts",
6
6
  "engines": {