@veracity/vui 1.7.0-beta.1 → 1.7.0-beta.2

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.
Files changed (58) hide show
  1. package/dist/cjs/accordion/accordion.d.ts.map +1 -1
  2. package/dist/cjs/accordion/accordion.js +3 -3
  3. package/dist/cjs/accordion/accordion.types.d.ts +4 -0
  4. package/dist/cjs/accordion/accordion.types.d.ts.map +1 -1
  5. package/dist/cjs/accordion/accordionItem.d.ts.map +1 -1
  6. package/dist/cjs/accordion/accordionItem.js +2 -2
  7. package/dist/cjs/accordion/accordionItemHorizontal.d.ts +1 -1
  8. package/dist/cjs/accordion/accordionItemHorizontal.d.ts.map +1 -1
  9. package/dist/cjs/accordion/accordionItemHorizontal.js +3 -3
  10. package/dist/cjs/copyToClipboard/copyToClipboard.d.ts +12 -0
  11. package/dist/cjs/copyToClipboard/copyToClipboard.d.ts.map +1 -0
  12. package/dist/cjs/copyToClipboard/copyToClipboard.js +36 -0
  13. package/dist/cjs/copyToClipboard/copyToClipboard.types.d.ts +9 -0
  14. package/dist/cjs/copyToClipboard/copyToClipboard.types.d.ts.map +1 -0
  15. package/dist/cjs/copyToClipboard/copyToClipboard.types.js +2 -0
  16. package/dist/cjs/copyToClipboard/index.d.ts +5 -0
  17. package/dist/cjs/copyToClipboard/index.d.ts.map +1 -0
  18. package/dist/cjs/copyToClipboard/index.js +25 -0
  19. package/dist/cjs/copyToClipboard/useCopyToClipboard.d.ts +5 -0
  20. package/dist/cjs/copyToClipboard/useCopyToClipboard.d.ts.map +1 -0
  21. package/dist/cjs/copyToClipboard/useCopyToClipboard.js +17 -0
  22. package/dist/cjs/index.d.ts +1 -0
  23. package/dist/cjs/index.d.ts.map +1 -1
  24. package/dist/cjs/index.js +1 -0
  25. package/dist/esm/accordion/accordion.d.ts.map +1 -1
  26. package/dist/esm/accordion/accordion.js +3 -3
  27. package/dist/esm/accordion/accordion.types.d.ts +4 -0
  28. package/dist/esm/accordion/accordion.types.d.ts.map +1 -1
  29. package/dist/esm/accordion/accordionItem.d.ts.map +1 -1
  30. package/dist/esm/accordion/accordionItem.js +2 -2
  31. package/dist/esm/accordion/accordionItemHorizontal.d.ts +1 -1
  32. package/dist/esm/accordion/accordionItemHorizontal.d.ts.map +1 -1
  33. package/dist/esm/accordion/accordionItemHorizontal.js +3 -3
  34. package/dist/esm/copyToClipboard/copyToClipboard.d.ts +12 -0
  35. package/dist/esm/copyToClipboard/copyToClipboard.d.ts.map +1 -0
  36. package/dist/esm/copyToClipboard/copyToClipboard.js +19 -0
  37. package/dist/esm/copyToClipboard/copyToClipboard.types.d.ts +9 -0
  38. package/dist/esm/copyToClipboard/copyToClipboard.types.d.ts.map +1 -0
  39. package/dist/esm/copyToClipboard/copyToClipboard.types.js +1 -0
  40. package/dist/esm/copyToClipboard/index.d.ts +5 -0
  41. package/dist/esm/copyToClipboard/index.d.ts.map +1 -0
  42. package/dist/esm/copyToClipboard/index.js +4 -0
  43. package/dist/esm/copyToClipboard/useCopyToClipboard.d.ts +5 -0
  44. package/dist/esm/copyToClipboard/useCopyToClipboard.d.ts.map +1 -0
  45. package/dist/esm/copyToClipboard/useCopyToClipboard.js +14 -0
  46. package/dist/esm/index.d.ts +1 -0
  47. package/dist/esm/index.d.ts.map +1 -1
  48. package/dist/esm/index.js +1 -0
  49. package/package.json +1 -1
  50. package/src/accordion/accordion.tsx +7 -3
  51. package/src/accordion/accordion.types.ts +4 -0
  52. package/src/accordion/accordionItem.tsx +13 -2
  53. package/src/accordion/accordionItemHorizontal.tsx +14 -3
  54. package/src/copyToClipboard/copyToClipboard.tsx +36 -0
  55. package/src/copyToClipboard/copyToClipboard.types.ts +10 -0
  56. package/src/copyToClipboard/index.ts +4 -0
  57. package/src/copyToClipboard/useCopyToClipboard.ts +15 -0
  58. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDAyBpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDA6BpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -53,13 +53,13 @@ exports.AccordionBase = core_1.styled.divBox `
53
53
  /** Allows to show and hide sections of related content on a page. */
54
54
  exports.Accordion = (0, core_1.vui)((props, ref) => {
55
55
  var _a, _b;
56
- const { children, className, orientation = 'vertical', items, size } = props, rest = __rest(props, ["children", "className", "orientation", "items", "size"]);
56
+ const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size } = props, rest = __rest(props, ["children", "className", "itemTitleHoverBg", "items", "orientation", "size"]);
57
57
  const styles = (0, core_1.useStyleConfig)('Accordion', props);
58
58
  const context = (0, react_1.useMemo)(() => (0, utils_1.filterUndefined)({ size }), [size]);
59
59
  const aliasedProps = (0, utils_1.filterUndefined)({});
60
60
  return (react_1.default.createElement(context_1.AccordionProvider, { value: context },
61
61
  react_1.default.createElement(exports.AccordionBase, Object.assign({ className: (0, utils_1.cs)('vui-accordion', className), ref: ref }, styles, aliasedProps, rest), orientation === 'vertical' ? (react_1.default.createElement(list_1.default, { w: "100%" }, items
62
- ? (_a = items === null || items === void 0 ? void 0 : items.map) === null || _a === void 0 ? void 0 : _a.call(items, (item, key) => react_1.default.createElement(accordionItem_1.default, Object.assign({ key: key }, item)))
63
- : children)) : items ? ((_b = items === null || items === void 0 ? void 0 : items.map) === null || _b === void 0 ? void 0 : _b.call(items, (item, key) => react_1.default.createElement(accordionItemHorizontal_1.default, Object.assign({ key: key }, item)))) : (children))));
62
+ ? (_a = items === null || items === void 0 ? void 0 : items.map) === null || _a === void 0 ? void 0 : _a.call(items, (item, key) => (react_1.default.createElement(accordionItem_1.default, Object.assign({ itemTitleHoverBg: itemTitleHoverBg, key: key }, item))))
63
+ : children)) : items ? ((_b = items === null || items === void 0 ? void 0 : items.map) === null || _b === void 0 ? void 0 : _b.call(items, (item, key) => (react_1.default.createElement(accordionItemHorizontal_1.default, Object.assign({ itemTitleHoverBg: itemTitleHoverBg, key: key }, item))))) : (children))));
64
64
  });
65
65
  exports.default = exports.Accordion;
@@ -6,6 +6,8 @@ export declare type Orientation = 'vertical' | 'horizontal';
6
6
  export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
7
7
  /** Items orientation @default 'vertical' */
8
8
  orientation?: Orientation;
9
+ /** Hover color for the item title @default "blue.10" */
10
+ itemTitleHoverBg?: string;
9
11
  items?: AccordionItemProps[];
10
12
  };
11
13
  export declare type AccordionItemId = string | number;
@@ -24,6 +26,8 @@ export declare type AccordionItemProps = ListItemProps & {
24
26
  content?: ReactNode;
25
27
  /** Collapsed state */
26
28
  collapsed?: boolean;
29
+ /** Hover color for the item title @default "blue.10" */
30
+ itemTitleHoverBg?: string;
27
31
  /** Title */
28
32
  title?: string | ReactNode;
29
33
  /** Collapse change state */
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAkDtD,CAAA;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBA6DtD,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -47,7 +47,7 @@ const accordionItemArrow_1 = __importDefault(require("./accordionItemArrow"));
47
47
  const context_1 = require("./context");
48
48
  /** An accordion item. */
49
49
  const AccordionItem = (props) => {
50
- const _a = (0, core_1.omitThemingProps)(props), { className, children, id, content, disabled, title, collapsed, onToggle } = _a, rest = __rest(_a, ["className", "children", "id", "content", "disabled", "title", "collapsed", "onToggle"]);
50
+ const _a = (0, core_1.omitThemingProps)(props), { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle } = _a, rest = __rest(_a, ["className", "children", "collapsed", "content", "disabled", "id", "itemTitleHoverBg", "title", "onToggle"]);
51
51
  const [collapsedInternal, setIsCollapsedInternal] = (0, react_1.useState)(false);
52
52
  const styles = (0, core_1.useStyleConfig)('Accordion', (0, context_1.useAccordionContext)());
53
53
  (0, react_1.useEffect)(() => {
@@ -60,7 +60,7 @@ const AccordionItem = (props) => {
60
60
  }
61
61
  };
62
62
  return (react_1.default.createElement(list_1.ListItem, Object.assign({ borderBottom: "1px solid grey.40", className: (0, utils_1.cs)('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto", id: `${id}`, p: 0, w: "100%" }, rest),
63
- react_1.default.createElement(box_1.Box, Object.assign({ cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: "blue.10", justifyContent: "space-between", onClick: toggle, px: 2, w: "100%" }, styles.item),
63
+ react_1.default.createElement(box_1.Box, Object.assign({ cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: itemTitleHoverBg, justifyContent: "space-between", onClick: toggle, px: 2, w: "100%" }, styles.item),
64
64
  react_1.default.createElement(box_1.Box, { fontWeight: typeof title === 'string' ? '500' : 'inherit' }, title),
65
65
  react_1.default.createElement(box_1.Box, null,
66
66
  react_1.default.createElement(accordionItemArrow_1.default, { collapsed: collapsedInternal }))),
@@ -1,5 +1,5 @@
1
1
  import { AccordionItemProps } from './accordion.types';
2
- /** [Beta] An accordion item (horizontal orientation). */
2
+ /** An accordion item (horizontal orientation). */
3
3
  export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
4
4
  export default AccordionItemHorizontal;
5
5
  //# sourceMappingURL=accordionItemHorizontal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAwEhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
1
+ {"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAmFhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
@@ -44,9 +44,9 @@ const core_1 = require("../core");
44
44
  const utils_1 = require("../utils");
45
45
  const accordionItemArrow_1 = __importDefault(require("./accordionItemArrow"));
46
46
  const context_1 = require("./context");
47
- /** [Beta] An accordion item (horizontal orientation). */
47
+ /** An accordion item (horizontal orientation). */
48
48
  const AccordionItemHorizontal = (props) => {
49
- const _a = (0, core_1.omitThemingProps)(props), { className, children, id, content, disabled, title, collapsed, onToggle } = _a, rest = __rest(_a, ["className", "children", "id", "content", "disabled", "title", "collapsed", "onToggle"]);
49
+ const _a = (0, core_1.omitThemingProps)(props), { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle } = _a, rest = __rest(_a, ["className", "children", "collapsed", "content", "disabled", "id", "itemTitleHoverBg", "title", "onToggle"]);
50
50
  const [collapsedInternal, setIsCollapsedInternal] = (0, react_1.useState)(false);
51
51
  const styles = (0, core_1.useStyleConfig)('Accordion', (0, context_1.useAccordionContext)());
52
52
  (0, react_1.useEffect)(() => {
@@ -61,7 +61,7 @@ const AccordionItemHorizontal = (props) => {
61
61
  const cursor = disabled ? 'not-allowed' : 'pointer';
62
62
  const fontWeight = typeof title === 'string' ? '500' : 'inherit';
63
63
  return (react_1.default.createElement(box_1.default, Object.assign({ alignItems: collapsedInternal ? 'normal' : 'baseline', bg: disabled ? 'disabled.bg' : undefined, borderRight: "1px solid grey.40", className: (0, utils_1.cs)('vui-accordion-item-horizontal', className), color: disabled ? 'disabled.color' : undefined, column: true, cursor: disabled ? 'not-allowed' : undefined, id: `${id}`, maxW: collapsedInternal ? styles.item.minH : 'auto', minW: styles.item.minH, p: 0, transitionDuration: "0ms", userSelect: disabled ? 'none' : undefined }, rest),
64
- react_1.default.createElement(box_1.default, Object.assign({}, styles.item, { cursor: cursor, hoverBg: "blue.10", justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" }),
64
+ react_1.default.createElement(box_1.default, Object.assign({}, styles.item, { cursor: cursor, hoverBg: itemTitleHoverBg, justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" }),
65
65
  !collapsedInternal && react_1.default.createElement(box_1.default, { fontWeight: fontWeight }, title),
66
66
  react_1.default.createElement(accordionItemArrow_1.default, { collapsed: collapsedInternal, orientation: "horizontal" })),
67
67
  !collapsedInternal ? (react_1.default.createElement(box_1.default, { p: styles.item.pt, pt: 0, transitionDuration: "0ms" }, children !== null && children !== void 0 ? children : content)) : (react_1.default.createElement(box_1.default, { cursor: cursor, flexDirection: "row-reverse", fontWeight: fontWeight, mb: styles.item.minH, mt: styles.item.pt, onClick: toggle, transform: "rotate(-90deg)", transitionDuration: "0ms", whiteSpace: "nowrap" }, title))));
@@ -0,0 +1,12 @@
1
+ import { CopyToClipboardProps } from './copyToClipboard.types';
2
+ /**
3
+ * A helper button component.
4
+ *
5
+ * Copies the provided text to clipboard.
6
+ *
7
+ * Copying is available only for a secure environment (https://), otherwise the button is disabled.
8
+ *
9
+ */
10
+ export declare const CopyToClipboard: import("../core").VuiComponent<"button", CopyToClipboardProps>;
11
+ export default CopyToClipboard;
12
+ //# sourceMappingURL=copyToClipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,gEAiB1B,CAAA;AAEF,eAAe,eAAe,CAAA"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CopyToClipboard = void 0;
18
+ const react_1 = __importDefault(require("react"));
19
+ const button_1 = __importDefault(require("../button"));
20
+ const core_1 = require("../core");
21
+ const utils_1 = require("../utils");
22
+ const useCopyToClipboard_1 = require("./useCopyToClipboard");
23
+ /**
24
+ * A helper button component.
25
+ *
26
+ * Copies the provided text to clipboard.
27
+ *
28
+ * Copying is available only for a secure environment (https://), otherwise the button is disabled.
29
+ *
30
+ */
31
+ exports.CopyToClipboard = (0, core_1.vui)((props, ref) => {
32
+ const { disabled, copyText, className, size = 'xs', variant = 'text' } = props, rest = __rest(props, ["disabled", "copyText", "className", "size", "variant"]);
33
+ const { copy, isCopyDisabled } = (0, useCopyToClipboard_1.useCopyToClipboard)(copyText);
34
+ return (react_1.default.createElement(button_1.default, Object.assign({ className: (0, utils_1.cs)('vui-copy-to-clipboard', className), disabled: disabled || isCopyDisabled, icon: "falCopy", onClick: () => copy(), ref: ref, size: size, variant: variant }, rest)));
35
+ });
36
+ exports.default = exports.CopyToClipboard;
@@ -0,0 +1,9 @@
1
+ import { SystemProps } from '../system';
2
+ import { ThemingProps } from '../theme';
3
+ export declare type CopyToClipboardProps = SystemProps & ThemingProps<'Button'> & {
4
+ /** Text string for copying */
5
+ copyText: string;
6
+ /** Button size @default "xs" */
7
+ size?: 'xs' | 'sm' | 'md' | 'lg';
8
+ };
9
+ //# sourceMappingURL=copyToClipboard.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyToClipboard.types.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,oBAAoB,GAAG,WAAW,GAC5C,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACjC,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export * from './copyToClipboard';
2
+ export { default } from './copyToClipboard';
3
+ export * from './copyToClipboard.types';
4
+ export * from './useCopyToClipboard';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.default = void 0;
21
+ __exportStar(require("./copyToClipboard"), exports);
22
+ var copyToClipboard_1 = require("./copyToClipboard");
23
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(copyToClipboard_1).default; } });
24
+ __exportStar(require("./copyToClipboard.types"), exports);
25
+ __exportStar(require("./useCopyToClipboard"), exports);
@@ -0,0 +1,5 @@
1
+ export declare const useCopyToClipboard: (copyText: string) => {
2
+ copy: () => void;
3
+ isCopyDisabled: boolean;
4
+ };
5
+ //# sourceMappingURL=useCopyToClipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,aAAc,MAAM;;;CAYlD,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCopyToClipboard = void 0;
4
+ const toast_1 = require("../toast");
5
+ const useCopyToClipboard = (copyText) => {
6
+ var _a, _b;
7
+ const { showSuccess, showError } = (0, toast_1.useToast)();
8
+ const isCopyDisabled = !((_b = (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.clipboard) === null || _b === void 0 ? void 0 : _b.writeText);
9
+ const copy = () => {
10
+ var _a, _b, _c;
11
+ if (!isCopyDisabled) {
12
+ (_c = (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : (_b = _a.clipboard).writeText) === null || _c === void 0 ? void 0 : _c.call(_b, copyText).then(() => showSuccess(`Copied to clipboard: ${copyText}`)).catch(() => showError('Copy failed'));
13
+ }
14
+ };
15
+ return { copy, isCopyDisabled };
16
+ };
17
+ exports.useCopyToClipboard = useCopyToClipboard;
@@ -6,6 +6,7 @@ export * from './buttonGroup';
6
6
  export * from './buttonToggleGroup';
7
7
  export * from './card';
8
8
  export * from './checkbox';
9
+ export * from './copyToClipboard';
9
10
  export * from './core';
10
11
  export * from './dialog';
11
12
  export * from './divider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
package/dist/cjs/index.js CHANGED
@@ -22,6 +22,7 @@ __exportStar(require("./buttonGroup"), exports);
22
22
  __exportStar(require("./buttonToggleGroup"), exports);
23
23
  __exportStar(require("./card"), exports);
24
24
  __exportStar(require("./checkbox"), exports);
25
+ __exportStar(require("./copyToClipboard"), exports);
25
26
  __exportStar(require("./core"), exports);
26
27
  __exportStar(require("./dialog"), exports);
27
28
  __exportStar(require("./divider"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDAyBpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKtE,eAAO,MAAM,aAAa,+HAIzB,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,uDA6BpB,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -12,13 +12,13 @@ export const AccordionBase = styled.divBox `
