@ncds/ui-admin 0.0.31 → 0.0.32

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.
@@ -5,11 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Badge = void 0;
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
- var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
9
- var _button = require("../button");
10
8
  var _classnames = _interopRequireDefault(require("classnames"));
11
- var _color = require("../../../constant/color");
12
- var _dot = require("../dot");
9
+ var _utils = require("./utils");
13
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
11
  var __assign = void 0 && (void 0).__assign || function () {
15
12
  __assign = Object.assign || function (t) {
@@ -21,6 +18,10 @@ var __assign = void 0 && (void 0).__assign || function () {
21
18
  };
22
19
  return __assign.apply(this, arguments);
23
20
  };
21
+ /**
22
+ * 뱃지 컴포넌트의 아이콘은 디자인 시스템에서 12px 고정으로 정의되어 있습니다.
23
+ */
24
+ var BADGE_ICON_SIZE = 12;
24
25
  var Badge = function (_a) {
25
26
  var label = _a.label,
26
27
  _b = _a.type,
@@ -32,32 +33,20 @@ var Badge = function (_a) {
32
33
  trailingIcon = _a.trailingIcon,
33
34
  _d = _a.size,
34
35
  size = _d === void 0 ? 'sm' : _d;
35
- var sideSlotRender = function (slot) {
36
- var _a, _b, _c, _d;
37
- if (slot.type === 'icon') {
38
- return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
39
- name: slot.icon,
40
- height: (_a = slot.size) !== null && _a !== void 0 ? _a : _button.svgSize[size],
41
- width: (_b = slot.size) !== null && _b !== void 0 ? _b : _button.svgSize[size],
42
- color: slot.color ? _color.COLOR[slot.color] : undefined
43
- });
44
- }
45
- if (slot.type === 'dot') {
46
- return (0, _jsxRuntime.jsx)(_dot.Dot, {
47
- color: (_c = slot.color) !== null && _c !== void 0 ? _c : color,
48
- size: (_d = slot.size) !== null && _d !== void 0 ? _d : 'sm'
49
- });
50
- }
51
- return slot.children;
52
- };
53
36
  return (0, _jsxRuntime.jsxs)("span", __assign({
54
37
  className: (0, _classnames.default)('ncua-badge', "ncua-badge--".concat(type), "ncua-badge--".concat(color), "ncua-badge--".concat(size), className)
55
38
  }, {
56
- children: [leadingIcon && sideSlotRender(leadingIcon), (0, _jsxRuntime.jsx)("span", __assign({
39
+ children: [leadingIcon && (0, _utils.sideSlotRender)({
40
+ slot: leadingIcon,
41
+ defaultIconSize: BADGE_ICON_SIZE
42
+ }), (0, _jsxRuntime.jsx)("span", __assign({
57
43
  className: "ncua-badge__label"
58
44
  }, {
59
45
  children: label
60
- })), trailingIcon && sideSlotRender(trailingIcon)]
46
+ })), trailingIcon && (0, _utils.sideSlotRender)({
47
+ slot: trailingIcon,
48
+ defaultIconSize: BADGE_ICON_SIZE
49
+ })]
61
50
  }));
62
51
  };
63
52
  exports.Badge = Badge;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BadgeGroup = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _ = require(".");
10
+ var _utils = require("./utils");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ var __assign = void 0 && (void 0).__assign || function () {
13
+ __assign = Object.assign || function (t) {
14
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
15
+ s = arguments[i];
16
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
17
+ }
18
+ return t;
19
+ };
20
+ return __assign.apply(this, arguments);
21
+ };
22
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
23
+ var t = {};
24
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
25
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
27
+ }
28
+ return t;
29
+ };
30
+ var DEFAULT_GROUP_ICON_SIZE = 14;
31
+ var BadgeGroup = function (_a) {
32
+ var groupLabel = _a.groupLabel,
33
+ groupIcon = _a.groupIcon,
34
+ groupClassName = _a.groupClassName,
35
+ _b = _a.color,
36
+ color = _b === void 0 ? 'neutral' : _b,
37
+ _c = _a.size,
38
+ size = _c === void 0 ? 'sm' : _c,
39
+ props = __rest(_a, ["groupLabel", "groupIcon", "groupClassName", "color", "size"]);
40
+ return (0, _jsxRuntime.jsxs)("span", __assign({
41
+ className: (0, _classnames.default)('ncua-badge-group', "ncua-badge-group--".concat(color), "ncua-badge-group--".concat(size), groupClassName)
42
+ }, {
43
+ children: [(0, _jsxRuntime.jsx)(_.Badge, __assign({
44
+ type: "pill-dark-color",
45
+ color: color,
46
+ size: size
47
+ }, props)), (0, _jsxRuntime.jsx)("span", __assign({
48
+ className: "ncua-badge-group__label"
49
+ }, {
50
+ children: groupLabel
51
+ })), groupIcon && (0, _utils.sideSlotRender)({
52
+ slot: groupIcon,
53
+ defaultIconSize: DEFAULT_GROUP_ICON_SIZE
54
+ })]
55
+ }));
56
+ };
57
+ exports.BadgeGroup = BadgeGroup;
@@ -13,4 +13,15 @@ Object.keys(_Badge).forEach(function (key) {
13
13
  return _Badge[key];
14
14
  }
15
15
  });
