@ncds/ui-admin 0.0.27 → 0.0.28

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 (30) hide show
  1. package/dist/cjs/src/components/badge/Badge.js +8 -1
  2. package/dist/cjs/src/components/button/Button.js +17 -4
  3. package/dist/cjs/src/components/button/ButtonGroup.js +18 -4
  4. package/dist/cjs/src/components/divider/Divider.js +6 -2
  5. package/dist/cjs/src/components/dot/Dot.js +41 -0
  6. package/dist/cjs/src/components/dot/index.js +16 -0
  7. package/dist/cjs/src/components/index.js +11 -0
  8. package/dist/cjs/src/components/modal/Modal.js +11 -8
  9. package/dist/cjs/src/components/tag/Tag.js +21 -9
  10. package/dist/esm/src/components/badge/Badge.js +8 -1
  11. package/dist/esm/src/components/button/Button.js +16 -3
  12. package/dist/esm/src/components/button/ButtonGroup.js +18 -4
  13. package/dist/esm/src/components/divider/Divider.js +6 -2
  14. package/dist/esm/src/components/dot/Dot.js +34 -0
  15. package/dist/esm/src/components/dot/index.js +1 -0
  16. package/dist/esm/src/components/index.js +1 -0
  17. package/dist/esm/src/components/modal/Modal.js +11 -8
  18. package/dist/esm/src/components/tag/Tag.js +21 -9
  19. package/dist/types/constant/color.d.ts +1 -0
  20. package/dist/types/src/components/badge/Badge.d.ts +3 -2
  21. package/dist/types/src/components/button/Button.d.ts +3 -13
  22. package/dist/types/src/components/button/ButtonGroup.d.ts +15 -26
  23. package/dist/types/src/components/divider/Divider.d.ts +5 -0
  24. package/dist/types/src/components/dot/Dot.d.ts +23 -0
  25. package/dist/types/src/components/dot/index.d.ts +2 -0
  26. package/dist/types/src/components/index.d.ts +1 -0
  27. package/dist/types/src/components/modal/Modal.d.ts +6 -6
  28. package/dist/types/src/components/tag/Tag.d.ts +5 -9
  29. package/dist/ui-admin/assets/styles/style.css +71 -28
  30. package/package.json +1 -1
