@transferwise/components 0.0.0-experimental-39e6a5b → 0.0.0-experimental-71a6c2e
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/build/actionOption/ActionOption.js +2 -0
- package/build/actionOption/ActionOption.js.map +1 -1
- package/build/actionOption/ActionOption.mjs +2 -0
- package/build/actionOption/ActionOption.mjs.map +1 -1
- package/build/common/Option/Option.js +9 -4
- package/build/common/Option/Option.js.map +1 -1
- package/build/common/Option/Option.mjs +10 -5
- package/build/common/Option/Option.mjs.map +1 -1
- package/build/main.css +22 -0
- package/build/styles/common/Option/Option.css +22 -0
- package/build/styles/main.css +22 -0
- package/build/types/actionOption/ActionOption.d.ts +2 -1
- package/build/types/actionOption/ActionOption.d.ts.map +1 -1
- package/build/types/common/Option/Option.d.ts +1 -0
- package/build/types/common/Option/Option.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actionOption/ActionOption.story.tsx +2 -0
- package/src/actionOption/ActionOption.tsx +3 -0
- package/src/common/Option/Option.css +22 -0
- package/src/common/Option/Option.less +21 -0
- package/src/common/Option/Option.tsx +7 -1
- package/src/main.css +22 -0
|
@@ -36,6 +36,7 @@ const ActionOption = ({
|
|
|
36
36
|
media,
|
|
37
37
|
title,
|
|
38
38
|
content,
|
|
39
|
+
additionalContent,
|
|
39
40
|
complex,
|
|
40
41
|
className,
|
|
41
42
|
showMediaAtAllSizes,
|
|
@@ -54,6 +55,7 @@ const ActionOption = ({
|
|
|
54
55
|
showMediaCircle,
|
|
55
56
|
className: clsx.clsx('tw-action-option', className),
|
|
56
57
|
isContainerAligned,
|
|
58
|
+
additionalContent,
|
|
57
59
|
as
|
|
58
60
|
};
|
|
59
61
|
const getAriaLabel = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionOption.js","sources":["../../src/actionOption/ActionOption.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport Button from '../button';\nimport {\n AriaLabelProperty,\n CommonProps,\n Priority,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n} from '../common';\nimport Option from '../common/Option';\nimport { ButtonPriority } from '../button/Button.types';\n\ntype ActionOptionPriority =\n | PriorityPrimary\n | PrioritySecondary\n | PriorityTertiary\n | 'secondary-send';\n\nexport type ActionOptionProps = {\n complex?: boolean;\n content?: React.ReactNode;\n disabled?: boolean;\n media?: React.ReactNode;\n showMediaAtAllSizes?: boolean;\n onClick: () => void;\n title: React.ReactNode;\n action: React.ReactNode;\n priority?: ActionOptionPriority;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n as?: React.ElementType;\n} & CommonProps &\n AriaLabelProperty;\n\nconst ActionOption = ({\n action,\n priority = Priority.PRIMARY,\n disabled,\n onClick,\n media,\n title,\n content,\n complex,\n className,\n showMediaAtAllSizes,\n showMediaCircle,\n isContainerAligned,\n as,\n 'aria-label': ariaLabel,\n}: ActionOptionProps) => {\n const sharedProps = {\n media,\n title,\n content,\n complex,\n disabled,\n showMediaAtAllSizes,\n showMediaCircle,\n className: clsx('tw-action-option', className),\n isContainerAligned,\n as,\n };\n\n const getAriaLabel = (): string | undefined => {\n if (ariaLabel) {\n return ariaLabel;\n }\n\n const generatedLabels: string[] = [];\n\n if (typeof title === 'string') {\n generatedLabels.push(title);\n }\n\n if (typeof action === 'string') {\n generatedLabels.push(action);\n }\n\n return generatedLabels.join(', ') || undefined;\n };\n\n const mapPriority = (priority: ActionOptionPriority): ButtonPriority => {\n switch (priority) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary-neutral';\n case 'tertiary':\n return 'tertiary';\n case 'secondary-send':\n return 'secondary';\n default:\n return 'primary';\n }\n };\n\n return (\n <Option\n {...sharedProps}\n button={\n <Button\n v2\n size=\"sm\"\n priority={mapPriority(priority)}\n disabled={disabled}\n aria-label={getAriaLabel()}\n onClick={onClick}\n >\n {action}\n </Button>\n }\n />\n );\n};\n\nexport default ActionOption;\n"],"names":["ActionOption","action","priority","Priority","PRIMARY","disabled","onClick","media","title","content","complex","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","as","ariaLabel","sharedProps","clsx","getAriaLabel","generatedLabels","push","join","undefined","mapPriority","_jsx","Option","button","Button","v2","size","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ActionOption.js","sources":["../../src/actionOption/ActionOption.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport Button from '../button';\nimport {\n AriaLabelProperty,\n CommonProps,\n Priority,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n} from '../common';\nimport Option from '../common/Option';\nimport { ButtonPriority } from '../button/Button.types';\n\ntype ActionOptionPriority =\n | PriorityPrimary\n | PrioritySecondary\n | PriorityTertiary\n | 'secondary-send';\n\nexport type ActionOptionProps = {\n complex?: boolean;\n content?: React.ReactNode;\n disabled?: boolean;\n media?: React.ReactNode;\n showMediaAtAllSizes?: boolean;\n onClick: () => void;\n title: React.ReactNode;\n additionalContent?: React.ReactNode;\n action: React.ReactNode;\n priority?: ActionOptionPriority;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n as?: React.ElementType;\n} & CommonProps &\n AriaLabelProperty;\n\nconst ActionOption = ({\n action,\n priority = Priority.PRIMARY,\n disabled,\n onClick,\n media,\n title,\n content,\n additionalContent,\n complex,\n className,\n showMediaAtAllSizes,\n showMediaCircle,\n isContainerAligned,\n as,\n 'aria-label': ariaLabel,\n}: ActionOptionProps) => {\n const sharedProps = {\n media,\n title,\n content,\n complex,\n disabled,\n showMediaAtAllSizes,\n showMediaCircle,\n className: clsx('tw-action-option', className),\n isContainerAligned,\n additionalContent,\n as,\n };\n\n const getAriaLabel = (): string | undefined => {\n if (ariaLabel) {\n return ariaLabel;\n }\n\n const generatedLabels: string[] = [];\n\n if (typeof title === 'string') {\n generatedLabels.push(title);\n }\n\n if (typeof action === 'string') {\n generatedLabels.push(action);\n }\n\n return generatedLabels.join(', ') || undefined;\n };\n\n const mapPriority = (priority: ActionOptionPriority): ButtonPriority => {\n switch (priority) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary-neutral';\n case 'tertiary':\n return 'tertiary';\n case 'secondary-send':\n return 'secondary';\n default:\n return 'primary';\n }\n };\n\n return (\n <Option\n {...sharedProps}\n button={\n <Button\n v2\n size=\"sm\"\n priority={mapPriority(priority)}\n disabled={disabled}\n aria-label={getAriaLabel()}\n onClick={onClick}\n >\n {action}\n </Button>\n }\n />\n );\n};\n\nexport default ActionOption;\n"],"names":["ActionOption","action","priority","Priority","PRIMARY","disabled","onClick","media","title","content","additionalContent","complex","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","as","ariaLabel","sharedProps","clsx","getAriaLabel","generatedLabels","push","join","undefined","mapPriority","_jsx","Option","button","Button","v2","size","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCMA,MAAAA,YAAY,GAAGA,CAAC;EACpBC,MAAM;EACNC,QAAQ,GAAGC,gBAAQ,CAACC,OAAO;EAC3BC,QAAQ;EACRC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC,OAAO;EACPC,iBAAiB;EACjBC,OAAO;EACPC,SAAS;EACTC,mBAAmB;EACnBC,eAAe;EACfC,kBAAkB;EAClBC,EAAE;AACF,EAAA,YAAY,EAAEC,SAAAA;AAAS,CACL,KAAI;AACtB,EAAA,MAAMC,WAAW,GAAG;IAClBX,KAAK;IACLC,KAAK;IACLC,OAAO;IACPE,OAAO;IACPN,QAAQ;IACRQ,mBAAmB;IACnBC,eAAe;AACfF,IAAAA,SAAS,EAAEO,SAAI,CAAC,kBAAkB,EAAEP,SAAS,CAAC;IAC9CG,kBAAkB;IAClBL,iBAAiB;AACjBM,IAAAA,EAAAA;GACD,CAAA;EAED,MAAMI,YAAY,GAAGA,MAAyB;AAC5C,IAAA,IAAIH,SAAS,EAAE;AACb,MAAA,OAAOA,SAAS,CAAA;AAClB,KAAA;IAEA,MAAMI,eAAe,GAAa,EAAE,CAAA;AAEpC,IAAA,IAAI,OAAOb,KAAK,KAAK,QAAQ,EAAE;AAC7Ba,MAAAA,eAAe,CAACC,IAAI,CAACd,KAAK,CAAC,CAAA;AAC7B,KAAA;AAEA,IAAA,IAAI,OAAOP,MAAM,KAAK,QAAQ,EAAE;AAC9BoB,MAAAA,eAAe,CAACC,IAAI,CAACrB,MAAM,CAAC,CAAA;AAC9B,KAAA;AAEA,IAAA,OAAOoB,eAAe,CAACE,IAAI,CAAC,IAAI,CAAC,IAAIC,SAAS,CAAA;GAC/C,CAAA;EAED,MAAMC,WAAW,GAAIvB,QAA8B,IAAoB;AACrE,IAAA,QAAQA,QAAQ;AACd,MAAA,KAAK,SAAS;AACZ,QAAA,OAAO,SAAS,CAAA;AAClB,MAAA,KAAK,WAAW;AACd,QAAA,OAAO,mBAAmB,CAAA;AAC5B,MAAA,KAAK,UAAU;AACb,QAAA,OAAO,UAAU,CAAA;AACnB,MAAA,KAAK,gBAAgB;AACnB,QAAA,OAAO,WAAW,CAAA;AACpB,MAAA;AACE,QAAA,OAAO,SAAS,CAAA;AACpB,KAAA;GACD,CAAA;EAED,oBACEwB,cAAA,CAACC,MAAM,EAAA;AAAA,IAAA,GACDT,WAAW;IACfU,MAAM,eACJF,cAAA,CAACG,eAAM,EAAA;MACLC,EAAE,EAAA,IAAA;AACFC,MAAAA,IAAI,EAAC,IAAI;AACT7B,MAAAA,QAAQ,EAAEuB,WAAW,CAACvB,QAAQ,CAAE;AAChCG,MAAAA,QAAQ,EAAEA,QAAS;MACnB,YAAYe,EAAAA,YAAY,EAAG;AAC3Bd,MAAAA,OAAO,EAAEA,OAAQ;AAAA0B,MAAAA,QAAA,EAEhB/B,MAAAA;KACK,CAAA;AACT,GAAA,CACD,CAAA;AAEN;;;;"}
|
|
@@ -34,6 +34,7 @@ const ActionOption = ({
|
|
|
34
34
|
media,
|
|
35
35
|
title,
|
|
36
36
|
content,
|
|
37
|
+
additionalContent,
|
|
37
38
|
complex,
|
|
38
39
|
className,
|
|
39
40
|
showMediaAtAllSizes,
|
|
@@ -52,6 +53,7 @@ const ActionOption = ({
|
|
|
52
53
|
showMediaCircle,
|
|
53
54
|
className: clsx('tw-action-option', className),
|
|
54
55
|
isContainerAligned,
|
|
56
|
+
additionalContent,
|
|
55
57
|
as
|
|
56
58
|
};
|
|
57
59
|
const getAriaLabel = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionOption.mjs","sources":["../../src/actionOption/ActionOption.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport Button from '../button';\nimport {\n AriaLabelProperty,\n CommonProps,\n Priority,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n} from '../common';\nimport Option from '../common/Option';\nimport { ButtonPriority } from '../button/Button.types';\n\ntype ActionOptionPriority =\n | PriorityPrimary\n | PrioritySecondary\n | PriorityTertiary\n | 'secondary-send';\n\nexport type ActionOptionProps = {\n complex?: boolean;\n content?: React.ReactNode;\n disabled?: boolean;\n media?: React.ReactNode;\n showMediaAtAllSizes?: boolean;\n onClick: () => void;\n title: React.ReactNode;\n action: React.ReactNode;\n priority?: ActionOptionPriority;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n as?: React.ElementType;\n} & CommonProps &\n AriaLabelProperty;\n\nconst ActionOption = ({\n action,\n priority = Priority.PRIMARY,\n disabled,\n onClick,\n media,\n title,\n content,\n complex,\n className,\n showMediaAtAllSizes,\n showMediaCircle,\n isContainerAligned,\n as,\n 'aria-label': ariaLabel,\n}: ActionOptionProps) => {\n const sharedProps = {\n media,\n title,\n content,\n complex,\n disabled,\n showMediaAtAllSizes,\n showMediaCircle,\n className: clsx('tw-action-option', className),\n isContainerAligned,\n as,\n };\n\n const getAriaLabel = (): string | undefined => {\n if (ariaLabel) {\n return ariaLabel;\n }\n\n const generatedLabels: string[] = [];\n\n if (typeof title === 'string') {\n generatedLabels.push(title);\n }\n\n if (typeof action === 'string') {\n generatedLabels.push(action);\n }\n\n return generatedLabels.join(', ') || undefined;\n };\n\n const mapPriority = (priority: ActionOptionPriority): ButtonPriority => {\n switch (priority) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary-neutral';\n case 'tertiary':\n return 'tertiary';\n case 'secondary-send':\n return 'secondary';\n default:\n return 'primary';\n }\n };\n\n return (\n <Option\n {...sharedProps}\n button={\n <Button\n v2\n size=\"sm\"\n priority={mapPriority(priority)}\n disabled={disabled}\n aria-label={getAriaLabel()}\n onClick={onClick}\n >\n {action}\n </Button>\n }\n />\n );\n};\n\nexport default ActionOption;\n"],"names":["ActionOption","action","priority","Priority","PRIMARY","disabled","onClick","media","title","content","complex","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","as","ariaLabel","sharedProps","clsx","getAriaLabel","generatedLabels","push","join","undefined","mapPriority","_jsx","Option","button","Button","v2","size","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ActionOption.mjs","sources":["../../src/actionOption/ActionOption.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport Button from '../button';\nimport {\n AriaLabelProperty,\n CommonProps,\n Priority,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n} from '../common';\nimport Option from '../common/Option';\nimport { ButtonPriority } from '../button/Button.types';\n\ntype ActionOptionPriority =\n | PriorityPrimary\n | PrioritySecondary\n | PriorityTertiary\n | 'secondary-send';\n\nexport type ActionOptionProps = {\n complex?: boolean;\n content?: React.ReactNode;\n disabled?: boolean;\n media?: React.ReactNode;\n showMediaAtAllSizes?: boolean;\n onClick: () => void;\n title: React.ReactNode;\n additionalContent?: React.ReactNode;\n action: React.ReactNode;\n priority?: ActionOptionPriority;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n as?: React.ElementType;\n} & CommonProps &\n AriaLabelProperty;\n\nconst ActionOption = ({\n action,\n priority = Priority.PRIMARY,\n disabled,\n onClick,\n media,\n title,\n content,\n additionalContent,\n complex,\n className,\n showMediaAtAllSizes,\n showMediaCircle,\n isContainerAligned,\n as,\n 'aria-label': ariaLabel,\n}: ActionOptionProps) => {\n const sharedProps = {\n media,\n title,\n content,\n complex,\n disabled,\n showMediaAtAllSizes,\n showMediaCircle,\n className: clsx('tw-action-option', className),\n isContainerAligned,\n additionalContent,\n as,\n };\n\n const getAriaLabel = (): string | undefined => {\n if (ariaLabel) {\n return ariaLabel;\n }\n\n const generatedLabels: string[] = [];\n\n if (typeof title === 'string') {\n generatedLabels.push(title);\n }\n\n if (typeof action === 'string') {\n generatedLabels.push(action);\n }\n\n return generatedLabels.join(', ') || undefined;\n };\n\n const mapPriority = (priority: ActionOptionPriority): ButtonPriority => {\n switch (priority) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary-neutral';\n case 'tertiary':\n return 'tertiary';\n case 'secondary-send':\n return 'secondary';\n default:\n return 'primary';\n }\n };\n\n return (\n <Option\n {...sharedProps}\n button={\n <Button\n v2\n size=\"sm\"\n priority={mapPriority(priority)}\n disabled={disabled}\n aria-label={getAriaLabel()}\n onClick={onClick}\n >\n {action}\n </Button>\n }\n />\n );\n};\n\nexport default ActionOption;\n"],"names":["ActionOption","action","priority","Priority","PRIMARY","disabled","onClick","media","title","content","additionalContent","complex","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","as","ariaLabel","sharedProps","clsx","getAriaLabel","generatedLabels","push","join","undefined","mapPriority","_jsx","Option","button","Button","v2","size","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCMA,MAAAA,YAAY,GAAGA,CAAC;EACpBC,MAAM;EACNC,QAAQ,GAAGC,QAAQ,CAACC,OAAO;EAC3BC,QAAQ;EACRC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC,OAAO;EACPC,iBAAiB;EACjBC,OAAO;EACPC,SAAS;EACTC,mBAAmB;EACnBC,eAAe;EACfC,kBAAkB;EAClBC,EAAE;AACF,EAAA,YAAY,EAAEC,SAAAA;AAAS,CACL,KAAI;AACtB,EAAA,MAAMC,WAAW,GAAG;IAClBX,KAAK;IACLC,KAAK;IACLC,OAAO;IACPE,OAAO;IACPN,QAAQ;IACRQ,mBAAmB;IACnBC,eAAe;AACfF,IAAAA,SAAS,EAAEO,IAAI,CAAC,kBAAkB,EAAEP,SAAS,CAAC;IAC9CG,kBAAkB;IAClBL,iBAAiB;AACjBM,IAAAA,EAAAA;GACD,CAAA;EAED,MAAMI,YAAY,GAAGA,MAAyB;AAC5C,IAAA,IAAIH,SAAS,EAAE;AACb,MAAA,OAAOA,SAAS,CAAA;AAClB,KAAA;IAEA,MAAMI,eAAe,GAAa,EAAE,CAAA;AAEpC,IAAA,IAAI,OAAOb,KAAK,KAAK,QAAQ,EAAE;AAC7Ba,MAAAA,eAAe,CAACC,IAAI,CAACd,KAAK,CAAC,CAAA;AAC7B,KAAA;AAEA,IAAA,IAAI,OAAOP,MAAM,KAAK,QAAQ,EAAE;AAC9BoB,MAAAA,eAAe,CAACC,IAAI,CAACrB,MAAM,CAAC,CAAA;AAC9B,KAAA;AAEA,IAAA,OAAOoB,eAAe,CAACE,IAAI,CAAC,IAAI,CAAC,IAAIC,SAAS,CAAA;GAC/C,CAAA;EAED,MAAMC,WAAW,GAAIvB,QAA8B,IAAoB;AACrE,IAAA,QAAQA,QAAQ;AACd,MAAA,KAAK,SAAS;AACZ,QAAA,OAAO,SAAS,CAAA;AAClB,MAAA,KAAK,WAAW;AACd,QAAA,OAAO,mBAAmB,CAAA;AAC5B,MAAA,KAAK,UAAU;AACb,QAAA,OAAO,UAAU,CAAA;AACnB,MAAA,KAAK,gBAAgB;AACnB,QAAA,OAAO,WAAW,CAAA;AACpB,MAAA;AACE,QAAA,OAAO,SAAS,CAAA;AACpB,KAAA;GACD,CAAA;EAED,oBACEwB,GAAA,CAACC,MAAM,EAAA;AAAA,IAAA,GACDT,WAAW;IACfU,MAAM,eACJF,GAAA,CAACG,MAAM,EAAA;MACLC,EAAE,EAAA,IAAA;AACFC,MAAAA,IAAI,EAAC,IAAI;AACT7B,MAAAA,QAAQ,EAAEuB,WAAW,CAACvB,QAAQ,CAAE;AAChCG,MAAAA,QAAQ,EAAEA,QAAS;MACnB,YAAYe,EAAAA,YAAY,EAAG;AAC3Bd,MAAAA,OAAO,EAAEA,OAAQ;AAAA0B,MAAAA,QAAA,EAEhB/B,MAAAA;KACK,CAAA;AACT,GAAA,CACD,CAAA;AAEN;;;;"}
|
|
@@ -5,6 +5,7 @@ var React = require('react');
|
|
|
5
5
|
var Body = require('../../body/Body.js');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
8
|
+
/* eslint-disable react/display-name */
|
|
8
9
|
const Option = /*#__PURE__*/React.forwardRef(({
|
|
9
10
|
media = '',
|
|
10
11
|
title,
|
|
@@ -19,10 +20,11 @@ const Option = /*#__PURE__*/React.forwardRef(({
|
|
|
19
20
|
showMediaAtAllSizes,
|
|
20
21
|
showMediaCircle = true,
|
|
21
22
|
isContainerAligned = false,
|
|
23
|
+
additionalContent,
|
|
22
24
|
...rest
|
|
23
25
|
}, reference) => {
|
|
24
26
|
const Element = component ?? 'label';
|
|
25
|
-
return /*#__PURE__*/jsxRuntime.
|
|
27
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Element, {
|
|
26
28
|
...rest,
|
|
27
29
|
ref: reference,
|
|
28
30
|
className: clsx.clsx('np-option', className, {
|
|
@@ -33,8 +35,8 @@ const Option = /*#__PURE__*/React.forwardRef(({
|
|
|
33
35
|
'np-option__container-aligned': isContainerAligned
|
|
34
36
|
}),
|
|
35
37
|
disabled: disabled && Element === 'button',
|
|
36
|
-
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
37
|
-
className:
|
|
38
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
39
|
+
className: clsx.clsx('media'),
|
|
38
40
|
children: [media && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
39
41
|
className: "media-left",
|
|
40
42
|
children: showMediaCircle ? /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -65,7 +67,10 @@ const Option = /*#__PURE__*/React.forwardRef(({
|
|
|
65
67
|
className: "media-right",
|
|
66
68
|
children: button
|
|
67
69
|
})]
|
|
68
|
-
})
|
|
70
|
+
}), additionalContent ? /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
71
|
+
className: "np-option-additional-content",
|
|
72
|
+
children: [" ", additionalContent, " "]
|
|
73
|
+
}) : null]
|
|
69
74
|
});
|
|
70
75
|
});
|
|
71
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.js","sources":["../../../src/common/Option/Option.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Option.js","sources":["../../../src/common/Option/Option.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport { clsx } from 'clsx';\nimport { MouseEvent, forwardRef, HTMLAttributes, ReactNode, ElementType } from 'react';\n\nimport Body from '../../body';\nimport { LinkProps } from '../commonProps';\n\nexport interface BaseOptionProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'content'> {\n 'aria-label'?: string;\n 'aria-expanded'?: boolean;\n 'aria-controls'?: string;\n media?: ReactNode;\n name?: string;\n htmlFor?: string;\n title: ReactNode;\n content?: ReactNode;\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n as?: ElementType;\n disabled?: boolean;\n button?: ReactNode;\n decision?: boolean;\n complex?: boolean;\n inverseMediaCircle?: boolean;\n className?: string;\n showMediaAtAllSizes?: boolean;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n additionalContent?: ReactNode;\n}\n\ninterface AnchorOptionProps extends BaseOptionProps, LinkProps {\n as: 'a';\n}\n\nexport type OptionProps = BaseOptionProps | AnchorOptionProps;\n\nexport type ReferenceType = HTMLElement | HTMLAnchorElement;\n\nconst Option = forwardRef<ReferenceType, OptionProps>(\n (\n {\n media = '',\n title,\n content,\n as: component,\n button,\n decision = true,\n disabled = false,\n complex,\n inverseMediaCircle = true,\n className,\n showMediaAtAllSizes,\n showMediaCircle = true,\n isContainerAligned = false,\n additionalContent,\n ...rest\n },\n reference,\n ) => {\n const Element = component ?? 'label';\n\n return (\n <Element\n {...rest}\n ref={reference}\n className={clsx('np-option', className, {\n 'decision-complex': complex,\n decision,\n disabled,\n 'np-option__sm-media': showMediaAtAllSizes,\n 'np-option__container-aligned': isContainerAligned,\n })}\n disabled={disabled && Element === 'button'}\n >\n <div className={clsx('media')}>\n {media && (\n <div className=\"media-left\">\n {showMediaCircle ? (\n <div\n className={clsx('circle circle-sm text-primary', {\n 'circle-inverse': inverseMediaCircle,\n })}\n >\n {media}\n </div>\n ) : (\n <div className=\"np-option__no-media-circle\">{media}</div>\n )}\n </div>\n )}\n <div className=\"media-body\">\n {/* @ts-expect-error div can have role and aria-lavel props */}\n <Body\n type=\"body-large-bold\"\n // for a11y this needs to be a header but for SEO it shouldn't be `h*` tag\n // so we enable header semantics via `role` and `aria-level` attrs\n role=\"heading\"\n aria-level=\"4\"\n className=\"text-primary np-option__title\"\n >\n {title}\n </Body>\n {content && <Body className=\"d-block np-option__body\">{content}</Body>}\n </div>\n <div className=\"media-right\">{button}</div>\n </div>\n {additionalContent ? (\n <div className=\"np-option-additional-content\"> {additionalContent} </div>\n ) : null}\n </Element>\n );\n },\n);\n\nexport default Option;\n"],"names":["Option","forwardRef","media","title","content","as","component","button","decision","disabled","complex","inverseMediaCircle","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","additionalContent","rest","reference","Element","_jsxs","ref","clsx","children","_jsx","Body","type","role"],"mappings":";;;;;;;AAAA;AAsCA,MAAMA,MAAM,gBAAGC,gBAAU,CACvB,CACE;AACEC,EAAAA,KAAK,GAAG,EAAE;EACVC,KAAK;EACLC,OAAO;AACPC,EAAAA,EAAE,EAAEC,SAAS;EACbC,MAAM;AACNC,EAAAA,QAAQ,GAAG,IAAI;AACfC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,OAAO;AACPC,EAAAA,kBAAkB,GAAG,IAAI;EACzBC,SAAS;EACTC,mBAAmB;AACnBC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,kBAAkB,GAAG,KAAK;EAC1BC,iBAAiB;EACjB,GAAGC,IAAAA;AACJ,CAAA,EACDC,SAAS,KACP;AACF,EAAA,MAAMC,OAAO,GAAGb,SAAS,IAAI,OAAO,CAAA;EAEpC,oBACEc,eAAA,CAACD,OAAO,EAAA;AAAA,IAAA,GACFF,IAAI;AACRI,IAAAA,GAAG,EAAEH,SAAU;AACfN,IAAAA,SAAS,EAAEU,SAAI,CAAC,WAAW,EAAEV,SAAS,EAAE;AACtC,MAAA,kBAAkB,EAAEF,OAAO;MAC3BF,QAAQ;MACRC,QAAQ;AACR,MAAA,qBAAqB,EAAEI,mBAAmB;AAC1C,MAAA,8BAA8B,EAAEE,kBAAAA;KACjC,CAAE;AACHN,IAAAA,QAAQ,EAAEA,QAAQ,IAAIU,OAAO,KAAK,QAAS;AAAAI,IAAAA,QAAA,gBAE3CH,eAAA,CAAA,KAAA,EAAA;AAAKR,MAAAA,SAAS,EAAEU,SAAI,CAAC,OAAO,CAAE;MAAAC,QAAA,EAAA,CAC3BrB,KAAK,iBACJsB,cAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EACxBT,eAAe,gBACdU,cAAA,CAAA,KAAA,EAAA;AACEZ,UAAAA,SAAS,EAAEU,SAAI,CAAC,+BAA+B,EAAE;AAC/C,YAAA,gBAAgB,EAAEX,kBAAAA;AACnB,WAAA,CAAE;AAAAY,UAAAA,QAAA,EAEFrB,KAAAA;SACE,CAAC,gBAENsB,cAAA,CAAA,KAAA,EAAA;AAAKZ,UAAAA,SAAS,EAAC,4BAA4B;AAAAW,UAAAA,QAAA,EAAErB,KAAAA;SAAW,CAAA;OAEvD,CACN,eACDkB,eAAA,CAAA,KAAA,EAAA;AAAKR,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EAAA,cAEzBC,cAAA,CAACC,IAAI,EAAA;AACHC,UAAAA,IAAI,EAAC,iBAAA;AACL;AACA;AAAA;AACAC,UAAAA,IAAI,EAAC,SAAS;AACd,UAAA,YAAA,EAAW,GAAG;AACdf,UAAAA,SAAS,EAAC,+BAA+B;AAAAW,UAAAA,QAAA,EAExCpB,KAAAA;AAAK,SACF,CACN,EAACC,OAAO,iBAAIoB,cAAA,CAACC,IAAI,EAAA;AAACb,UAAAA,SAAS,EAAC,yBAAyB;AAAAW,UAAAA,QAAA,EAAEnB,OAAAA;AAAO,SAAO,CAAC,CAAA;OACnE,CACL,eAAAoB,cAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,aAAa;AAAAW,QAAAA,QAAA,EAAEhB,MAAAA;AAAM,OAAM,CAC5C,CAAA;AAAA,KAAK,CACL,EAACS,iBAAiB,gBAChBI,eAAA,CAAA,KAAA,EAAA;AAAKR,MAAAA,SAAS,EAAC,8BAA8B;AAAAW,MAAAA,QAAA,EAAE,CAAA,GAAA,EAACP,iBAAiB,EAAE,GAAA,CAAA;KAAK,CAAC,GACvE,IAAI,CAAA;AAAA,GACD,CAAC,CAAA;AAEd,CAAC;;;;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import Body from '../../body/Body.mjs';
|
|
4
|
-
import {
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
|
+
/* eslint-disable react/display-name */
|
|
6
7
|
const Option = /*#__PURE__*/forwardRef(({
|
|
7
8
|
media = '',
|
|
8
9
|
title,
|
|
@@ -17,10 +18,11 @@ const Option = /*#__PURE__*/forwardRef(({
|
|
|
17
18
|
showMediaAtAllSizes,
|
|
18
19
|
showMediaCircle = true,
|
|
19
20
|
isContainerAligned = false,
|
|
21
|
+
additionalContent,
|
|
20
22
|
...rest
|
|
21
23
|
}, reference) => {
|
|
22
24
|
const Element = component ?? 'label';
|
|
23
|
-
return /*#__PURE__*/
|
|
25
|
+
return /*#__PURE__*/jsxs(Element, {
|
|
24
26
|
...rest,
|
|
25
27
|
ref: reference,
|
|
26
28
|
className: clsx('np-option', className, {
|
|
@@ -31,8 +33,8 @@ const Option = /*#__PURE__*/forwardRef(({
|
|
|
31
33
|
'np-option__container-aligned': isContainerAligned
|
|
32
34
|
}),
|
|
33
35
|
disabled: disabled && Element === 'button',
|
|
34
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
35
|
-
className:
|
|
36
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
37
|
+
className: clsx('media'),
|
|
36
38
|
children: [media && /*#__PURE__*/jsx("div", {
|
|
37
39
|
className: "media-left",
|
|
38
40
|
children: showMediaCircle ? /*#__PURE__*/jsx("div", {
|
|
@@ -63,7 +65,10 @@ const Option = /*#__PURE__*/forwardRef(({
|
|
|
63
65
|
className: "media-right",
|
|
64
66
|
children: button
|
|
65
67
|
})]
|
|
66
|
-
})
|
|
68
|
+
}), additionalContent ? /*#__PURE__*/jsxs("div", {
|
|
69
|
+
className: "np-option-additional-content",
|
|
70
|
+
children: [" ", additionalContent, " "]
|
|
71
|
+
}) : null]
|
|
67
72
|
});
|
|
68
73
|
});
|
|
69
74
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.mjs","sources":["../../../src/common/Option/Option.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Option.mjs","sources":["../../../src/common/Option/Option.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport { clsx } from 'clsx';\nimport { MouseEvent, forwardRef, HTMLAttributes, ReactNode, ElementType } from 'react';\n\nimport Body from '../../body';\nimport { LinkProps } from '../commonProps';\n\nexport interface BaseOptionProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'content'> {\n 'aria-label'?: string;\n 'aria-expanded'?: boolean;\n 'aria-controls'?: string;\n media?: ReactNode;\n name?: string;\n htmlFor?: string;\n title: ReactNode;\n content?: ReactNode;\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n as?: ElementType;\n disabled?: boolean;\n button?: ReactNode;\n decision?: boolean;\n complex?: boolean;\n inverseMediaCircle?: boolean;\n className?: string;\n showMediaAtAllSizes?: boolean;\n showMediaCircle?: boolean;\n isContainerAligned?: boolean;\n additionalContent?: ReactNode;\n}\n\ninterface AnchorOptionProps extends BaseOptionProps, LinkProps {\n as: 'a';\n}\n\nexport type OptionProps = BaseOptionProps | AnchorOptionProps;\n\nexport type ReferenceType = HTMLElement | HTMLAnchorElement;\n\nconst Option = forwardRef<ReferenceType, OptionProps>(\n (\n {\n media = '',\n title,\n content,\n as: component,\n button,\n decision = true,\n disabled = false,\n complex,\n inverseMediaCircle = true,\n className,\n showMediaAtAllSizes,\n showMediaCircle = true,\n isContainerAligned = false,\n additionalContent,\n ...rest\n },\n reference,\n ) => {\n const Element = component ?? 'label';\n\n return (\n <Element\n {...rest}\n ref={reference}\n className={clsx('np-option', className, {\n 'decision-complex': complex,\n decision,\n disabled,\n 'np-option__sm-media': showMediaAtAllSizes,\n 'np-option__container-aligned': isContainerAligned,\n })}\n disabled={disabled && Element === 'button'}\n >\n <div className={clsx('media')}>\n {media && (\n <div className=\"media-left\">\n {showMediaCircle ? (\n <div\n className={clsx('circle circle-sm text-primary', {\n 'circle-inverse': inverseMediaCircle,\n })}\n >\n {media}\n </div>\n ) : (\n <div className=\"np-option__no-media-circle\">{media}</div>\n )}\n </div>\n )}\n <div className=\"media-body\">\n {/* @ts-expect-error div can have role and aria-lavel props */}\n <Body\n type=\"body-large-bold\"\n // for a11y this needs to be a header but for SEO it shouldn't be `h*` tag\n // so we enable header semantics via `role` and `aria-level` attrs\n role=\"heading\"\n aria-level=\"4\"\n className=\"text-primary np-option__title\"\n >\n {title}\n </Body>\n {content && <Body className=\"d-block np-option__body\">{content}</Body>}\n </div>\n <div className=\"media-right\">{button}</div>\n </div>\n {additionalContent ? (\n <div className=\"np-option-additional-content\"> {additionalContent} </div>\n ) : null}\n </Element>\n );\n },\n);\n\nexport default Option;\n"],"names":["Option","forwardRef","media","title","content","as","component","button","decision","disabled","complex","inverseMediaCircle","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","additionalContent","rest","reference","Element","_jsxs","ref","clsx","children","_jsx","Body","type","role"],"mappings":";;;;;AAAA;AAsCA,MAAMA,MAAM,gBAAGC,UAAU,CACvB,CACE;AACEC,EAAAA,KAAK,GAAG,EAAE;EACVC,KAAK;EACLC,OAAO;AACPC,EAAAA,EAAE,EAAEC,SAAS;EACbC,MAAM;AACNC,EAAAA,QAAQ,GAAG,IAAI;AACfC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,OAAO;AACPC,EAAAA,kBAAkB,GAAG,IAAI;EACzBC,SAAS;EACTC,mBAAmB;AACnBC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,kBAAkB,GAAG,KAAK;EAC1BC,iBAAiB;EACjB,GAAGC,IAAAA;AACJ,CAAA,EACDC,SAAS,KACP;AACF,EAAA,MAAMC,OAAO,GAAGb,SAAS,IAAI,OAAO,CAAA;EAEpC,oBACEc,IAAA,CAACD,OAAO,EAAA;AAAA,IAAA,GACFF,IAAI;AACRI,IAAAA,GAAG,EAAEH,SAAU;AACfN,IAAAA,SAAS,EAAEU,IAAI,CAAC,WAAW,EAAEV,SAAS,EAAE;AACtC,MAAA,kBAAkB,EAAEF,OAAO;MAC3BF,QAAQ;MACRC,QAAQ;AACR,MAAA,qBAAqB,EAAEI,mBAAmB;AAC1C,MAAA,8BAA8B,EAAEE,kBAAAA;KACjC,CAAE;AACHN,IAAAA,QAAQ,EAAEA,QAAQ,IAAIU,OAAO,KAAK,QAAS;AAAAI,IAAAA,QAAA,gBAE3CH,IAAA,CAAA,KAAA,EAAA;AAAKR,MAAAA,SAAS,EAAEU,IAAI,CAAC,OAAO,CAAE;MAAAC,QAAA,EAAA,CAC3BrB,KAAK,iBACJsB,GAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EACxBT,eAAe,gBACdU,GAAA,CAAA,KAAA,EAAA;AACEZ,UAAAA,SAAS,EAAEU,IAAI,CAAC,+BAA+B,EAAE;AAC/C,YAAA,gBAAgB,EAAEX,kBAAAA;AACnB,WAAA,CAAE;AAAAY,UAAAA,QAAA,EAEFrB,KAAAA;SACE,CAAC,gBAENsB,GAAA,CAAA,KAAA,EAAA;AAAKZ,UAAAA,SAAS,EAAC,4BAA4B;AAAAW,UAAAA,QAAA,EAAErB,KAAAA;SAAW,CAAA;OAEvD,CACN,eACDkB,IAAA,CAAA,KAAA,EAAA;AAAKR,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EAAA,cAEzBC,GAAA,CAACC,IAAI,EAAA;AACHC,UAAAA,IAAI,EAAC,iBAAA;AACL;AACA;AAAA;AACAC,UAAAA,IAAI,EAAC,SAAS;AACd,UAAA,YAAA,EAAW,GAAG;AACdf,UAAAA,SAAS,EAAC,+BAA+B;AAAAW,UAAAA,QAAA,EAExCpB,KAAAA;AAAK,SACF,CACN,EAACC,OAAO,iBAAIoB,GAAA,CAACC,IAAI,EAAA;AAACb,UAAAA,SAAS,EAAC,yBAAyB;AAAAW,UAAAA,QAAA,EAAEnB,OAAAA;AAAO,SAAO,CAAC,CAAA;OACnE,CACL,eAAAoB,GAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,aAAa;AAAAW,QAAAA,QAAA,EAAEhB,MAAAA;AAAM,OAAM,CAC5C,CAAA;AAAA,KAAK,CACL,EAACS,iBAAiB,gBAChBI,IAAA,CAAA,KAAA,EAAA;AAAKR,MAAAA,SAAS,EAAC,8BAA8B;AAAAW,MAAAA,QAAA,EAAE,CAAA,GAAA,EAACP,iBAAiB,EAAE,GAAA,CAAA;KAAK,CAAC,GACvE,IAAI,CAAA;AAAA,GACD,CAAC,CAAA;AAEd,CAAC;;;;"}
|
package/build/main.css
CHANGED
|
@@ -1770,6 +1770,28 @@ button.np-option {
|
|
|
1770
1770
|
border-radius: var(--radius-small);
|
|
1771
1771
|
}
|
|
1772
1772
|
}
|
|
1773
|
+
.np-theme-personal .np-option-additional-content {
|
|
1774
|
+
margin-left: 80px;
|
|
1775
|
+
margin-left: var(--size-80);
|
|
1776
|
+
margin-right: 16px;
|
|
1777
|
+
margin-right: var(--size-16);
|
|
1778
|
+
margin-top: -10px;
|
|
1779
|
+
padding-bottom: 16px;
|
|
1780
|
+
padding-bottom: var(--size-16);
|
|
1781
|
+
max-width: -moz-fit-content;
|
|
1782
|
+
max-width: fit-content;
|
|
1783
|
+
}
|
|
1784
|
+
@media (max-width: 480px) {
|
|
1785
|
+
.np-theme-personal .np-option-additional-content {
|
|
1786
|
+
margin-left: 16px;
|
|
1787
|
+
margin-left: var(--size-16);
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1790
|
+
@media (max-width: 320px) {
|
|
1791
|
+
.np-theme-personal .np-option-additional-content {
|
|
1792
|
+
margin-top: -3px;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1773
1795
|
.np-select-option {
|
|
1774
1796
|
border-radius: 10px;
|
|
1775
1797
|
border-radius: var(--radius-small);
|
|
@@ -98,3 +98,25 @@ button.np-option {
|
|
|
98
98
|
border-radius: var(--radius-small);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
.np-theme-personal .np-option-additional-content {
|
|
102
|
+
margin-left: 80px;
|
|
103
|
+
margin-left: var(--size-80);
|
|
104
|
+
margin-right: 16px;
|
|
105
|
+
margin-right: var(--size-16);
|
|
106
|
+
margin-top: -10px;
|
|
107
|
+
padding-bottom: 16px;
|
|
108
|
+
padding-bottom: var(--size-16);
|
|
109
|
+
max-width: -moz-fit-content;
|
|
110
|
+
max-width: fit-content;
|
|
111
|
+
}
|
|
112
|
+
@media (max-width: 480px) {
|
|
113
|
+
.np-theme-personal .np-option-additional-content {
|
|
114
|
+
margin-left: 16px;
|
|
115
|
+
margin-left: var(--size-16);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
@media (max-width: 320px) {
|
|
119
|
+
.np-theme-personal .np-option-additional-content {
|
|
120
|
+
margin-top: -3px;
|
|
121
|
+
}
|
|
122
|
+
}
|
package/build/styles/main.css
CHANGED
|
@@ -1770,6 +1770,28 @@ button.np-option {
|
|
|
1770
1770
|
border-radius: var(--radius-small);
|
|
1771
1771
|
}
|
|
1772
1772
|
}
|
|
1773
|
+
.np-theme-personal .np-option-additional-content {
|
|
1774
|
+
margin-left: 80px;
|
|
1775
|
+
margin-left: var(--size-80);
|
|
1776
|
+
margin-right: 16px;
|
|
1777
|
+
margin-right: var(--size-16);
|
|
1778
|
+
margin-top: -10px;
|
|
1779
|
+
padding-bottom: 16px;
|
|
1780
|
+
padding-bottom: var(--size-16);
|
|
1781
|
+
max-width: -moz-fit-content;
|
|
1782
|
+
max-width: fit-content;
|
|
1783
|
+
}
|
|
1784
|
+
@media (max-width: 480px) {
|
|
1785
|
+
.np-theme-personal .np-option-additional-content {
|
|
1786
|
+
margin-left: 16px;
|
|
1787
|
+
margin-left: var(--size-16);
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1790
|
+
@media (max-width: 320px) {
|
|
1791
|
+
.np-theme-personal .np-option-additional-content {
|
|
1792
|
+
margin-top: -3px;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1773
1795
|
.np-select-option {
|
|
1774
1796
|
border-radius: 10px;
|
|
1775
1797
|
border-radius: var(--radius-small);
|
|
@@ -8,12 +8,13 @@ export type ActionOptionProps = {
|
|
|
8
8
|
showMediaAtAllSizes?: boolean;
|
|
9
9
|
onClick: () => void;
|
|
10
10
|
title: React.ReactNode;
|
|
11
|
+
additionalContent?: React.ReactNode;
|
|
11
12
|
action: React.ReactNode;
|
|
12
13
|
priority?: ActionOptionPriority;
|
|
13
14
|
showMediaCircle?: boolean;
|
|
14
15
|
isContainerAligned?: boolean;
|
|
15
16
|
as?: React.ElementType;
|
|
16
17
|
} & CommonProps & AriaLabelProperty;
|
|
17
|
-
declare const ActionOption: ({ action, priority, disabled, onClick, media, title, content, complex, className, showMediaAtAllSizes, showMediaCircle, isContainerAligned, as, "aria-label": ariaLabel, }: ActionOptionProps) => import("react").JSX.Element;
|
|
18
|
+
declare const ActionOption: ({ action, priority, disabled, onClick, media, title, content, additionalContent, complex, className, showMediaAtAllSizes, showMediaCircle, isContainerAligned, as, "aria-label": ariaLabel, }: ActionOptionProps) => import("react").JSX.Element;
|
|
18
19
|
export default ActionOption;
|
|
19
20
|
//# sourceMappingURL=ActionOption.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionOption.d.ts","sourceRoot":"","sources":["../../../src/actionOption/ActionOption.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAInB,KAAK,oBAAoB,GACrB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB,GAAG,WAAW,GACb,iBAAiB,CAAC;AAEpB,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"ActionOption.d.ts","sourceRoot":"","sources":["../../../src/actionOption/ActionOption.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAInB,KAAK,oBAAoB,GACrB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB,GAAG,WAAW,GACb,iBAAiB,CAAC;AAEpB,QAAA,MAAM,YAAY,kMAgBf,iBAAiB,gCAiEnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -20,6 +20,7 @@ export interface BaseOptionProps extends Omit<HTMLAttributes<HTMLElement>, 'titl
|
|
|
20
20
|
showMediaAtAllSizes?: boolean;
|
|
21
21
|
showMediaCircle?: boolean;
|
|
22
22
|
isContainerAligned?: boolean;
|
|
23
|
+
additionalContent?: ReactNode;
|
|
23
24
|
}
|
|
24
25
|
interface AnchorOptionProps extends BaseOptionProps, LinkProps {
|
|
25
26
|
as: 'a';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../../src/common/Option/Option.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../../src/common/Option/Option.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAc,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGvF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,UAAU,iBAAkB,SAAQ,eAAe,EAAE,SAAS;IAC5D,EAAE,EAAE,GAAG,CAAC;CACT;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE5D,QAAA,MAAM,MAAM,uGA0EX,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -15,6 +15,8 @@ export default {
|
|
|
15
15
|
action: 'Action',
|
|
16
16
|
media: <FastFlagIcon />,
|
|
17
17
|
showMediaCircle: false,
|
|
18
|
+
additionalContent:
|
|
19
|
+
'Additional content goes here, this content does not align with the logo and button',
|
|
18
20
|
},
|
|
19
21
|
tags: ['autodocs'],
|
|
20
22
|
} satisfies Meta<typeof ActionOption>;
|
|
@@ -26,6 +26,7 @@ export type ActionOptionProps = {
|
|
|
26
26
|
showMediaAtAllSizes?: boolean;
|
|
27
27
|
onClick: () => void;
|
|
28
28
|
title: React.ReactNode;
|
|
29
|
+
additionalContent?: React.ReactNode;
|
|
29
30
|
action: React.ReactNode;
|
|
30
31
|
priority?: ActionOptionPriority;
|
|
31
32
|
showMediaCircle?: boolean;
|
|
@@ -42,6 +43,7 @@ const ActionOption = ({
|
|
|
42
43
|
media,
|
|
43
44
|
title,
|
|
44
45
|
content,
|
|
46
|
+
additionalContent,
|
|
45
47
|
complex,
|
|
46
48
|
className,
|
|
47
49
|
showMediaAtAllSizes,
|
|
@@ -60,6 +62,7 @@ const ActionOption = ({
|
|
|
60
62
|
showMediaCircle,
|
|
61
63
|
className: clsx('tw-action-option', className),
|
|
62
64
|
isContainerAligned,
|
|
65
|
+
additionalContent,
|
|
63
66
|
as,
|
|
64
67
|
};
|
|
65
68
|
|
|
@@ -98,3 +98,25 @@ button.np-option {
|
|
|
98
98
|
border-radius: var(--radius-small);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
.np-theme-personal .np-option-additional-content {
|
|
102
|
+
margin-left: 80px;
|
|
103
|
+
margin-left: var(--size-80);
|
|
104
|
+
margin-right: 16px;
|
|
105
|
+
margin-right: var(--size-16);
|
|
106
|
+
margin-top: -10px;
|
|
107
|
+
padding-bottom: 16px;
|
|
108
|
+
padding-bottom: var(--size-16);
|
|
109
|
+
max-width: -moz-fit-content;
|
|
110
|
+
max-width: fit-content;
|
|
111
|
+
}
|
|
112
|
+
@media (max-width: 480px) {
|
|
113
|
+
.np-theme-personal .np-option-additional-content {
|
|
114
|
+
margin-left: 16px;
|
|
115
|
+
margin-left: var(--size-16);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
@media (max-width: 320px) {
|
|
119
|
+
.np-theme-personal .np-option-additional-content {
|
|
120
|
+
margin-top: -3px;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -95,4 +95,25 @@ button.np-option {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
+
|
|
99
|
+
.np-option-additional-content {
|
|
100
|
+
margin-left: var(--size-80);
|
|
101
|
+
margin-right: var(--size-16);
|
|
102
|
+
margin-top: -10px;
|
|
103
|
+
padding-bottom: var(--size-16);
|
|
104
|
+
max-width:fit-content
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@media (max-width: 480px) {
|
|
108
|
+
.np-option-additional-content {
|
|
109
|
+
margin-left: var(--size-16);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@media (--screen-400-zoom) {
|
|
114
|
+
.np-option-additional-content {
|
|
115
|
+
margin-top: -3px;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
98
119
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable react/display-name */
|
|
1
2
|
import { clsx } from 'clsx';
|
|
2
3
|
import { MouseEvent, forwardRef, HTMLAttributes, ReactNode, ElementType } from 'react';
|
|
3
4
|
|
|
@@ -24,6 +25,7 @@ export interface BaseOptionProps extends Omit<HTMLAttributes<HTMLElement>, 'titl
|
|
|
24
25
|
showMediaAtAllSizes?: boolean;
|
|
25
26
|
showMediaCircle?: boolean;
|
|
26
27
|
isContainerAligned?: boolean;
|
|
28
|
+
additionalContent?: ReactNode;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
interface AnchorOptionProps extends BaseOptionProps, LinkProps {
|
|
@@ -50,6 +52,7 @@ const Option = forwardRef<ReferenceType, OptionProps>(
|
|
|
50
52
|
showMediaAtAllSizes,
|
|
51
53
|
showMediaCircle = true,
|
|
52
54
|
isContainerAligned = false,
|
|
55
|
+
additionalContent,
|
|
53
56
|
...rest
|
|
54
57
|
},
|
|
55
58
|
reference,
|
|
@@ -69,7 +72,7 @@ const Option = forwardRef<ReferenceType, OptionProps>(
|
|
|
69
72
|
})}
|
|
70
73
|
disabled={disabled && Element === 'button'}
|
|
71
74
|
>
|
|
72
|
-
<div className=
|
|
75
|
+
<div className={clsx('media')}>
|
|
73
76
|
{media && (
|
|
74
77
|
<div className="media-left">
|
|
75
78
|
{showMediaCircle ? (
|
|
@@ -101,6 +104,9 @@ const Option = forwardRef<ReferenceType, OptionProps>(
|
|
|
101
104
|
</div>
|
|
102
105
|
<div className="media-right">{button}</div>
|
|
103
106
|
</div>
|
|
107
|
+
{additionalContent ? (
|
|
108
|
+
<div className="np-option-additional-content"> {additionalContent} </div>
|
|
109
|
+
) : null}
|
|
104
110
|
</Element>
|
|
105
111
|
);
|
|
106
112
|
},
|
package/src/main.css
CHANGED
|
@@ -1770,6 +1770,28 @@ button.np-option {
|
|
|
1770
1770
|
border-radius: var(--radius-small);
|
|
1771
1771
|
}
|
|
1772
1772
|
}
|
|
1773
|
+
.np-theme-personal .np-option-additional-content {
|
|
1774
|
+
margin-left: 80px;
|
|
1775
|
+
margin-left: var(--size-80);
|
|
1776
|
+
margin-right: 16px;
|
|
1777
|
+
margin-right: var(--size-16);
|
|
1778
|
+
margin-top: -10px;
|
|
1779
|
+
padding-bottom: 16px;
|
|
1780
|
+
padding-bottom: var(--size-16);
|
|
1781
|
+
max-width: -moz-fit-content;
|
|
1782
|
+
max-width: fit-content;
|
|
1783
|
+
}
|
|
1784
|
+
@media (max-width: 480px) {
|
|
1785
|
+
.np-theme-personal .np-option-additional-content {
|
|
1786
|
+
margin-left: 16px;
|
|
1787
|
+
margin-left: var(--size-16);
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1790
|
+
@media (max-width: 320px) {
|
|
1791
|
+
.np-theme-personal .np-option-additional-content {
|
|
1792
|
+
margin-top: -3px;
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1773
1795
|
.np-select-option {
|
|
1774
1796
|
border-radius: 10px;
|
|
1775
1797
|
border-radius: var(--radius-small);
|