16
+ });
17
+ var _BadgeGroup = require("./BadgeGroup");
18
+ Object.keys(_BadgeGroup).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _BadgeGroup[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _BadgeGroup[key];
25
+ }
26
+ });
16
27
  });
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sideSlotRender = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
9
+ var _color = require("../../../constant/color");
10
+ var _Dot = require("../dot/Dot");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ var DEFAULT_DOT_COLOR = 'neutral';
13
+ var sideSlotRender = function (_a) {
14
+ var _b, _c, _d, _e;
15
+ var slot = _a.slot,
16
+ defaultIconSize = _a.defaultIconSize;
17
+ if (slot.type === 'icon') {
18
+ return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
19
+ name: slot.icon,
20
+ height: (_b = slot.size) !== null && _b !== void 0 ? _b : defaultIconSize,
21
+ width: (_c = slot.size) !== null && _c !== void 0 ? _c : defaultIconSize,
22
+ color: slot.color ? _color.COLOR[slot.color] : undefined
23
+ });
24
+ }
25
+ if (slot.type === 'dot') {
26
+ return (0, _jsxRuntime.jsx)(_Dot.Dot, {
27
+ color: (_d = slot.color) !== null && _d !== void 0 ? _d : DEFAULT_DOT_COLOR,
28
+ size: (_e = slot.size) !== null && _e !== void 0 ? _e : 'sm'
29
+ });
30
+ }
31
+ return slot.children;
32
+ };
33
+ exports.sideSlotRender = sideSlotRender;
@@ -24,10 +24,16 @@ var Dropdown = function (_a) {
24
24
  align = _b === void 0 ? 'left' : _b,
25
25
  header = _a.header,
26
26
  groups = _a.groups,
27
- className = _a.className;
28
- var _c = (0, _react.useState)(false),
29
- isOpen = _c[0],
30
- setIsOpen = _c[1];
27
+ className = _a.className,
28
+ _c = _a.opened,
29
+ opened = _c === void 0 ? false : _c,
30
+ _d = _a.closeOnClickItem,
31
+ closeOnClickItem = _d === void 0 ? true : _d,
32
+ _e = _a.closeOnClickOutside,
33
+ closeOnClickOutside = _e === void 0 ? true : _e;
34
+ var _f = (0, _react.useState)(opened),
35
+ isOpen = _f[0],
36
+ setIsOpen = _f[1];
31
37
  var dropdownRef = (0, _react.useRef)(null);
32
38
  var toggleDropdown = function () {
33
39
  setIsOpen(!isOpen);
@@ -40,15 +46,19 @@ var Dropdown = function (_a) {
40
46
  var handleClickItem = function (item) {
41
47
  if (!item.disabled && item.onClick) {
42
48
  item.onClick();
43
- setIsOpen(false);
49
+ if (closeOnClickItem) {
50
+ setIsOpen(false);
51
+ }
44
52
  }
45
53
  };
46
54
  (0, _react.useEffect)(function () {
47
- document.addEventListener('mousedown', handleClickOutside);
48
- return function () {
49
- document.removeEventListener('mousedown', handleClickOutside);
50
- };
51
- }, []);
55
+ if (closeOnClickOutside) {
56
+ document.addEventListener('mousedown', handleClickOutside);
57
+ return function () {
58
+ document.removeEventListener('mousedown', handleClickOutside);
59
+ };
60
+ }
61
+ }, [closeOnClickOutside]);
52
62
  var renderTrigger = function () {
53
63
  switch (trigger.type) {
54
64
  case 'custom':
@@ -117,7 +117,7 @@ Modal.Header = function (_a) {
117
117
  onClick: onClose
118
118
  }, {
119
119
  children: (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
120
- name: "x"
120
+ name: "x-close"
121
121
  })
122
122
  }))]