@@ -9,6 +9,7 @@ var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
9
9
  var _button = require("../button");
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _color = require("../../../constant/color");
12
+ var _dot = require("../dot");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  var __assign = void 0 && (void 0).__assign || function () {
14
15
  __assign = Object.assign || function (t) {
@@ -32,7 +33,7 @@ var Badge = function (_a) {
32
33
  _d = _a.size,
33
34
  size = _d === void 0 ? 'sm' : _d;
34
35
  var sideSlotRender = function (slot) {
35
- var _a, _b;
36
+ var _a, _b, _c, _d;
36
37
  if (slot.type === 'icon') {
37
38
  return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
38
39
  name: slot.icon,
@@ -41,6 +42,12 @@ var Badge = function (_a) {
41
42
  color: slot.color ? _color.COLOR[slot.color] : undefined
42
43
  });
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
+ }
44
51
  return slot.children;
45
52
  };
46
53
  return (0, _jsxRuntime.jsxs)("span", __assign({
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.svgSize = exports.iconOnlySvgSize = exports.Button = void 0;
6
+ exports.svgSize = exports.iconOnlySvgSize = exports.dotSize = exports.Button = void 0;
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
- var _classnames = _interopRequireDefault(require("classnames"));
9
8
  var _react = require("react");
10
- var _color = require("../../../constant/color");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
11
10
  var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
11
+ var _color = require("../../../constant/color");
12
+ var _dot = require("../dot");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  var __assign = void 0 && (void 0).__assign || function () {
14
15
  __assign = Object.assign || function (t) {
@@ -40,6 +41,12 @@ var iconOnlySvgSize = exports.iconOnlySvgSize = {
40
41
  sm: 20,
41
42
  md: 20
42
43
  };
44
+ var dotSize = exports.dotSize = {
45
+ xxs: 'sm',
46
+ xs: 'sm',
47
+ sm: 'md',
48
+ md: 'md'
49
+ };
43
50
  var Button = exports.Button = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
44
51
  // NOTE: 엘리먼트 종류에 따라 props의 타입이 달라지므로 분리
45
52
  var _a = props.as,
@@ -78,7 +85,7 @@ var Button = exports.Button = /*#__PURE__*/(0, _react.forwardRef)(function (prop
78
85
  }
79
86
  };
80
87
  var sideSlotRender = function (slot) {
81
- var _a, _b;
88
+ var _a, _b, _c;
82
89
  if (slot.type === 'icon') {
83
90
  var iconSize = onlyIcon ? iconOnlySvgSize[size] : svgSize[size];
84
91
  return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
@@ -88,6 +95,12 @@ var Button = exports.Button = /*#__PURE__*/(0, _react.forwardRef)(function (prop
88
95
  color: slot.color ? _color.COLOR[slot.color] : undefined
89
96
  });
90
97
  }
98
+ if (slot.type === 'dot') {
99
+ return (0, _jsxRuntime.jsx)(_dot.Dot, {
100
+ color: slot.color,
101
+ size: (_c = slot.size) !== null && _c !== void 0 ? _c : dotSize[size]
102
+ });
103
+ }
91
104
  return slot.children;
92
105
  };
93
106
  (0, _react.useEffect)(function () {
@@ -9,6 +9,7 @@ var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _color = require("../../../constant/color");
12
+ var _dot = require("../dot");
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -36,6 +37,12 @@ var svgSize = {
36
37
  md: 16,
37
38
  lg: 20
38
39
  };
40
+ var dotSize = {
41
+ xs: 'sm',
42
+ sm: 'sm',
43
+ md: 'md',
44
+ lg: 'md'
45
+ };
39
46
  var ButtonGroup = function (_a) {
40
47
  var children = _a.children,
41
48
  className = _a.className,
@@ -70,7 +77,8 @@ ButtonGroup.Item = function (_a) {
70
77
  var _c = _a.as,
71
78
  as = _c === void 0 ? 'button' : _c,
72
79
  label = _a.label,
73
- size = _a.size,
80
+ _d = _a.size,
81
+ size = _d === void 0 ? 'md' : _d,
74
82
  onlyIcon = _a.onlyIcon,
75
83
  icon = _a.icon,
76
84
  disabled = _a.disabled,
@@ -78,16 +86,22 @@ ButtonGroup.Item = function (_a) {
78
86
  isCurrent = _a.isCurrent,
79
87
  props = __rest(_a, ["as", "label", "size", "onlyIcon", "icon", "disabled", "children", "isCurrent"]);
80
88
  var renderIcon = function () {
81
- var _a, _b;
89
+ var _a, _b, _c;
82
90
  if (!icon) return null;
83
91
  if (icon.type === 'icon') {
84
92
  return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
85
93
  name: icon.icon,
86
- width: (_a = icon.size) !== null && _a !== void 0 ? _a : svgSize[size !== null && size !== void 0 ? size : 'md'],
87
- height: (_b = icon.size) !== null && _b !== void 0 ? _b : svgSize[size !== null && size !== void 0 ? size : 'md'],
94
+ width: (_a = icon.size) !== null && _a !== void 0 ? _a : svgSize[size],
95
+ height: (_b = icon.size) !== null && _b !== void 0 ? _b : svgSize[size],
88
96
  color: icon.color ? _color.COLOR[icon.color] : 'currentColor'
89
97
  });
90
98
  }
99
+ if (icon.type === 'dot') {
100
+ return (0, _jsxRuntime.jsx)(_dot.Dot, {
101
+ color: icon.color,
102
+ size: (_c = icon.size) !== null && _c !== void 0 ? _c : dotSize[size]
103
+ });
104
+ }
91
105
  return icon.children;
92
106
  };
93
107
  var position = (_b = icon === null || icon === void 0 ? void 0 : icon.position) !== null && _b !== void 0 ? _b : 'leading';
@@ -18,15 +18,19 @@ var __assign = void 0 && (void 0).__assign || function () {
18
18
  };
19
19
  return __assign.apply(this, arguments);
20
20
  };
21
+ /**
22
+ * @param {DividerProps} props
23
+ * @param {ReactNode} props.children Button 컴포넌트는 xs로 ButtonGroup은 sm 사이즈로 추가하는 것이 권장됩니다.
24
+ * @returns {ReactNode}
25
+ */
21
26
  var Divider = exports.Divider = /*#__PURE__*/(0, _react.forwardRef)(function (_a, ref) {
22
27
  var className = _a.className,
23
28
  type = _a.type,
24
29
  _b = _a.style,
25
30
  style = _b === void 0 ? 'single-line' : _b,
26
31
  children = _a.children;
27
- var componentClassName = (0, _classnames.default)('ncua-divider', "ncua-divider--".concat(type), "ncua-divider--".concat(style), className);
28
32
  return (0, _jsxRuntime.jsxs)("div", __assign({
29
- className: componentClassName,
33
+ className: (0, _classnames.default)('ncua-divider', "ncua-divider--".concat(type), "ncua-divider--".concat(style), className),
30
34
  ref: ref
31
35
  }, {
32
36
  children: [style === 'single-line' && (0, _jsxRuntime.jsx)("div", {
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dot = void 0;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _react = require("react");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ var __assign = void 0 && (void 0).__assign || function () {
12
+ __assign = Object.assign || function (t) {
13
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
14
+ s = arguments[i];
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
16
+ }
17
+ return t;
18
+ };
19
+ return __assign.apply(this, arguments);
20
+ };
21
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
22
+ var t = {};
23
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
24
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
25
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
26
+ }
27
+ return t;
28
+ };
29
+ var Dot = exports.Dot = /*#__PURE__*/(0, _react.forwardRef)(function (_a, ref) {
30
+ var _b = _a.color,
31
+ color = _b === void 0 ? 'success' : _b,
32
+ _c = _a.size,
33
+ size = _c === void 0 ? 'md' : _c,
34
+ className = _a.className,
35
+ props = __rest(_a, ["color", "size", "className"]);
36
+ return (0, _jsxRuntime.jsx)("span", __assign({
37
+ ref: ref,
38
+ className: (0, _classnames.default)('ncua-dot', "ncua-dot--".concat(color), "ncua-dot--".concat(size), className)
39
+ }, props));
40
+ });
41
+ Dot.displayName = 'Dot';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Dot = require("./Dot");
7
+ Object.keys(_Dot).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Dot[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _Dot[key];
14
+ }
15
+ });
16
+ });
@@ -80,6 +80,17 @@ Object.keys(_divider).forEach(function (key) {
80
80
  }
81
81
  });
82
82
  });
83
+ var _dot = require("./dot");
84
+ Object.keys(_dot).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (key in exports && exports[key] === _dot[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _dot[key];
91
+ }
92
+ });
93
+ });
83
94
  var _dropdown = require("./dropdown");
84
95
  Object.keys(_dropdown).forEach(function (key) {
85
96
  if (key === "default" || key === "__esModule") return;
@@ -91,12 +91,15 @@ Modal.Header = function (_a) {
91
91
  hideCloseButton = _d === void 0 ? false : _d;
92
92
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
93
93
  children: [(0, _jsxRuntime.jsxs)("header", __assign({
94
- className: (0, _classnames.default)('ncua-modal__header', "ncua-modal__header--".concat(align))
94
+ className: (0, _classnames.default)('ncua-modal__header', "ncua-modal__header--".concat(align), {
95
+ 'ncua-modal__header--close-button': !hideCloseButton
96
+ })
95
97
  }, {
96
98
  children: [featuredIcon && (0, _jsxRuntime.jsx)(_featuredIcon.FeaturedIcon, {
97
99
  name: featuredIcon.name,
98
100
  color: featuredIcon.color,
99
- theme: featuredIcon.theme
101
+ theme: featuredIcon.theme,
102
+ size: "sm"
100
103
  }), (0, _jsxRuntime.jsxs)("div", __assign({
101
104
  className: "ncua-modal__title"
102
105
  }, {
@@ -137,14 +140,14 @@ Modal.Content = function (_a) {
137
140
  *
138
141
  * 1. Vertical layout (buttons stacked):
139
142
  * <Modal.Actions layout="vertical" align="stretch">
140
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
141
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
143
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
144
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
142
145
  * </Modal.Actions>
143
146
  *
144
147
  * 2. Horizontal layout (buttons side by side):
145
148
  * <Modal.Actions layout="horizontal" align="stretch">
146
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
147
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
149
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
150
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
148
151
  * </Modal.Actions>
149
152
  *
150
153
  * 3. Checkbox layout (checkbox on left, buttons on right):
@@ -154,8 +157,8 @@ Modal.Content = function (_a) {
154
157
  * <a href="#">Settings</a>
155
158
  * </>
156
159
  * }>
157
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
158
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
160
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
161
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
159
162
  * </Modal.Actions>
160
163
  */
161
164
  Modal.Actions = function (_a) {
@@ -8,6 +8,7 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _uiAdminIcon = _interopRequireDefault(require("@ncds/ui-admin-icon"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _color = require("../../../constant/color");
11
+ var _dot = require("../dot");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  var __assign = void 0 && (void 0).__assign || function () {
13
14
  __assign = Object.assign || function (t) {
@@ -31,17 +32,28 @@ var Tag = function (_a) {
31
32
  sm: 14,
32
33
  md: 16
33
34
  };
35
+ var sideSlotRender = function (slot) {
36
+ var _a;
37
+ if (slot.type === 'icon') {
38
+ return (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
39
+ name: slot.icon,
40
+ width: iconSize[size],
41
+ height: iconSize[size],
42
+ color: slot.color
43
+ });
44
+ }
45
+ if (slot.type === 'dot') {
46
+ return (0, _jsxRuntime.jsx)(_dot.Dot, {
47
+ color: slot.color,
48
+ size: (_a = slot.size) !== null && _a !== void 0 ? _a : 'sm'
49
+ });
50
+ }
51
+ return slot.children;
52
+ };
34
53
  return (0, _jsxRuntime.jsxs)("span", __assign({
35
- className: (0, _classnames.default)('ncua-tag', "ncua-tag--".concat(size), {
36
- 'ncua-tag--dot': (icon === null || icon === void 0 ? void 0 : icon.name) === 'dot'
37
- })
54
+ className: (0, _classnames.default)('ncua-tag', "ncua-tag--".concat(size))
38
55
  }, {
39
- children: [icon && icon.name !== 'dot' && (0, _jsxRuntime.jsx)(_uiAdminIcon.default, {
40
- name: icon.name,
41
- width: iconSize[size],
42
- height: iconSize[size],
43
- color: icon.color
44
- }), (0, _jsxRuntime.jsx)("span", __assign({
56
+ children: [icon && sideSlotRender(icon), (0, _jsxRuntime.jsx)("span", __assign({
45
57
  className: "ncua-tag__text"
46
58
  }, {
47
59
  children: text
@@ -13,6 +13,7 @@ import Icon from '@ncds/ui-admin-icon';
13
13
  import { svgSize } from '../button';
14
14
  import classNames from 'classnames';
15
15
  import { COLOR } from '../../../constant/color';
16
+ import { Dot } from '../dot';
16
17
  export var Badge = function (_a) {
17
18
  var label = _a.label,
18
19
  _b = _a.type,
@@ -25,7 +26,7 @@ export var Badge = function (_a) {
25
26
  _d = _a.size,
26
27
  size = _d === void 0 ? 'sm' : _d;
27
28
  var sideSlotRender = function (slot) {
28
- var _a, _b;
29
+ var _a, _b, _c, _d;
29
30
  if (slot.type === 'icon') {
30
31
  return _jsx(Icon, {
31
32
  name: slot.icon,
@@ -34,6 +35,12 @@ export var Badge = function (_a) {
34
35
  color: slot.color ? COLOR[slot.color] : undefined
35
36
  });
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
+ }
37
44
  return slot.children;
38
45
  };
39
46
  return _jsxs("span", __assign({
@@ -17,10 +17,11 @@ var __rest = this && this.__rest || function (s, e) {
17
17
  return t;
18
18
  };
19
19
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
20
- import classnames from 'classnames';
21
20
  import { createElement, forwardRef, useEffect, useState } from 'react';
22
- import { COLOR } from '../../../constant/color';
21
+ import classnames from 'classnames';
23
22
  import Icon from '@ncds/ui-admin-icon';
23
+ import { COLOR } from '../../../constant/color';
24
+ import { Dot } from '../dot';
24
25
  export var svgSize = {
25
26
  xxs: 12,
26
27
  xs: 14,
@@ -33,6 +34,12 @@ export var iconOnlySvgSize = {
33
34
  sm: 20,
34
35
  md: 20
35
36
  };
37
+ export var dotSize = {
38
+ xxs: 'sm',
39
+ xs: 'sm',
40
+ sm: 'md',
41
+ md: 'md'
42
+ };
36
43
  export var Button = /*#__PURE__*/forwardRef(function (props, ref) {
37
44
  // NOTE: 엘리먼트 종류에 따라 props의 타입이 달라지므로 분리
38
45
  var _a = props.as,
@@ -71,7 +78,7 @@ export var Button = /*#__PURE__*/forwardRef(function (props, ref) {
71
78
  }
72
79
  };
73
80
  var sideSlotRender = function (slot) {
74
- var _a, _b;
81
+ var _a, _b, _c;
75
82
  if (slot.type === 'icon') {
76
83
  var iconSize = onlyIcon ? iconOnlySvgSize[size] : svgSize[size];
77
84
  return _jsx(Icon, {
@@ -81,6 +88,12 @@ export var Button = /*#__PURE__*/forwardRef(function (props, ref) {
81
88
  color: slot.color ? COLOR[slot.color] : undefined
82
89
  });
83
90
  }
91
+ if (slot.type === 'dot') {
92
+ return _jsx(Dot, {
93
+ color: slot.color,
94
+ size: (_c = slot.size) !== null && _c !== void 0 ? _c : dotSize[size]
95
+ });
96
+ }
84
97
  return slot.children;
85
98
  };
86
99
  useEffect(function () {
@@ -21,12 +21,19 @@ import Icon from '@ncds/ui-admin-icon';
21
21
  import classNames from 'classnames';
22
22
  import React, { createElement } from 'react';
23
23
  import { COLOR } from '../../../constant/color';
24
+ import { Dot } from '../dot';
24
25
  var svgSize = {
25
26
  xs: 12,
26
27
  sm: 16,
27
28
  md: 16,
28
29
  lg: 20
29
30
  };
31
+ var dotSize = {
32
+ xs: 'sm',
33
+ sm: 'sm',
34
+ md: 'md',
35
+ lg: 'md'
36
+ };
30
37
  export var ButtonGroup = function (_a) {
31
38
  var children = _a.children,
32
39
  className = _a.className,
@@ -60,7 +67,8 @@ ButtonGroup.Item = function (_a) {
60
67
  var _c = _a.as,
61
68
  as = _c === void 0 ? 'button' : _c,
62
69
  label = _a.label,
63
- size = _a.size,
70
+ _d = _a.size,
71
+ size = _d === void 0 ? 'md' : _d,
64
72
  onlyIcon = _a.onlyIcon,
65
73
  icon = _a.icon,
66
74
  disabled = _a.disabled,
@@ -68,16 +76,22 @@ ButtonGroup.Item = function (_a) {
68
76
  isCurrent = _a.isCurrent,
69
77
  props = __rest(_a, ["as", "label", "size", "onlyIcon", "icon", "disabled", "children", "isCurrent"]);
70
78
  var renderIcon = function () {
71
- var _a, _b;
79
+ var _a, _b, _c;
72
80
  if (!icon) return null;
73
81
  if (icon.type === 'icon') {
74
82
  return _jsx(Icon, {
75
83
  name: icon.icon,
76
- width: (_a = icon.size) !== null && _a !== void 0 ? _a : svgSize[size !== null && size !== void 0 ? size : 'md'],
77
- height: (_b = icon.size) !== null && _b !== void 0 ? _b : svgSize[size !== null && size !== void 0 ? size : 'md'],
84
+ width: (_a = icon.size) !== null && _a !== void 0 ? _a : svgSize[size],
85
+ height: (_b = icon.size) !== null && _b !== void 0 ? _b : svgSize[size],
78
86
  color: icon.color ? COLOR[icon.color] : 'currentColor'
79
87
  });
80
88
  }
89
+ if (icon.type === 'dot') {
90
+ return _jsx(Dot, {
91
+ color: icon.color,
92
+ size: (_c = icon.size) !== null && _c !== void 0 ? _c : dotSize[size]
93
+ });
94
+ }
81
95
  return icon.children;
82
96
  };
83
97
  var position = (_b = icon === null || icon === void 0 ? void 0 : icon.position) !== null && _b !== void 0 ? _b : 'leading';
@@ -11,15 +11,19 @@ var __assign = this && this.__assign || function () {
11
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
12
  import { forwardRef } from 'react';
13
13
  import classNames from 'classnames';
14
+ /**
15
+ * @param {DividerProps} props
16
+ * @param {ReactNode} props.children Button 컴포넌트는 xs로 ButtonGroup은 sm 사이즈로 추가하는 것이 권장됩니다.
17
+ * @returns {ReactNode}
18
+ */
14
19
  export var Divider = /*#__PURE__*/forwardRef(function (_a, ref) {
15
20
  var className = _a.className,
16
21
  type = _a.type,
17
22
  _b = _a.style,
18
23
  style = _b === void 0 ? 'single-line' : _b,
19
24
  children = _a.children;
20
- var componentClassName = classNames('ncua-divider', "ncua-divider--".concat(type), "ncua-divider--".concat(style), className);
21
25
  return _jsxs("div", __assign({
22
- className: componentClassName,
26
+ className: classNames('ncua-divider', "ncua-divider--".concat(type), "ncua-divider--".concat(style), className),
23
27
  ref: ref
24
28
  }, {
25
29
  children: [style === 'single-line' && _jsx("div", {
@@ -0,0 +1,34 @@
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 } from "react/jsx-runtime";
20
+ import { forwardRef } from 'react';
21
+ import classNames from 'classnames';
22
+ export var Dot = /*#__PURE__*/forwardRef(function (_a, ref) {
23
+ var _b = _a.color,
24
+ color = _b === void 0 ? 'success' : _b,
25
+ _c = _a.size,
26
+ size = _c === void 0 ? 'md' : _c,
27
+ className = _a.className,
28
+ props = __rest(_a, ["color", "size", "className"]);
29
+ return _jsx("span", __assign({
30
+ ref: ref,
31
+ className: classNames('ncua-dot', "ncua-dot--".concat(color), "ncua-dot--".concat(size), className)
32
+ }, props));
33
+ });
34
+ Dot.displayName = 'Dot';
@@ -0,0 +1 @@
1
+ export * from './Dot';
@@ -5,6 +5,7 @@ export * from './carousel';
5
5
  export * from './checkbox';
6
6
  export * from './date-picker';
7
7
  export * from './divider';
8
+ export * from './dot';
8
9
  export * from './dropdown';
9
10
  export * from './empty-state';
10
11
  export * from './featured-icon';
@@ -83,12 +83,15 @@ Modal.Header = function (_a) {
83
83
  hideCloseButton = _d === void 0 ? false : _d;
84
84
  return _jsxs(_Fragment, {
85
85
  children: [_jsxs("header", __assign({
86
- className: classnames('ncua-modal__header', "ncua-modal__header--".concat(align))
86
+ className: classnames('ncua-modal__header', "ncua-modal__header--".concat(align), {
87
+ 'ncua-modal__header--close-button': !hideCloseButton
88
+ })
87
89
  }, {
88
90
  children: [featuredIcon && _jsx(FeaturedIcon, {
89
91
  name: featuredIcon.name,
90
92
  color: featuredIcon.color,
91
- theme: featuredIcon.theme
93
+ theme: featuredIcon.theme,
94
+ size: "sm"
92
95
  }), _jsxs("div", __assign({
93
96
  className: "ncua-modal__title"
94
97
  }, {
@@ -129,14 +132,14 @@ Modal.Content = function (_a) {
129
132
  *
130
133
  * 1. Vertical layout (buttons stacked):
131
134
  * <Modal.Actions layout="vertical" align="stretch">
132
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
133
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
135
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
136
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
134
137
  * </Modal.Actions>
135
138
  *
136
139
  * 2. Horizontal layout (buttons side by side):
137
140
  * <Modal.Actions layout="horizontal" align="stretch">
138
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
139
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
141
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
142
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
140
143
  * </Modal.Actions>
141
144
  *
142
145
  * 3. Checkbox layout (checkbox on left, buttons on right):
@@ -146,8 +149,8 @@ Modal.Content = function (_a) {
146
149
  * <a href="#">Settings</a>
147
150
  * </>
148
151
  * }>
149
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
150
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
152
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
153
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
151
154
  * </Modal.Actions>
152
155
  */
153
156
  Modal.Actions = function (_a) {
@@ -12,6 +12,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
12
  import Icon from '@ncds/ui-admin-icon';
13
13
  import classNames from 'classnames';
14
14
  import { COLOR } from '../../../constant/color';
15
+ import { Dot } from '../dot';
15
16
  export var Tag = function (_a) {
16
17
  var _b = _a.size,
17
18
  size = _b === void 0 ? 'sm' : _b,
@@ -24,17 +25,28 @@ export var Tag = function (_a) {
24
25
  sm: 14,
25
26
  md: 16
26
27
  };
28
+ var sideSlotRender = function (slot) {
29
+ var _a;
30
+ if (slot.type === 'icon') {
31
+ return _jsx(Icon, {
32
+ name: slot.icon,
33
+ width: iconSize[size],
34
+ height: iconSize[size],
35
+ color: slot.color
36
+ });
37
+ }
38
+ if (slot.type === 'dot') {
39
+ return _jsx(Dot, {
40
+ color: slot.color,
41
+ size: (_a = slot.size) !== null && _a !== void 0 ? _a : 'sm'
42
+ });
43
+ }
44
+ return slot.children;
45
+ };
27
46
  return _jsxs("span", __assign({
28
- className: classNames('ncua-tag', "ncua-tag--".concat(size), {
29
- 'ncua-tag--dot': (icon === null || icon === void 0 ? void 0 : icon.name) === 'dot'
30
- })
47
+ className: classNames('ncua-tag', "ncua-tag--".concat(size))
31
48
  }, {
32
- children: [icon && icon.name !== 'dot' && _jsx(Icon, {
33
- name: icon.name,
34
- width: iconSize[size],
35
- height: iconSize[size],
36
- color: icon.color
37
- }), _jsx("span", __assign({
49
+ children: [icon && sideSlotRender(icon), _jsx("span", __assign({
38
50
  className: "ncua-tag__text"
39
51
  }, {
40
52
  children: text
@@ -31,4 +31,5 @@ export declare const COLOR: {
31
31
  'secondary-gray-blue-700': string;
32
32
  };
33
33
  export type ColorKeyType = keyof typeof COLOR;
34
+ export type ColorTone = 'neutral' | 'error' | 'warning' | 'success' | 'blue' | 'pink' | 'violet' | 'disabled';
34
35
  //# sourceMappingURL=color.d.ts.map
@@ -1,7 +1,8 @@
1
- import { SideSlotType } from '../button';
1
+ import { ColorTone } from '../../../constant/color';
2
2
  import { Size } from '../../../constant/size';
3
+ import { SideSlotType } from '../../types/side-slot';
3
4
  export type BadgeType = 'pill-outline' | 'pill-dark-color';
4
- export type BadgeColor = 'neutral' | 'error' | 'warning' | 'success' | 'blue' | 'pink' | 'disabled';
5
+ export type BadgeColor = Extract<ColorTone, 'neutral' | 'error' | 'warning' | 'success' | 'blue' | 'pink' | 'disabled'>;
5
6
  export type BadgeSize = Extract<Size, 'xs' | 'sm' | 'md'>;
6
7
  export type BadgeProps = {
7
8
  label: string;
@@ -1,19 +1,8 @@
1
1
  import { ComponentProps, ReactNode } from 'react';
2
- import { COLOR } from '../../../constant/color';
3
2
  import { Size } from '../../../constant/size';
4
- import { IconName } from '@ncds/ui-admin-icon';
3
+ import { SideSlotType } from '../../types/side-slot';
4
+ import { DotProps } from '../dot';
5
5
  export type ButtonTheme = 'primary' | 'secondary' | 'secondary-gray' | 'tertiary-gray' | 'tertiary' | 'link' | 'destructive';
6
- export type IconSlotType = {
7
- type: 'icon';
8
- icon: IconName;
9
- color?: keyof typeof COLOR;
10
- size?: number | string;
11
- };
12
- export type CustomSlotType = {
13
- type: 'custom';
14
- children: ReactNode;
15
- };
16
- export type SideSlotType = IconSlotType | CustomSlotType;
17
6
  export type ButtonSize = Extract<Size, 'xxs' | 'xs' | 'sm' | 'md'>;
18
7
  type CommonButtonProps<T extends keyof HTMLElementTagNameMap> = Omit<ComponentProps<T>, 'ref'> & {
19
8
  label: string;
@@ -39,6 +28,7 @@ type AnchorElementProps = CommonButtonProps<'a'> & {
39
28
  export type ButtonProps = ButtonElementProps | AnchorElementProps;
40
29
  export declare const svgSize: Record<ButtonSize, number>;
41
30
  export declare const iconOnlySvgSize: Record<ButtonSize, number>;
31
+ export declare const dotSize: Record<ButtonSize, DotProps['size']>;
42
32
  export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
43
33
  export {};
44
34
  //# sourceMappingURL=Button.d.ts.map
@@ -1,26 +1,15 @@
1
- import { IconName } from '@ncds/ui-admin-icon';
2
1
  import React, { ComponentProps } from 'react';
3
- import { ColorKeyType } from '../../../constant/color';
4
2
  import { Size } from '../../../constant/size';
3
+ import { SideSlotType } from 'ui-admin/src/types/side-slot';
5
4
  export type ButtonGroupSize = Extract<Size, 'xs' | 'sm' | 'md' | 'lg'>;
6
5
  interface SideCommon {
7
6
  position?: 'leading' | 'trailing';
8
7
  }
9
- interface SideIcon {
10
- type: 'icon';
11
- icon: IconName;
12
- size?: number;
13
- color?: ColorKeyType;
14
- }
15
- interface SideCustom {
16
- type: 'custom';
17
- children: React.ReactNode;
18
- }
19
- type SideSlotType = SideCommon & (SideIcon | SideCustom);
8
+ type SideSlot = SideCommon & SideSlotType;
20
9
  interface ButtonGroupItemCommonProps {
21
10
  label?: string;
22
11
  size?: ButtonGroupSize;
23
- icon?: SideSlotType;
12
+ icon?: SideSlot;
24
13
  children?: React.ReactNode;
25
14
  onlyIcon?: boolean;
26
15
  disabled?: boolean;
@@ -68,7 +57,7 @@ export declare const ButtonGroup: {
68
57
  contextMenu?: string | undefined;
69
58
  dir?: string | undefined;
70
59
  draggable?: (boolean | "true" | "false") | undefined;
71
- enterKeyHint?: "search" | "enter" | "done" | "go" | "next" | "previous" | "send" | undefined;
60
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
72
61
  hidden?: boolean | undefined;
73
62
  id?: string | undefined;
74
63
  lang?: string | undefined;
@@ -103,13 +92,13 @@ export declare const ButtonGroup: {
103
92
  results?: number | undefined;
104
93
  security?: string | undefined;
105
94
  unselectable?: "off" | "on" | undefined;
106
- inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
95
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
107
96
  is?: string | undefined;
108
97
  exportparts?: string | undefined;
109
98
  part?: string | undefined;
110
99
  "aria-activedescendant"?: string | undefined;
111
100
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
112
- "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
101
+ "aria-autocomplete"?: "none" | "list" | "inline" | "both" | undefined;
113
102
  "aria-braillelabel"?: string | undefined;
114
103
  "aria-brailleroledescription"?: string | undefined;
115
104
  "aria-busy"?: (boolean | "true" | "false") | undefined;
@@ -119,17 +108,17 @@ export declare const ButtonGroup: {
119
108
  "aria-colindextext"?: string | undefined;
120
109
  "aria-colspan"?: number | undefined;
121
110
  "aria-controls"?: string | undefined;
122
- "aria-current"?: boolean | "time" | "step" | "true" | "false" | "page" | "location" | "date" | undefined;
111
+ "aria-current"?: boolean | "true" | "false" | "time" | "step" | "date" | "page" | "location" | undefined;
123
112
  "aria-describedby"?: string | undefined;
124
113
  "aria-description"?: string | undefined;
125
114
  "aria-details"?: string | undefined;
126
115
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
127
- "aria-dropeffect"?: "link" | "move" | "none" | "copy" | "execute" | "popup" | undefined;
116
+ "aria-dropeffect"?: "none" | "link" | "move" | "copy" | "execute" | "popup" | undefined;
128
117
  "aria-errormessage"?: string | undefined;
129
118
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
130
119
  "aria-flowto"?: string | undefined;
131
120
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
132
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
121
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
133
122
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
134
123
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
135
124
  "aria-keyshortcuts"?: string | undefined;
@@ -347,7 +336,7 @@ export declare const ButtonGroup: {
347
336
  contextMenu?: string | undefined;
348
337
  dir?: string | undefined;
349
338
  draggable?: (boolean | "true" | "false") | undefined;
350
- enterKeyHint?: "search" | "enter" | "done" | "go" | "next" | "previous" | "send" | undefined;
339
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
351
340
  hidden?: boolean | undefined;
352
341
  id?: string | undefined;
353
342
  lang?: string | undefined;
@@ -382,13 +371,13 @@ export declare const ButtonGroup: {
382
371
  results?: number | undefined;
383
372
  security?: string | undefined;
384
373
  unselectable?: "off" | "on" | undefined;
385
- inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
374
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
386
375
  is?: string | undefined;
387
376
  exportparts?: string | undefined;
388
377
  part?: string | undefined;
389
378
  "aria-activedescendant"?: string | undefined;
390
379
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
391
- "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
380
+ "aria-autocomplete"?: "none" | "list" | "inline" | "both" | undefined;
392
381
  "aria-braillelabel"?: string | undefined;
393
382
  "aria-brailleroledescription"?: string | undefined;
394
383
  "aria-busy"?: (boolean | "true" | "false") | undefined;
@@ -398,17 +387,17 @@ export declare const ButtonGroup: {
398
387
  "aria-colindextext"?: string | undefined;
399
388
  "aria-colspan"?: number | undefined;
400
389
  "aria-controls"?: string | undefined;
401
- "aria-current"?: boolean | "time" | "step" | "true" | "false" | "page" | "location" | "date" | undefined;
390
+ "aria-current"?: boolean | "true" | "false" | "time" | "step" | "date" | "page" | "location" | undefined;
402
391
  "aria-describedby"?: string | undefined;
403
392
  "aria-description"?: string | undefined;
404
393
  "aria-details"?: string | undefined;
405
394
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
406
- "aria-dropeffect"?: "link" | "move" | "none" | "copy" | "execute" | "popup" | undefined;
395
+ "aria-dropeffect"?: "none" | "link" | "move" | "copy" | "execute" | "popup" | undefined;
407
396
  "aria-errormessage"?: string | undefined;
408
397
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
409
398
  "aria-flowto"?: string | undefined;
410
399
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
411
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
400
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
412
401
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
413
402
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
414
403
  "aria-keyshortcuts"?: string | undefined;
@@ -7,5 +7,10 @@ export interface DividerProps {
7
7
  style?: DividerStyle;
8
8
  children: ReactNode;
9
9
  }
10
+ /**
11
+ * @param {DividerProps} props
12
+ * @param {ReactNode} props.children Button 컴포넌트는 xs로 ButtonGroup은 sm 사이즈로 추가하는 것이 권장됩니다.
13
+ * @returns {ReactNode}
14
+ */
10
15
  export declare const Divider: import("react").ForwardRefExoticComponent<DividerProps & import("react").RefAttributes<HTMLDivElement>>;
11
16
  //# sourceMappingURL=Divider.d.ts.map
@@ -0,0 +1,23 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import { Size } from '../../../constant/size';
3
+ import { ColorTone } from '../../../constant/color';
4
+ export type DotColor = ColorTone;
5
+ export type DotSize = Extract<Size, 'sm' | 'md' | 'lg'>;
6
+ export interface DotProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {
7
+ /**
8
+ * The color of the dot
9
+ * @default 'success'
10
+ */
11
+ color?: DotColor;
12
+ /**
13
+ * The size of the dot
14
+ * @default 'md'
15
+ */
16
+ size?: DotSize;
17
+ /**
18
+ * Additional class names
19
+ */
20
+ className?: string;
21
+ }
22
+ export declare const Dot: import("react").ForwardRefExoticComponent<DotProps & import("react").RefAttributes<HTMLSpanElement>>;
23
+ //# sourceMappingURL=Dot.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './Dot';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -5,6 +5,7 @@ export * from './carousel';
5
5
  export * from './checkbox';
6
6
  export * from './date-picker';
7
7
  export * from './divider';
8
+ export * from './dot';
8
9
  export * from './dropdown';
9
10
  export * from './empty-state';
10
11
  export * from './featured-icon';
@@ -25,14 +25,14 @@ export declare const Modal: {
25
25
  *
26
26
  * 1. Vertical layout (buttons stacked):
27
27
  * <Modal.Actions layout="vertical" align="stretch">
28
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
29
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
28
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
29
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
30
30
  * </Modal.Actions>
31
31
  *
32
32
  * 2. Horizontal layout (buttons side by side):
33
33
  * <Modal.Actions layout="horizontal" align="stretch">
34
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
35
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
34
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
35
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
36
36
  * </Modal.Actions>
37
37
  *
38
38
  * 3. Checkbox layout (checkbox on left, buttons on right):
@@ -42,8 +42,8 @@ export declare const Modal: {
42
42
  * <a href="#">Settings</a>
43
43
  * </>
44
44
  * }>
45
- * <Button label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
46
- * <Button label="Confirm" onClick={handleConfirm} hierarchy="primary" />
45
+ * <Button size="sm" label="Cancel" onClick={handleCancel} hierarchy="secondary-gray" />
46
+ * <Button size="sm" label="Confirm" onClick={handleConfirm} hierarchy="primary" />
47
47
  * </Modal.Actions>
48
48
  */
49
49
  Actions({ children, layout, showDivider, align, checkboxContent, }: ModalActionsProps): import("react/jsx-runtime").JSX.Element;
@@ -1,19 +1,15 @@
1
- import { IconName } from '@ncds/ui-admin-icon';
2
- import { FC, MouseEventHandler } from 'react';
3
- import { COLOR } from '../../../constant/color';
1
+ import { MouseEventHandler } from 'react';
4
2
  import { Size } from '../../../constant/size';
5
- type TagIcon = {
6
- name: IconName | 'dot';
7
- color?: keyof typeof COLOR;
8
- };
3
+ import { SideSlotType } from '../../types/side-slot';
9
4
  interface TagProps {
10
5
  size?: Extract<Size, 'sm' | 'md'>;
11
- icon?: TagIcon;
6
+ icon?: SideSlotType;
12
7
  text: string;
13
8
  count?: string;
14
9
  close?: boolean;
10
+ children?: React.ReactNode;
15
11
  onButtonClick?: MouseEventHandler<HTMLButtonElement>;
16
12
  }
17
- export declare const Tag: FC<TagProps>;
13
+ export declare const Tag: ({ size, icon, text, count, close, onButtonClick }: TagProps) => import("react/jsx-runtime").JSX.Element;
18
14
  export {};
19
15
  //# sourceMappingURL=Tag.d.ts.map
@@ -51,6 +51,14 @@
51
51
  --orange-500: #e4501e;
52
52
  --orange-600: #b93815;
53
53
  --orange-700: #772917;
54
+ --violet-50: #fbfaff;
55
+ --violet-100: #ece9fe;
56
+ --violet-200: #ddd6fe;
57
+ --violet-300: #c3b5fd;
58
+ --violet-400: #a48afb;
59
+ --violet-500: #6927da;
60
+ --violet-600: #5720b7;
61
+ --violet-700: #3e1486;
54
62
  --focus-ring-4px-primary-100: 0px 0px 0px 3px #ffeaee;
55
63
  --focus-ring-4px-gray-100: 0px 0px 0px 3px #f2f4f7;
56
64
  --focus-ring-4px-error-100: 0px 0px 0px 3px #fee4e2;
@@ -917,9 +925,9 @@ button {
917
925
  border-radius: 8px;
918
926
  }
919
927
  .ncua-divider--text {
920
- font-size: var(--font-size-sm);
928
+ font-size: var(--font-size-xs);
921
929
  font-weight: var(--font-weights-commerce-sans-1);
922
- line-height: var(--line-heights-sm);
930
+ line-height: var(--line-heights-xs);
923
931
  color: var(--gray-500);
924
932
  }
925
933
  .ncua-divider--heading {
@@ -929,6 +937,48 @@ button {
929
937
  color: var(--gray-700);
930
938
  }
931
939
 
940
+ .ncua-dot {
941
+ display: inline-block;
942
+ border-radius: 50%;
943
+ margin: 1px;
944
+ }
945
+ .ncua-dot--sm {
946
+ width: 6px;
947
+ height: 6px;
948
+ }
949
+ .ncua-dot--md {
950
+ width: 8px;
951
+ height: 8px;
952
+ }
953
+ .ncua-dot--lg {
954
+ width: 10px;
955
+ height: 10px;
956
+ }
957
+ .ncua-dot--neutral {
958
+ background-color: var(--gray-500);
959
+ }
960
+ .ncua-dot--error {
961
+ background-color: var(--primary-red-500);
962
+ }
963
+ .ncua-dot--warning {
964
+ background-color: var(--orange-500);
965
+ }
966
+ .ncua-dot--success {
967
+ background-color: var(--green-500);
968
+ }
969
+ .ncua-dot--blue {
970
+ background-color: var(--blue-500);
971
+ }
972
+ .ncua-dot--pink {
973
+ background-color: var(--pink-500);
974
+ }
975
+ .ncua-dot--violet {
976
+ background-color: var(--violet-500);
977
+ }
978
+ .ncua-dot--disabled {
979
+ background-color: var(--gray-300);
980
+ }
981
+
932
982
  .ncua-dropdown {
933
983
  position: relative;
934
984
  display: inline-block;
@@ -1512,6 +1562,9 @@ button {
1512
1562
  .ncua-modal__header--horizontal .ncua-modal__title {
1513
1563
  flex: 1;
1514
1564
  }
1565
+ .ncua-modal__header--close-button.ncua-modal__header--left {
1566
+ padding: 20px 56px 20px 16px;
1567
+ }
1515
1568
 
1516
1569
  .ncua-modal__title {
1517
1570
  display: flex;
@@ -1534,22 +1587,21 @@ button {
1534
1587
 
1535
1588
  .ncua-modal__close-button {
1536
1589
  position: absolute;
1537
- top: 16px;
1538
- right: 20px;
1539
- width: 24px;
1540
- height: 24px;
1590
+ top: 10px;
1591
+ right: 16px;
1541
1592
  display: flex;
1542
1593
  align-items: center;
1543
1594
  justify-content: center;
1544
1595
  background: transparent;
1545
1596
  border: none;
1546
1597
  cursor: pointer;
1547
- padding: 0;
1598
+ padding: 8px;
1548
1599
  color: var(--gray-400);
1549
1600
  border-radius: 8px;
1550
1601
  }
1551
- .ncua-modal__close-button:hover {
1552
- background-color: var(--gray-50);
1602
+ .ncua-modal__close-button svg {
1603
+ width: 20px;
1604
+ height: 20px;
1553
1605
  }
1554
1606
 
1555
1607
  .ncua-modal__content {
@@ -2093,24 +2145,9 @@ button {
2093
2145
  white-space: nowrap;
2094
2146
  word-wrap: break-word;
2095
2147
  }
2096
- .ncua-tag > svg {
2148
+ .ncua-tag > svg, .ncua-tag > .ncua-dot {
2097
2149
  margin-right: 4px;
2098
2150
  }
2099
- .ncua-tag--dot .ncua-tag__text {
2100
- position: relative;
2101
- padding-left: 12px;
2102
- }
2103
- .ncua-tag--dot .ncua-tag__text::before {
2104
- position: absolute;
2105
- top: 50%;
2106
- left: 0;
2107
- content: "";
2108
- transform: translateY(-50%);
2109
- width: 6px;
2110
- height: 6px;
2111
- background-color: var(--primary-red-500);
2112
- border-radius: 50%;
2113
- }
2114
2151
  .ncua-tag__count {
2115
2152
  display: inline-flex;
2116
2153
  align-items: center;
@@ -2758,7 +2795,7 @@ button {
2758
2795
  display: inline-flex;
2759
2796
  }
2760
2797
  .ncua-date-picker .flatpickr-wrapper {
2761
- border: 1px solid var(--gray-200);
2798
+ outline: 1px solid var(--gray-200);
2762
2799
  border-radius: 6px;
2763
2800
  font-weight: 400;
2764
2801
  background: var(--base-white);
@@ -2891,15 +2928,21 @@ button {
2891
2928
  .ncua-date-picker .flatpickr-day.today {
2892
2929
  border-color: var(--gray-600);
2893
2930
  }
2894
- .ncua-date-picker--sm .flatpickr-wrapper {
2931
+ .ncua-date-picker--sm {
2895
2932
  width: 138px;
2896
2933
  height: 28px;
2934
+ }
2935
+ .ncua-date-picker--sm .flatpickr-wrapper {
2936
+ height: 100%;
2897
2937
  padding: 5px 10px;
2898
2938
  font-size: var(--font-size-xs);
2899
2939
  }
2900
- .ncua-date-picker--md .flatpickr-wrapper {
2940
+ .ncua-date-picker--md {
2901
2941
  width: 156px;
2902
2942
  height: 36px;
2943
+ }
2944
+ .ncua-date-picker--md .flatpickr-wrapper {
2945
+ height: 100%;
2903
2946
  padding: 7px 12px;
2904
2947
  font-size: var(--font-size-sm);
2905
2948
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncds/ui-admin",
3
- "version": "0.0.27",
3
+ "version": "0.0.28",
4
4
  "description": "nhn-commerce의 어드민 디자인 시스템입니다.",
5
5
  "scripts": {
6
6
  "barrel": "node barrel.js",