12
12
  `;
13
13
  /** Allows to show and hide sections of related content on a page. */
14
14
  export const Accordion = vui((props, ref) => {
15
- const { children, className, orientation = 'vertical', items, size, ...rest } = props;
15
+ const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size, ...rest } = props;
16
16
  const styles = useStyleConfig('Accordion', props);
17
17
  const context = useMemo(() => filterUndefined({ size }), [size]);
18
18
  const aliasedProps = filterUndefined({});
19
19
  return (React.createElement(AccordionProvider, { value: context },
20
20
  React.createElement(AccordionBase, { className: cs('vui-accordion', className), ref: ref, ...styles, ...aliasedProps, ...rest }, orientation === 'vertical' ? (React.createElement(List, { w: "100%" }, items
21
- ? items?.map?.((item, key) => React.createElement(AccordionItem, { key: key, ...item }))
22
- : children)) : items ? (items?.map?.((item, key) => React.createElement(AccordionItemHorizontal, { key: key, ...item }))) : (children))));
21
+ ? items?.map?.((item, key) => (React.createElement(AccordionItem, { itemTitleHoverBg: itemTitleHoverBg, key: key, ...item })))
22
+ : children)) : items ? (items?.map?.((item, key) => (React.createElement(AccordionItemHorizontal, { itemTitleHoverBg: itemTitleHoverBg, key: key, ...item })))) : (children))));
23
23
  });
24
24
  export default Accordion;
@@ -6,6 +6,8 @@ export declare type Orientation = 'vertical' | 'horizontal';
6
6
  export declare type AccordionProps = SystemProps & ThemingProps<'Accordion'> & {
7
7
  /** Items orientation @default 'vertical' */
8
8
  orientation?: Orientation;
9
+ /** Hover color for the item title @default "blue.10" */
10
+ itemTitleHoverBg?: string;
9
11
  items?: AccordionItemProps[];
10
12
  };
11
13
  export declare type AccordionItemId = string | number;
@@ -24,6 +26,8 @@ export declare type AccordionItemProps = ListItemProps & {
24
26
  content?: ReactNode;
25
27
  /** Collapsed state */
26
28
  collapsed?: boolean;
29
+ /** Hover color for the item title @default "blue.10" */
30
+ itemTitleHoverBg?: string;
27
31
  /** Title */
28
32
  title?: string | ReactNode;
29
33
  /** Collapse change state */
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnD,oBAAY,cAAc,GAAG,WAAW,GACtC,YAAY,CAAC,WAAW,CAAC,GAAG;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAEH,oBAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,oBAAY,kBAAkB,GAAG,aAAa,GAAG;IAC/C,gBAAgB;IAChB,EAAE,EAAE,eAAe,CAAA;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oBAAY,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAkDtD,CAAA;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"accordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItem.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yBAAyB;AACzB,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBA6DtD,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -7,7 +7,7 @@ import AccordionItemArrow from './accordionItemArrow';
7
7
  import { useAccordionContext } from './context';
8
8
  /** An accordion item. */
9
9
  export const AccordionItem = (props) => {
10
- const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props);
10
+ const { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle, ...rest } = omitThemingProps(props);
11
11
  const [collapsedInternal, setIsCollapsedInternal] = useState(false);
12
12
  const styles = useStyleConfig('Accordion', useAccordionContext());
13
13
  useEffect(() => {
@@ -20,7 +20,7 @@ export const AccordionItem = (props) => {
20
20
  }
21
21
  };
22
22
  return (React.createElement(ListItem, { borderBottom: "1px solid grey.40", className: cs('vui-accordion-item', className), disabled: disabled, flexDirection: "column", h: "auto", id: `${id}`, p: 0, w: "100%", ...rest },
23
- React.createElement(Box, { cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: "blue.10", justifyContent: "space-between", onClick: toggle, px: 2, w: "100%", ...styles.item },
23
+ React.createElement(Box, { cursor: disabled ? 'not-allowed' : 'pointer', hoverBg: itemTitleHoverBg, justifyContent: "space-between", onClick: toggle, px: 2, w: "100%", ...styles.item },
24
24
  React.createElement(Box, { fontWeight: typeof title === 'string' ? '500' : 'inherit' }, title),
25
25
  React.createElement(Box, null,
26
26
  React.createElement(AccordionItemArrow, { collapsed: collapsedInternal }))),
@@ -1,5 +1,5 @@
1
1
  import { AccordionItemProps } from './accordion.types';
2
- /** [Beta] An accordion item (horizontal orientation). */
2
+ /** An accordion item (horizontal orientation). */
3
3
  export declare const AccordionItemHorizontal: (props: AccordionItemProps) => JSX.Element;
4
4
  export default AccordionItemHorizontal;
5
5
  //# sourceMappingURL=accordionItemHorizontal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAwEhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
1
+ {"version":3,"file":"accordionItemHorizontal.d.ts","sourceRoot":"","sources":["../../../src/accordion/accordionItemHorizontal.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,UAAW,kBAAkB,gBAmFhE,CAAA;AAED,eAAe,uBAAuB,CAAA"}
@@ -4,9 +4,9 @@ import { omitThemingProps, useStyleConfig } from '../core';
4
4
  import { cs } from '../utils';
5
5
  import AccordionItemArrow from './accordionItemArrow';
6
6
  import { useAccordionContext } from './context';
7
- /** [Beta] An accordion item (horizontal orientation). */
7
+ /** An accordion item (horizontal orientation). */
8
8
  export const AccordionItemHorizontal = (props) => {
9
- const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props);
9
+ const { className, children, collapsed, content, disabled, id, itemTitleHoverBg = 'blue.10', title, onToggle, ...rest } = omitThemingProps(props);
10
10
  const [collapsedInternal, setIsCollapsedInternal] = useState(false);
11
11
  const styles = useStyleConfig('Accordion', useAccordionContext());
12
12
  useEffect(() => {
@@ -21,7 +21,7 @@ export const AccordionItemHorizontal = (props) => {
21
21
  const cursor = disabled ? 'not-allowed' : 'pointer';
22
22
  const fontWeight = typeof title === 'string' ? '500' : 'inherit';
23
23
  return (React.createElement(Box, { alignItems: collapsedInternal ? 'normal' : 'baseline', bg: disabled ? 'disabled.bg' : undefined, borderRight: "1px solid grey.40", className: cs('vui-accordion-item-horizontal', className), color: disabled ? 'disabled.color' : undefined, column: true, cursor: disabled ? 'not-allowed' : undefined, id: `${id}`, maxW: collapsedInternal ? styles.item.minH : 'auto', minW: styles.item.minH, p: 0, transitionDuration: "0ms", userSelect: disabled ? 'none' : undefined, ...rest },
24
- React.createElement(Box, { ...styles.item, cursor: cursor, hoverBg: "blue.10", justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" },
24
+ React.createElement(Box, { ...styles.item, cursor: cursor, hoverBg: itemTitleHoverBg, justifyContent: "space-between", minH: styles.item.minH, onClick: toggle, p: styles.item.pt, w: "100%" },
25
25
  !collapsedInternal && React.createElement(Box, { fontWeight: fontWeight }, title),
26
26
  React.createElement(AccordionItemArrow, { collapsed: collapsedInternal, orientation: "horizontal" })),
27
27
  !collapsedInternal ? (React.createElement(Box, { p: styles.item.pt, pt: 0, transitionDuration: "0ms" }, children ?? content)) : (React.createElement(Box, { cursor: cursor, flexDirection: "row-reverse", fontWeight: fontWeight, mb: styles.item.minH, mt: styles.item.pt, onClick: toggle, transform: "rotate(-90deg)", transitionDuration: "0ms", whiteSpace: "nowrap" }, title))));
@@ -0,0 +1,12 @@
1
+ import { CopyToClipboardProps } from './copyToClipboard.types';
2
+ /**
3
+ * A helper button component.
4
+ *
5
+ * Copies the provided text to clipboard.
6
+ *
7
+ * Copying is available only for a secure environment (https://), otherwise the button is disabled.
8
+ *
9
+ */
10
+ export declare const CopyToClipboard: import("../core").VuiComponent<"button", CopyToClipboardProps>;
11
+ export default CopyToClipboard;
12
+ //# sourceMappingURL=copyToClipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,gEAiB1B,CAAA;AAEF,eAAe,eAAe,CAAA"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Button from '../button';
3
+ import { vui } from '../core';
4
+ import { cs } from '../utils';
5
+ import { useCopyToClipboard } from './useCopyToClipboard';
6
+ /**
7
+ * A helper button component.
8
+ *
9
+ * Copies the provided text to clipboard.
10
+ *
11
+ * Copying is available only for a secure environment (https://), otherwise the button is disabled.
12
+ *
13
+ */
14
+ export const CopyToClipboard = vui((props, ref) => {
15
+ const { disabled, copyText, className, size = 'xs', variant = 'text', ...rest } = props;
16
+ const { copy, isCopyDisabled } = useCopyToClipboard(copyText);
17
+ return (React.createElement(Button, { className: cs('vui-copy-to-clipboard', className), disabled: disabled || isCopyDisabled, icon: "falCopy", onClick: () => copy(), ref: ref, size: size, variant: variant, ...rest }));
18
+ });
19
+ export default CopyToClipboard;
@@ -0,0 +1,9 @@
1
+ import { SystemProps } from '../system';
2
+ import { ThemingProps } from '../theme';
3
+ export declare type CopyToClipboardProps = SystemProps & ThemingProps<'Button'> & {
4
+ /** Text string for copying */
5
+ copyText: string;
6
+ /** Button size @default "xs" */
7
+ size?: 'xs' | 'sm' | 'md' | 'lg';
8
+ };
9
+ //# sourceMappingURL=copyToClipboard.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyToClipboard.types.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/copyToClipboard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,oBAAY,oBAAoB,GAAG,WAAW,GAC5C,YAAY,CAAC,QAAQ,CAAC,GAAG;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACjC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './copyToClipboard';
2
+ export { default } from './copyToClipboard';
3
+ export * from './copyToClipboard.types';
4
+ export * from './useCopyToClipboard';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './copyToClipboard';
2
+ export { default } from './copyToClipboard';
3
+ export * from './copyToClipboard.types';
4
+ export * from './useCopyToClipboard';
@@ -0,0 +1,5 @@
1
+ export declare const useCopyToClipboard: (copyText: string) => {
2
+ copy: () => void;
3
+ isCopyDisabled: boolean;
4
+ };
5
+ //# sourceMappingURL=useCopyToClipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../../src/copyToClipboard/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,aAAc,MAAM;;;CAYlD,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { useToast } from '../toast';
2
+ export const useCopyToClipboard = (copyText) => {
3
+ const { showSuccess, showError } = useToast();
4
+ const isCopyDisabled = !window?.navigator?.clipboard?.writeText;
5
+ const copy = () => {
6
+ if (!isCopyDisabled) {
7
+ window?.navigator?.clipboard
8
+ .writeText?.(copyText)
9
+ .then(() => showSuccess(`Copied to clipboard: ${copyText}`))
10
+ .catch(() => showError('Copy failed'));
11
+ }
12
+ };
13
+ return { copy, isCopyDisabled };
14
+ };
@@ -6,6 +6,7 @@ export * from './buttonGroup';
6
6
  export * from './buttonToggleGroup';
7
7
  export * from './card';
8
8
  export * from './checkbox';
9
+ export * from './copyToClipboard';
9
10
  export * from './core';
10
11
  export * from './dialog';
11
12
  export * from './divider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,KAAK,CAAA;AACnB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,KAAK,CAAA;AACnB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
package/dist/esm/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './buttonGroup';
6
6
  export * from './buttonToggleGroup';
7
7
  export * from './card';
8
8
  export * from './checkbox';
9
+ export * from './copyToClipboard';
9
10
  export * from './core';
10
11
  export * from './dialog';
11
12
  export * from './divider';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veracity/vui",
3
- "version": "1.7.0-beta.1",
3
+ "version": "1.7.0-beta.2",
4
4
  "description": "Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.",
5
5
  "module": "./dist/esm/index.js",
6
6
  "main": "./dist/cjs/index.js",
@@ -16,7 +16,7 @@ export const AccordionBase = styled.divBox`
16
16
 