123
123
  })), showDivider && (0, _jsxRuntime.jsx)("div", {
@@ -9,11 +9,12 @@ var __assign = this && this.__assign || function () {
9
9
  return __assign.apply(this, arguments);
10
10
  };
11
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- import Icon from '@ncds/ui-admin-icon';
13
- import { svgSize } from '../button';
14
12
  import classNames from 'classnames';
15
- import { COLOR } from '../../../constant/color';
16
- import { Dot } from '../dot';
13
+ import { sideSlotRender } from './utils';
14
+ /**
15
+ * 뱃지 컴포넌트의 아이콘은 디자인 시스템에서 12px 고정으로 정의되어 있습니다.
16
+ */
17
+ var BADGE_ICON_SIZE = 12;
17
18
  export var Badge = function (_a) {
18
19
  var label = _a.label,
19
20
  _b = _a.type,
@@ -25,31 +26,19 @@ export var Badge = function (_a) {
25
26
  trailingIcon = _a.trailingIcon,
26
27
  _d = _a.size,
27
28
  size = _d === void 0 ? 'sm' : _d;
28
- var sideSlotRender = function (slot) {
29
- var _a, _b, _c, _d;
30
- if (slot.type === 'icon') {
31
- return _jsx(Icon, {
32
- name: slot.icon,
33
- height: (_a = slot.size) !== null && _a !== void 0 ? _a : svgSize[size],
34
- width: (_b = slot.size) !== null && _b !== void 0 ? _b : svgSize[size],
35
- color: slot.color ? COLOR[slot.color] : undefined
36
- });
37
- }
38
- if (slot.type === 'dot') {
39
- return _jsx(Dot, {
40
- color: (_c = slot.color) !== null && _c !== void 0 ? _c : color,
41
- size: (_d = slot.size) !== null && _d !== void 0 ? _d : 'sm'
42
- });
43
- }
44
- return slot.children;
45
- };
46
29
  return _jsxs("span", __assign({
47
30
  className: classNames('ncua-badge', "ncua-badge--".concat(type), "ncua-badge--".concat(color), "ncua-badge--".concat(size), className)
48
31
  }, {
49
- children: [leadingIcon && sideSlotRender(leadingIcon), _jsx("span", __assign({
32
+ children: [leadingIcon && sideSlotRender({
33
+ slot: leadingIcon,
34
+ defaultIconSize: BADGE_ICON_SIZE
35
+ }), _jsx("span", __assign({
50
36
  className: "ncua-badge__label"
51
37
  }, {
52
38
  children: label
53
- })), trailingIcon && sideSlotRender(trailingIcon)]
39
+ })), trailingIcon && sideSlotRender({
40
+ slot: trailingIcon,
41
+ defaultIconSize: BADGE_ICON_SIZE
42
+ })]
54
43
  }));
55
44
  };
@@ -0,0 +1,49 @@
1
+ var __assign = this && this.__assign || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6
+ }
7
+ return t;
8
+ };
9
+ return __assign.apply(this, arguments);
10
+ };
11
+ var __rest = this && this.__rest || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
15
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
16
+ }
17
+ return t;
18
+ };
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ import classNames from 'classnames';
21
+ import { Badge } from '.';
22
+ import { sideSlotRender } from './utils';
23
+ var DEFAULT_GROUP_ICON_SIZE = 14;
24
+ export var BadgeGroup = function (_a) {
25
+ var groupLabel = _a.groupLabel,
26
+ groupIcon = _a.groupIcon,
27
+ groupClassName = _a.groupClassName,
28
+ _b = _a.color,
29
+ color = _b === void 0 ? 'neutral' : _b,
30
+ _c = _a.size,
31
+ size = _c === void 0 ? 'sm' : _c,
32
+ props = __rest(_a, ["groupLabel", "groupIcon", "groupClassName", "color", "size"]);
33
+ return _jsxs("span", __assign({
34
+ className: classNames('ncua-badge-group', "ncua-badge-group--".concat(color), "ncua-badge-group--".concat(size), groupClassName)
35
+ }, {
36
+ children: [_jsx(Badge, __assign({
37
+ type: "pill-dark-color",
38
+ color: color,
39
+ size: size
40
+ }, props)), _jsx("span", __assign({
41
+ className: "ncua-badge-group__label"
42
+ }, {
43
+ children: groupLabel
44
+ })), groupIcon && sideSlotRender({
45
+ slot: groupIcon,
46
+ defaultIconSize: DEFAULT_GROUP_ICON_SIZE
47
+ })]
48
+ }));
49
+ };
@@ -1 +1,2 @@
1
- export * from './Badge';
1
+ export * from './Badge';
2
+ export * from './BadgeGroup';
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Icon from '@ncds/ui-admin-icon';
3
+ import { COLOR } from '../../../constant/color';
4
+ import { Dot } from '../dot/Dot';
5
+ var DEFAULT_DOT_COLOR = 'neutral';
6
+ export var sideSlotRender = function (_a) {
7
+ var _b, _c, _d, _e;
8
+ var slot = _a.slot,
9
+ defaultIconSize = _a.defaultIconSize;
10
+ if (slot.type === 'icon') {
11
+ return _jsx(Icon, {
12
+ name: slot.icon,
13
+ height: (_b = slot.size) !== null && _b !== void 0 ? _b : defaultIconSize,
14
+ width: (_c = slot.size) !== null && _c !== void 0 ? _c : defaultIconSize,
15
+ color: slot.color ? COLOR[slot.color] : undefined
16
+ });
17
+ }
18
+ if (slot.type === 'dot') {
19
+ return _jsx(Dot, {
20
+ color: (_d = slot.color) !== null && _d !== void 0 ? _d : DEFAULT_DOT_COLOR,
21
+ size: (_e = slot.size) !== null && _e !== void 0 ? _e : 'sm'
22
+ });
23
+ }
24
+ return slot.children;
25
+ };
@@ -17,10 +17,16 @@ export var Dropdown = function (_a) {
17
17
  align = _b === void 0 ? 'left' : _b,
18
18
  header = _a.header,
19
19
  groups = _a.groups,
20
- className = _a.className;
21
- var _c = useState(false),
22
- isOpen = _c[0],
23
- setIsOpen = _c[1];
20
+ className = _a.className,
21
+ _c = _a.opened,
22
+ opened = _c === void 0 ? false : _c,
23
+ _d = _a.closeOnClickItem,
24
+ closeOnClickItem = _d === void 0 ? true : _d,
25
+ _e = _a.closeOnClickOutside,
26
+ closeOnClickOutside = _e === void 0 ? true : _e;
27
+ var _f = useState(opened),
28
+ isOpen = _f[0],
29
+ setIsOpen = _f[1];
24
30
  var dropdownRef = useRef(null);
25
31
  var toggleDropdown = function () {
26
32
  setIsOpen(!isOpen);
@@ -33,15 +39,19 @@ export var Dropdown = function (_a) {
33
39
  var handleClickItem = function (item) {
34
40
  if (!item.disabled && item.onClick) {
35
41
  item.onClick();
36
- setIsOpen(false);
42
+ if (closeOnClickItem) {
43
+ setIsOpen(false);
44
+ }
37
45
  }
38
46
  };
39
47
  useEffect(function () {
40
- document.addEventListener('mousedown', handleClickOutside);
41
- return function () {
42
- document.removeEventListener('mousedown', handleClickOutside);
43
- };
44
- }, []);
48
+ if (closeOnClickOutside) {
49
+ document.addEventListener('mousedown', handleClickOutside);
50
+ return function () {
51
+ document.removeEventListener('mousedown', handleClickOutside);
52
+ };
53
+ }
54
+ }, [closeOnClickOutside]);
45
55
  var renderTrigger = function () {
46
56
  switch (trigger.type) {
47
57
  case 'custom':
@@ -109,7 +109,7 @@ Modal.Header = function (_a) {
109
109
  onClick: onClose
110
110
  }, {
111
111
  children: _jsx(Icon, {
112
- name: "x"
112
+ name: "x-close"
113
113
  })
114
114
  }))]
115
115
  })), showDivider && _jsx("div", {
@@ -0,0 +1,15 @@
1
+ import { ColorTone } from 'ui-admin/constant/color';
2
+ import { BadgeProps } from '.';
3
+ import { Size } from '../../../constant/size';
4
+ import { SideSlotType } from '../../types/side-slot';
5
+ export type BadgeGroupSize = Extract<Size, 'xs' | 'sm'>;
6
+ export type BadgeGroupColor = Extract<ColorTone, 'neutral' | 'error' | 'warning' | 'success'>;
7
+ export type BadgeGroupProps = Omit<BadgeProps, 'type' | 'size' | 'color'> & {
8
+ groupLabel: string;
9
+ groupIcon?: SideSlotType;
10
+ groupClassName?: string;
11
+ size?: BadgeGroupSize;
12
+ color?: BadgeGroupColor;
13
+ };
14
+ export declare const BadgeGroup: ({ groupLabel, groupIcon, groupClassName, color, size, ...props }: BadgeGroupProps) => import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=BadgeGroup.d.ts.map
@@ -1,2 +1,3 @@
1
1
  export * from './Badge';
2
+ export * from './BadgeGroup';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,7 @@
1
+ import { SideSlotType } from '../../types/side-slot';
2
+ export type SideSlotRenderProps = {
3
+ slot: SideSlotType;
4
+ defaultIconSize: number;
5
+ };
6
+ export declare const sideSlotRender: ({ slot, defaultIconSize }: SideSlotRenderProps) => any;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -108,7 +108,7 @@ export declare const ButtonGroup: {
108
108
  "aria-colindextext"?: string | undefined;
109
109
  "aria-colspan"?: number | undefined;
110
110
  "aria-controls"?: string | undefined;
111
- "aria-current"?: boolean | "true" | "false" | "time" | "step" | "date" | "page" | "location" | undefined;
111
+ "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
112
112
  "aria-describedby"?: string | undefined;
113
113
  "aria-description"?: string | undefined;
114
114
  "aria-details"?: string | undefined;
@@ -387,7 +387,7 @@ export declare const ButtonGroup: {
387
387
  "aria-colindextext"?: string | undefined;
388
388
  "aria-colspan"?: number | undefined;
389
389
  "aria-controls"?: string | undefined;
390
- "aria-current"?: boolean | "true" | "false" | "time" | "step" | "date" | "page" | "location" | undefined;
390
+ "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
391
391
  "aria-describedby"?: string | undefined;
392
392
  "aria-description"?: string | undefined;
393
393
  "aria-details"?: string | undefined;
@@ -44,10 +44,13 @@ export type TextHeader = {
44
44
  export type DropdownHeaderType = AvatarHeader | TextHeader;
45
45
  export type DropdownProps = {
46
46
  trigger: AvatarTrigger | TextTrigger | ButtonTrigger | IconTrigger | CustomTrigger;
47
+ opened?: boolean;
48
+ closeOnClickOutside?: boolean;
49
+ closeOnClickItem?: boolean;
47
50
  align?: 'left' | 'right';
48
51
  header?: DropdownHeaderType;
49
52
  groups: DropdownGroup[];
50
53
  className?: string;
51
54
  };
52
- export declare const Dropdown: ({ trigger, align, header, groups, className }: DropdownProps) => import("react/jsx-runtime").JSX.Element;
55
+ export declare const Dropdown: ({ trigger, align, header, groups, className, opened, closeOnClickItem, closeOnClickOutside, }: DropdownProps) => import("react/jsx-runtime").JSX.Element;
53
56
  //# sourceMappingURL=Dropdown.d.ts.map
@@ -501,6 +501,7 @@ button {
501
501
  color: var(--gray-400);
502
502
  }
503
503
  .ncua-button-group__item {
504
+ position: relative;
504
505
  cursor: pointer;
505
506
  color: inherit;
506
507
  border: none;
@@ -516,7 +517,6 @@ button {
516
517
  text-decoration: none;
517
518
  }
518
519
  .ncua-button-group__item[href]:hover {
519
- color: inherit;
520
520
  text-decoration: none;
521
521
  }
522
522
  .ncua-button-group__item:first-child {
@@ -525,41 +525,16 @@ button {
525
525
  .ncua-button-group__item:last-child {
526
526
  padding-right: 0;
527
527
  }
528
- .ncua-button-group__item.is-disabled {
529
- color: var(--gray-200);
530
- }
531
- .ncua-button-group__item.is-current {
532
- color: var(--gray-600);
533
- }
534
- :where(.ncua-button-group.has-border) {
535
- box-shadow: var(--shadow-xs);
536
- border: 1px solid var(--gray-200);
537
- }
538
- :where(.ncua-button-group.has-border) .ncua-button-group__item:hover {
539
- background-color: var(--gray-50);
540
- }
541
- :where(.ncua-button-group.has-border) .ncua-button-group__item:focus {
528
+ .ncua-button-group__item.is-current, .ncua-button-group__item:hover, .ncua-button-group__item:focus {
542
529
  color: var(--gray-600);
543
530
  }
544
- :where(.ncua-button-group.has-border) .ncua-button-group__item.is-current {
545
- color: var(--gray-600);
546
- background-color: var(--gray-50);
547
- }
548
- :where(.ncua-button-group.has-border) .ncua-button-group__item:nth-child(n+2) {
549
- border-left: 1px solid var(--gray-200);
550
- }
551
- :where(.ncua-button-group.has-border) .ncua-button-group__item svg {
552
- display: block;
553
- }
554
-
555
- .ncua-button-group:not(.has-border) .ncua-button-group__item {
556
- position: relative;
557
- background-color: transparent;
531
+ .ncua-button-group__item:disabled, .ncua-button-group__item:disabled:hover, .ncua-button-group__item:disabled:focus, .ncua-button-group__item.is-disabled, .ncua-button-group__item.is-disabled:hover, .ncua-button-group__item.is-disabled:focus {
532
+ color: var(--gray-200);
558
533
  }
559
- .ncua-button-group:not(.has-border) .ncua-button-group__item:not(:last-child):after {
534
+ .ncua-button-group__item + .ncua-button-group__item::after {
560
535
  content: "";
561
536
  position: absolute;
562
- right: 0;
537
+ left: 0;
563
538
  top: 50%;
564
539
  transform: translateY(-50%);
565
540
  width: 1px;
@@ -572,7 +547,10 @@ button {
572
547
  line-height: var(--line-heights-xxxs);
573
548
  font-weight: var(--font-weights-commerce-sans-1);
574
549
  }
575
- .ncua-button-group--xs .ncua-button-group__item.is-only-icon {
550
+ :where(.ncua-button-group--xs .ncua-button-group__item.is-current, .ncua-button-group--xs .ncua-button-group__item:hover, .ncua-button-group--xs .ncua-button-group__item:focus) {
551
+ font-weight: var(--font-weights-commerce-sans-1);
552
+ }
553
+ .ncua-button-group--xs .ncua-button-group__item:where(.is-only-icon) {
576
554
  padding: 6px;
577
555
  }
578
556
  :where(.ncua-button-group--xs.has-border) {
@@ -585,7 +563,10 @@ button {
585
563
  line-height: var(--line-heights-xs);
586
564
  font-weight: var(--font-weights-commerce-sans-1);
587
565
  }
588
- .ncua-button-group--sm .ncua-button-group__item.is-only-icon {
566
+ :where(.ncua-button-group--sm .ncua-button-group__item.is-current, .ncua-button-group--sm .ncua-button-group__item:hover, .ncua-button-group--sm .ncua-button-group__item:focus) {
567
+ font-weight: var(--font-weights-commerce-sans-1);
568
+ }
569
+ .ncua-button-group--sm .ncua-button-group__item:where(.is-only-icon) {
589
570
  padding: 6px;
590
571
  }
591
572
  :where(.ncua-button-group--sm.has-border) {
@@ -598,7 +579,10 @@ button {
598
579
  line-height: var(--line-heights-sm);
599
580
  font-weight: var(--font-weights-commerce-sans-1);
600
581
  }
601
- .ncua-button-group--md .ncua-button-group__item.is-only-icon {
582
+ :where(.ncua-button-group--md .ncua-button-group__item.is-current, .ncua-button-group--md .ncua-button-group__item:hover, .ncua-button-group--md .ncua-button-group__item:focus) {
583
+ font-weight: var(--font-weights-commerce-sans-1);
584
+ }
585
+ .ncua-button-group--md .ncua-button-group__item:where(.is-only-icon) {
602
586
  padding: 10px;
603
587
  }
604
588
  :where(.ncua-button-group--md.has-border) {
@@ -611,13 +595,33 @@ button {
611
595
  line-height: var(--line-heights-sm);
612
596
  font-weight: var(--font-weights-commerce-sans-2);
613
597
  }
614
- .ncua-button-group--lg .ncua-button-group__item.is-only-icon {
598
+ :where(.ncua-button-group--lg .ncua-button-group__item.is-current, .ncua-button-group--lg .ncua-button-group__item:hover, .ncua-button-group--lg .ncua-button-group__item:focus) {
599
+ font-weight: var(--font-weights-commerce-sans-2);
600
+ }
601
+ .ncua-button-group--lg .ncua-button-group__item:where(.is-only-icon) {
615
602
  padding: 10px;
616
603
  }
617
604
  :where(.ncua-button-group--lg.has-border) {
618
605
  border-radius: 8px;
619
606
  }
620
607
 
608
+ :where(.ncua-button-group.has-border) {
609
+ box-shadow: var(--shadow-xs);
610
+ border: 1px solid var(--gray-200);
611
+ }
612
+ :where(.ncua-button-group.has-border) .ncua-button-group__item + .ncua-button-group__item::after {
613
+ content: none;
614
+ }
615
+ :where(.ncua-button-group.has-border) .ncua-button-group__item.is-current, :where(.ncua-button-group.has-border) .ncua-button-group__item:focus, :where(.ncua-button-group.has-border) .ncua-button-group__item:hover {
616
+ background-color: var(--gray-50);
617
+ }
618
+ :where(.ncua-button-group.has-border) .ncua-button-group__item:nth-child(n+2) {
619
+ border-left: 1px solid var(--gray-200);
620
+ }
621
+ :where(.ncua-button-group.has-border) .ncua-button-group__item svg {
622
+ display: block;
623
+ }
624
+
621
625
  .ncua-btn-close {
622
626
  display: inline-flex;
623
627
  align-items: center;
@@ -665,6 +669,7 @@ button {
665
669
  height: 16px;
666
670
  line-height: 1;
667
671
  background-color: var(--base-white);
672
+ border-radius: 4px;
668
673
  }
669
674
  .ncua-checkbox-input :where(input) {
670
675
  position: absolute;
@@ -976,8 +981,9 @@ button {
976
981
  cursor: pointer;
977
982
  padding: 0;
978
983
  background: none;
979
- display: grid;
980
- place-items: center;
984
+ display: flex;
985
+ align-items: center;
986
+ justify-content: center;
981
987
  }
982
988
  .ncua-dropdown__trigger--icon {
983
989
  width: 20px;
@@ -1196,12 +1202,6 @@ button {
1196
1202
  align-items: center;
1197
1203
  background-color: var(--base-white);
1198
1204
  border: 1px solid var(--gray-200);
1199
- position: relative;
1200
- flex: 1;
1201
- display: flex;
1202
- align-items: center;
1203
- justify-content: space-between;
1204
- line-height: 1;
1205
1205
  }
1206
1206
  .ncua-input__field--xs {
1207
1207
  padding: 5px 10px;
@@ -1209,6 +1209,14 @@ button {
1209
1209
  .ncua-input__field--md {
1210
1210
  padding: 6px 12px;
1211
1211
  }
1212
+ .ncua-input__field {
1213
+ position: relative;
1214
+ flex: 1;
1215
+ display: flex;
1216
+ align-items: center;
1217
+ justify-content: space-between;
1218
+ line-height: 1;
1219
+ }
1212
1220
  .ncua-input:focus-within :where(.ncua-input__field) {
1213
1221
  border-color: var(--gray-400);
1214
1222
  box-shadow: var(--shadow-xs-focused-3px-gray-100);
@@ -1348,10 +1356,6 @@ button {
1348
1356
  align-items: center;
1349
1357
  background-color: var(--base-white);
1350
1358
  border: 1px solid var(--gray-200);
1351
- border-radius: 6px 0 0 6px;
1352
- border-right-width: 0;
1353
- color: var(--gray-400);
1354
- font-size: var(--font-size-sm);
1355
1359
  }
1356
1360
  .ncua-input__leading-text-wrap .ncua-input__leading-text--xs {
1357
1361
  padding: 5px 10px;
@@ -1359,9 +1363,16 @@ button {
1359
1363
  .ncua-input__leading-text-wrap .ncua-input__leading-text--md {
1360
1364
  padding: 6px 12px;
1361
1365
  }
1366
+ .ncua-input__leading-text-wrap .ncua-input__leading-text {
1367
+ border-radius: 6px 0 0 6px;
1368
+ border-right-width: 0;
1369
+ color: var(--gray-400);
1370
+ font-size: var(--font-size-sm);
1371
+ }
1362
1372
  .ncua-input__leading-text-wrap .ncua-input__leading-text + .ncua-input__field {
1363
1373
  border-top-left-radius: 0;
1364
1374
  border-bottom-left-radius: 0;
1375
+ margin-left: -1px;
1365
1376
  }
1366
1377
 
1367
1378
  .ncua-input__trailing-button .ncua-input__button {
@@ -1369,10 +1380,6 @@ button {
1369
1380
  align-items: center;
1370
1381
  background-color: var(--base-white);
1371
1382
  border: 1px solid var(--gray-200);
1372
- border-radius: 0 6px 6px 0;
1373
- border-left-width: 0;
1374
- color: var(--gray-700);
1375
- font-weight: var(--font-weights-commerce-sans-2);
1376
1383
  }
1377
1384
  .ncua-input__trailing-button .ncua-input__button--xs {
1378
1385
  padding: 5px 10px;
@@ -1380,6 +1387,12 @@ button {
1380
1387
  .ncua-input__trailing-button .ncua-input__button--md {
1381
1388
  padding: 6px 12px;
1382
1389
  }
1390
+ .ncua-input__trailing-button .ncua-input__button {
1391
+ border-radius: 0 6px 6px 0;
1392
+ border-left-width: 0;
1393
+ color: var(--gray-700);
1394
+ font-weight: var(--font-weights-commerce-sans-2);
1395
+ }
1383
1396
  .ncua-input__trailing-button .ncua-input__button:not(:disabled) {
1384
1397
  cursor: pointer;
1385
1398
  }
@@ -1398,6 +1411,7 @@ button {
1398
1411
  .ncua-input__trailing-button .ncua-input__field {
1399
1412
  border-top-right-radius: 0;
1400
1413
  border-bottom-right-radius: 0;
1414
+ margin-right: -1px;
1401
1415
  }
1402
1416
 
1403
1417
  .ncua-input--textarea {
@@ -2015,6 +2029,7 @@ button {
2015
2029
  height: 16px;
2016
2030
  line-height: 1;
2017
2031
  background-color: var(--base-white);
2032
+ border-radius: 50%;
2018
2033
  }
2019
2034
  .ncua-radio-input :where(input) {
2020
2035
  position: absolute;
@@ -2168,6 +2183,8 @@ button {
2168
2183
 
2169
2184
  .ncua-tooltip {
2170
2185
  position: relative;
2186
+ }
2187
+ .ncua-tooltip {
2171
2188
  font-size: var(--font-size-xxs);
2172
2189
  }
2173
2190
  .ncua-tooltip svg {
@@ -2319,23 +2336,23 @@ button {
2319
2336
  }
2320
2337
 
2321
2338
  .ncua-select__content {
2322
- position: relative;
2323
2339
  display: flex;
2324
2340
  align-items: center;
2325
2341
  padding-inline-start: 14px;
2326
2342
  border: 1px solid var(--gray-200);
2327
2343
  background-color: var(--base-white);
2328
2344
  overflow: hidden;
2345
+ position: relative;
2329
2346
  }
2330
2347
  .ncua-select__content::after {
2331
- position: absolute;
2332
- top: 50%;
2333
- right: 10px;
2334
2348
  width: 14px;
2335
2349
  height: 14px;
2336
2350
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'%3E%3Cpath d='M3.5 5.25L7 8.75L10.5 5.25' stroke='%23757678' stroke-width='1.16667' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
2337
2351
  content: "";
2338
2352
  transform: translateY(-50%);
2353
+ position: absolute;
2354
+ top: 50%;
2355
+ right: 10px;
2339
2356
  }
2340
2357
  .ncua-select__icon {
2341
2358
  margin-right: 8px;
@@ -2371,9 +2388,12 @@ button {
2371
2388
  .ncua-select--xs > .ncua-select__tag {
2372
2389
  font-size: var(--font-size-xs);
2373
2390
  font-weight: var(--font-weights-commerce-sans-0);
2391
+ line-height: var(--line-heights-xs);
2374
2392
  }
2375
2393
  .ncua-select--xs + .ncua-hint-text {
2376
2394
  margin-block-start: 4px;
2395
+ font-size: var(--font-size-xxs);
2396
+ line-height: var(--line-heights-xxs);
2377
2397
  }
2378
2398
  .ncua-select--sm {
2379
2399
  height: var(--select-height-sm);
@@ -2383,9 +2403,12 @@ button {
2383
2403
  .ncua-select--sm > .ncua-select__tag {
2384
2404
  font-size: var(--font-size-sm);
2385
2405
  font-weight: var(--font-weights-commerce-sans-0);
2406
+ line-height: var(--line-heights-sm);
2386
2407
  }
2387
2408
  .ncua-select--sm + .ncua-hint-text {
2388
2409
  margin-block-start: 6px;
2410
+ font-size: var(--font-size-xs);
2411
+ line-height: var(--line-heights-xs);
2389
2412
  }
2390
2413
  .ncua-select--sm.ncua-select__content::after {
2391
2414
  width: 16px;
@@ -2401,9 +2424,12 @@ button {
2401
2424
  .ncua-select--md > .ncua-select__tag {
2402
2425
  font-size: var(--font-size-sm);
2403
2426
  font-weight: var(--font-weights-commerce-sans-1);
2427
+ line-height: var(--line-heights-sm);
2404
2428
  }
2405
2429
  .ncua-select--md + .ncua-hint-text {
2406
2430
  margin-block-start: 6px;
2431
+ font-size: var(--font-size-xs);
2432
+ line-height: var(--line-heights-xs);
2407
2433
  }
2408
2434
  .ncua-select--md.ncua-select__content::after {
2409
2435
  width: 16px;
@@ -2413,9 +2439,7 @@ button {
2413
2439
  .ncua-select--simple .ncua-select__content {
2414
2440
  padding-inline-start: 0;
2415
2441
  border: 0;
2416
- }
2417
- .ncua-select--simple .ncua-select__content::after {
2418
- right: 0;
2442
+ background-color: transparent;
2419
2443
  }
2420
2444
  .ncua-select--simple .ncua-select--xs {
2421
2445
  min-width: auto;
@@ -2432,14 +2456,6 @@ button {
2432
2456
  height: var(--select-simple-height-md);
2433
2457
  border-radius: 0;
2434
2458
  }
2435
- .ncua-select--simple select {
2436
- padding-right: 18px;
2437
- }
2438
- .ncua-select .ncua-hint-text {
2439
- font-size: var(--font-size-xxs);
2440
- line-height: var(--line-heights-xxs);
2441
- color: var(--gray-400);
2442
- }
2443
2459
 
2444
2460
  .ncua-pagination {
2445
2461
  display: flex;
@@ -3208,6 +3224,64 @@ button {
3208
3224
  background-color: var(--gray-100);
3209
3225
  }
3210
3226
 
3227
+ .ncua-badge-group {
3228
+ display: inline-flex;
3229
+ align-items: center;
3230
+ padding: 4px 10px 4px 4px;
3231
+ border-radius: 16px;
3232
+ }
3233
+ .ncua-badge-group__label {
3234
+ margin-left: 8px;
3235
+ font-weight: var(--font-weights-commerce-sans-1);
3236
+ }
3237
+ .ncua-badge-group svg {
3238
+ margin-left: 4px;
3239
+ }
3240
+ .ncua-badge-group.ncua-badge-group--neutral {
3241
+ color: var(--gray-600);
3242
+ background-color: var(--gray-50);
3243
+ border: 1px solid var(--gray-100);
3244
+ }
3245
+ .ncua-badge-group.ncua-badge-group--neutral:hover {
3246
+ background-color: var(--gray-100);
3247
+ border-color: var(--gray-200);
3248
+ }
3249
+ .ncua-badge-group.ncua-badge-group--error {
3250
+ color: var(--primary-red-600);
3251
+ background-color: var(--primary-red-50);
3252
+ border: 1px solid var(--primary-red-100);
3253
+ }
3254
+ .ncua-badge-group.ncua-badge-group--error:hover {
3255
+ background-color: var(--primary-red-100);
3256
+ border-color: var(--primary-red-200);
3257
+ }
3258
+ .ncua-badge-group.ncua-badge-group--warning {
3259
+ color: var(--orange-600);
3260
+ background-color: var(--orange-50);
3261
+ border: 1px solid var(--orange-100);
3262
+ }
3263
+ .ncua-badge-group.ncua-badge-group--warning:hover {
3264
+ background-color: var(--orange-100);
3265
+ border-color: var(--orange-200);
3266
+ }
3267
+ .ncua-badge-group.ncua-badge-group--success {
3268
+ color: var(--green-600);
3269
+ background-color: var(--green-50);
3270
+ border: 1px solid var(--green-100);
3271
+ }
3272
+ .ncua-badge-group.ncua-badge-group--success:hover {
3273
+ background-color: var(--green-100);
3274
+ border-color: var(--green-200);
3275
+ }
3276
+ .ncua-badge-group.ncua-badge-group--xs {
3277
+ font-size: var(--font-size-xs);
3278
+ line-height: var(--line-heights-xs);
3279
+ }
3280
+ .ncua-badge-group.ncua-badge-group--sm {
3281
+ font-size: var(--font-size-sm);
3282
+ line-height: var(--line-heights-sm);
3283
+ }
3284
+
3211
3285
  .ncua-progress-bar {
3212
3286
  position: relative;
3213
3287
  display: flex;
@@ -3352,9 +3426,6 @@ button {
3352
3426
  color: var(--gray-500);
3353
3427
  box-shadow: var(--shadow-sm);
3354
3428
  }
3355
- .ncua-tab-button--button-white:focus {
3356
- box-shadow: var(--shadow-sm-focused-4px-gray-100);
3357
- }
3358
3429
  .ncua-tab-button--underline-fill {
3359
3430
  position: relative;
3360
3431
  border-radius: 0;
@@ -3363,13 +3434,13 @@ button {
3363
3434
  background-color: var(--gray-100);
3364
3435
  }
3365
3436
  .ncua-tab-button--underline-fill:hover::before, .ncua-tab-button--underline-fill.is-active::before, .ncua-tab-button--underline-fill.is-active:focus::before {
3366
- position: absolute;
3367
- bottom: 0;
3368
- left: 0;
3369
3437
  width: 100%;
3370
3438
  height: 2px;
3371
3439
  content: "";
3372
3440
  background-color: var(--gray-500);
3441
+ position: absolute;
3442
+ bottom: 0;
3443
+ left: 0;
3373
3444
  }
3374
3445
  .ncua-tab-button--underline {
3375
3446
  border-radius: 0;
@@ -3378,13 +3449,13 @@ button {
3378
3449
  position: relative;
3379
3450
  }
3380
3451
  .ncua-tab-button--underline:hover::before, .ncua-tab-button--underline.is-active::before {
3381
- position: absolute;
3382
- bottom: 0;
3383
- left: 0;
3384
3452
  width: 100%;
3385
3453
  height: 2px;
3386
3454
  content: "";
3387
3455
  background-color: var(--gray-500);
3456
+ position: absolute;
3457
+ bottom: 0;
3458
+ left: 0;
3388
3459
  }
3389
3460
  .ncua-tab-button--line-vertical {
3390
3461
  border-radius: 0;
@@ -3409,9 +3480,6 @@ button {
3409
3480
  content: "";
3410
3481
  background-color: var(--gray-100);
3411
3482
  }
3412
- .ncua-horizontal-tab--button-primary .swiper-slide, .ncua-horizontal-tab--button-white .swiper-slide {
3413
- padding: 4px 0;
3414
- }
3415
3483
  .ncua-horizontal-tab--button-primary .swiper-slide:first-child, .ncua-horizontal-tab--button-white .swiper-slide:first-child {
3416
3484
  padding-left: 4px;
3417
3485
  }
@@ -3419,12 +3487,18 @@ button {
3419
3487
  padding-right: 4px;
3420
3488
  margin-right: 0;
3421
3489
  }
3490
+ .ncua-horizontal-tab--button-primary .swiper-slide {
3491
+ padding: 4px 0;
3492
+ }
3422
3493
  .ncua-horizontal-tab--button-white {
3423
3494
  display: inline-block;
3424
3495
  background: var(--gray-50);
3425
3496
  border: 1px solid var(--gray-100);
3426
3497
  border-radius: 8px;
3427
3498
  }
3499
+ .ncua-horizontal-tab--button-white .swiper-slide {
3500
+ padding: 3px 0;
3501
+ }
3428
3502
  .ncua-horizontal-tab--button-white .ncua-tab-button {
3429
3503
  background-color: var(--gray-50);
3430
3504
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin",
3
- "version": "0.0.31",
3
+ "version": "0.0.32",
4
4
  "description": "nhn-commerce의 어드민 디자인 시스템입니다.",
5
5
  "scripts": {
6
6
  "barrel": "node barrel.js",