17
17
  /** Allows to show and hide sections of related content on a page. */
18
18
  export const Accordion = vui<'div', AccordionProps>((props, ref) => {
19
- const { children, className, orientation = 'vertical', items, size, ...rest } = props
19
+ const { children, className, itemTitleHoverBg = 'blue.10', items, orientation = 'vertical', size, ...rest } = props
20
20
  const styles = useStyleConfig('Accordion', props)
21
21
 
22
22
  const context = useMemo(() => filterUndefined({ size }), [size])
@@ -29,11 +29,15 @@ export const Accordion = vui<'div', AccordionProps>((props, ref) => {
29
29
  {orientation === 'vertical' ? (
30
30
  <List w="100%">
31
31
  {items
32
- ? items?.map?.((item: AccordionItemProps, key: number) => <AccordionItem key={key} {...item} />)
32
+ ? items?.map?.((item: AccordionItemProps, key: number) => (
33
+ <AccordionItem itemTitleHoverBg={itemTitleHoverBg} key={key} {...item} />
34
+ ))
33
35
  : children}
34
36
  </List>
35
37
  ) : items ? (
36
- items?.map?.((item: AccordionItemProps, key: number) => <AccordionItemHorizontal key={key} {...item} />)
38
+ items?.map?.((item: AccordionItemProps, key: number) => (
39
+ <AccordionItemHorizontal itemTitleHoverBg={itemTitleHoverBg} key={key} {...item} />
40
+ ))
37
41
  ) : (
38
42
  children
39
43
  )}
@@ -10,6 +10,8 @@ export type AccordionProps = SystemProps &
10
10
  ThemingProps<'Accordion'> & {
11
11
  /** Items orientation @default 'vertical' */
12
12
  orientation?: Orientation
13
+ /** Hover color for the item title @default "blue.10" */
14
+ itemTitleHoverBg?: string
13
15
  items?: AccordionItemProps[]
14
16
  }
15
17
 
@@ -31,6 +33,8 @@ export type AccordionItemProps = ListItemProps & {
31
33
  content?: ReactNode
32
34
  /** Collapsed state */
33
35
  collapsed?: boolean
36
+ /** Hover color for the item title @default "blue.10" */
37
+ itemTitleHoverBg?: string
34
38
  /** Title */
35
39
  title?: string | ReactNode
36
40
  /** Collapse change state */
@@ -10,7 +10,18 @@ import { useAccordionContext } from './context'
10
10
 
11
11
  /** An accordion item. */
12
12
  export const AccordionItem = (props: AccordionItemProps) => {
13
- const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props)
13
+ const {
14
+ className,
15
+ children,
16
+ collapsed,
17
+ content,
18
+ disabled,
19
+ id,
20
+ itemTitleHoverBg = 'blue.10',
21
+ title,
22
+ onToggle,
23
+ ...rest
24
+ } = omitThemingProps(props)
14
25
  const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
15
26
 
16
27
  const styles = useStyleConfig('Accordion', useAccordionContext())
@@ -40,7 +51,7 @@ export const AccordionItem = (props: AccordionItemProps) => {
40
51
  >
41
52
  <Box
42
53
  cursor={disabled ? 'not-allowed' : 'pointer'}
43
- hoverBg="blue.10"
54
+ hoverBg={itemTitleHoverBg}
44
55
  justifyContent="space-between"
45
56
  onClick={toggle}
46
57
  px={2}
@@ -7,9 +7,20 @@ import { AccordionItemProps } from './accordion.types'
7
7
  import AccordionItemArrow from './accordionItemArrow'
8
8
  import { useAccordionContext } from './context'
9
9
 
10
- /** [Beta] An accordion item (horizontal orientation). */
10
+ /** An accordion item (horizontal orientation). */
11
11
  export const AccordionItemHorizontal = (props: AccordionItemProps) => {
12
- const { className, children, id, content, disabled, title, collapsed, onToggle, ...rest } = omitThemingProps(props)
12
+ const {
13
+ className,
14
+ children,
15
+ collapsed,
16
+ content,
17
+ disabled,
18
+ id,
19
+ itemTitleHoverBg = 'blue.10',
20
+ title,
21
+ onToggle,
22
+ ...rest
23
+ } = omitThemingProps(props)
13
24
  const [collapsedInternal, setIsCollapsedInternal] = useState<boolean>(false)
14
25
 
15
26
  const styles = useStyleConfig('Accordion', useAccordionContext())
@@ -48,7 +59,7 @@ export const AccordionItemHorizontal = (props: AccordionItemProps) => {
48
59
  <Box
49
60
  {...styles.item}
50
61
  cursor={cursor}
51
- hoverBg="blue.10"
62
+ hoverBg={itemTitleHoverBg}
52
63
  justifyContent="space-between"
53
64
  minH={styles.item.minH}
54
65
  onClick={toggle}
@@ -0,0 +1,36 @@
1
+ import React from 'react'
2
+
3
+ import Button from '../button'
4
+ import { vui } from '../core'
5
+ import { cs } from '../utils'
6
+ import { CopyToClipboardProps } from './copyToClipboard.types'
7
+ import { useCopyToClipboard } from './useCopyToClipboard'
8
+
9
+ /**
10
+ * A helper button component.
11
+ *
12
+ * Copies the provided text to clipboard.
13
+ *
14
+ * Copying is available only for a secure environment (https://), otherwise the button is disabled.
15
+ *
16
+ */
17
+ export const CopyToClipboard = vui<'button', CopyToClipboardProps>((props, ref) => {
18
+ const { disabled, copyText, className, size = 'xs', variant = 'text', ...rest } = props
19
+
20
+ const { copy, isCopyDisabled } = useCopyToClipboard(copyText)
21
+
22
+ return (
23
+ <Button
24
+ className={cs('vui-copy-to-clipboard', className)}
25
+ disabled={disabled || isCopyDisabled}
26
+ icon="falCopy"
27
+ onClick={() => copy()}
28
+ ref={ref}
29
+ size={size}
30
+ variant={variant}
31
+ {...rest}
32
+ />
33
+ )
34
+ })
35
+
36
+ export default CopyToClipboard
@@ -0,0 +1,10 @@
1
+ import { SystemProps } from '../system'
2
+ import { ThemingProps } from '../theme'
3
+
4
+ export type CopyToClipboardProps = SystemProps &
5
+ ThemingProps<'Button'> & {
6
+ /** Text string for copying */
7
+ copyText: string
8
+ /** Button size @default "xs" */
9
+ size?: 'xs' | 'sm' | 'md' | 'lg'
10
+ }
@@ -0,0 +1,4 @@
1
+ export * from './copyToClipboard'
2
+ export { default } from './copyToClipboard'
3
+ export * from './copyToClipboard.types'
4
+ export * from './useCopyToClipboard'
@@ -0,0 +1,15 @@
1
+ import { useToast } from '../toast'
2
+
3
+ export const useCopyToClipboard = (copyText: string) => {
4
+ const { showSuccess, showError } = useToast()
5
+ const isCopyDisabled = !window?.navigator?.clipboard?.writeText
6
+ const copy = () => {
7
+ if (!isCopyDisabled) {
8
+ window?.navigator?.clipboard
9
+ .writeText?.(copyText)
10
+ .then(() => showSuccess(`Copied to clipboard: ${copyText}`))
11
+ .catch(() => showError('Copy failed'))
12
+ }
13
+ }
14
+ return { copy, isCopyDisabled }
15
+ }
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ export * from './buttonGroup'
6
6
  export * from './buttonToggleGroup'
7
7
  export * from './card'
8
8
  export * from './checkbox'
9
+ export * from './copyToClipboard'
9
10
  export * from './core'
10
11
  export * from './dialog'
11
12
  export * from './divider'