@mindlogic-ai/logician-ui 3.0.0-alpha.34 → 3.0.0-alpha.35

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 (75) hide show
  1. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  2. package/dist/components/Pagination/Pagination.js +7 -20
  3. package/dist/components/Pagination/Pagination.js.map +1 -1
  4. package/dist/components/Pagination/Pagination.mjs +7 -20
  5. package/dist/components/Pagination/Pagination.mjs.map +1 -1
  6. package/dist/components/Select/Combobox.d.ts +28 -0
  7. package/dist/components/Select/Combobox.d.ts.map +1 -0
  8. package/dist/components/Select/Combobox.js +47 -0
  9. package/dist/components/Select/Combobox.js.map +1 -0
  10. package/dist/components/Select/Combobox.mjs +45 -0
  11. package/dist/components/Select/Combobox.mjs.map +1 -0
  12. package/dist/components/Select/ComboboxField.d.ts +12 -0
  13. package/dist/components/Select/ComboboxField.d.ts.map +1 -0
  14. package/dist/components/Select/ComboboxField.js +34 -0
  15. package/dist/components/Select/ComboboxField.js.map +1 -0
  16. package/dist/components/Select/ComboboxField.mjs +32 -0
  17. package/dist/components/Select/ComboboxField.mjs.map +1 -0
  18. package/dist/components/Select/Select.d.ts +29 -3
  19. package/dist/components/Select/Select.d.ts.map +1 -1
  20. package/dist/components/Select/Select.js +41 -156
  21. package/dist/components/Select/Select.js.map +1 -1
  22. package/dist/components/Select/Select.mjs +43 -158
  23. package/dist/components/Select/Select.mjs.map +1 -1
  24. package/dist/components/Select/Select.styles.d.ts +91 -62
  25. package/dist/components/Select/Select.styles.d.ts.map +1 -1
  26. package/dist/components/Select/Select.styles.js +67 -69
  27. package/dist/components/Select/Select.styles.js.map +1 -1
  28. package/dist/components/Select/Select.styles.mjs +63 -66
  29. package/dist/components/Select/Select.styles.mjs.map +1 -1
  30. package/dist/components/Select/Select.types.d.ts +31 -8
  31. package/dist/components/Select/Select.types.d.ts.map +1 -1
  32. package/dist/components/Select/SelectField.d.ts +11 -0
  33. package/dist/components/Select/SelectField.d.ts.map +1 -0
  34. package/dist/components/Select/SelectField.js +32 -0
  35. package/dist/components/Select/SelectField.js.map +1 -0
  36. package/dist/components/Select/SelectField.mjs +30 -0
  37. package/dist/components/Select/SelectField.mjs.map +1 -0
  38. package/dist/components/Select/index.d.ts +4 -0
  39. package/dist/components/Select/index.d.ts.map +1 -1
  40. package/dist/index.js +27 -9
  41. package/dist/index.js.map +1 -1
  42. package/dist/index.mjs +4 -1
  43. package/dist/index.mjs.map +1 -1
  44. package/package.json +1 -3
  45. package/src/components/FormIntegration/FormIntegration.stories.tsx +7 -13
  46. package/src/components/FormIntegration/README.md +1 -1
  47. package/src/components/Pagination/Pagination.tsx +7 -26
  48. package/src/components/Select/Combobox.stories.tsx +172 -0
  49. package/src/components/Select/Combobox.tsx +69 -0
  50. package/src/components/Select/ComboboxField.tsx +86 -0
  51. package/src/components/Select/Comparison.stories.tsx +38 -321
  52. package/src/components/Select/Select.stories.tsx +691 -404
  53. package/src/components/Select/Select.styles.ts +64 -76
  54. package/src/components/Select/Select.tsx +76 -202
  55. package/src/components/Select/Select.types.ts +33 -13
  56. package/src/components/Select/SelectField.tsx +87 -0
  57. package/src/components/Select/index.ts +8 -0
  58. package/dist/components/Select/MenuList/MenuList.d.ts +0 -4
  59. package/dist/components/Select/MenuList/MenuList.d.ts.map +0 -1
  60. package/dist/components/Select/MenuList/MenuList.types.d.ts +0 -9
  61. package/dist/components/Select/MenuList/MenuList.types.d.ts.map +0 -1
  62. package/dist/components/Select/MenuList/VirtualizedMenuList.d.ts +0 -4
  63. package/dist/components/Select/MenuList/VirtualizedMenuList.d.ts.map +0 -1
  64. package/dist/components/Select/MenuList/VirtualizedMenuListContext.d.ts +0 -9
  65. package/dist/components/Select/MenuList/VirtualizedMenuListContext.d.ts.map +0 -1
  66. package/dist/components/Select/MenuList/index.d.ts +0 -4
  67. package/dist/components/Select/MenuList/index.d.ts.map +0 -1
  68. package/dist/components/Select/_utils/resolveStyle.d.ts +0 -5
  69. package/dist/components/Select/_utils/resolveStyle.d.ts.map +0 -1
  70. package/src/components/Select/MenuList/MenuList.tsx +0 -87
  71. package/src/components/Select/MenuList/MenuList.types.ts +0 -21
  72. package/src/components/Select/MenuList/VirtualizedMenuList.tsx +0 -136
  73. package/src/components/Select/MenuList/VirtualizedMenuListContext.tsx +0 -35
  74. package/src/components/Select/MenuList/index.ts +0 -3
  75. package/src/components/Select/_utils/resolveStyle.ts +0 -21
@@ -2,165 +2,50 @@
2
2
  'use strict';
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
- var ReactSelect = require('react-select');
5
+ var React = require('react');
6
6
  var react = require('@chakra-ui/react');
7
+ var mergeCss = require('../../utils/mergeCss.js');
7
8
  var Select_styles = require('./Select.styles.js');
8
9
 
9
- const Select = ({ variant = 'default', invalid = false, styles, ...rest }) => {
10
- const [primaryColor, primaryLighter, primaryLightest, primaryDark, dangerColor, gray50, gray300, gray400, gray500, gray600, gray1000, gray1200, gray1300,] = react.useToken('colors', [
11
- 'primary.main',
12
- 'primary.lighter',
13
- 'primary.extralight',
14
- 'primary.dark',
15
- 'danger.main',
16
- 'gray.50',
17
- 'gray.300',
18
- 'gray.400',
19
- 'gray.500',
20
- 'gray.600',
21
- 'gray.1000',
22
- 'gray.1200',
23
- 'gray.1300',
24
- ]);
25
- const colors = {
26
- primaryLightest,
27
- primaryDark,
28
- dangerColor,
29
- gray50,
30
- gray300,
31
- gray500,
32
- gray1200};
33
- // invalid prop이 true이면 variant를 'danger'로 오버라이드
34
- const effectiveVariant = invalid ? 'danger' : variant;
35
- return (jsxRuntime.jsx(ReactSelect, { closeMenuOnSelect: true, closeMenuOnScroll: true, isSearchable: false, ...rest,
36
- // 사용자 styles 콜백에 react-select 원본 base 대신 Logician 스타일이 적용된
37
- // merged를 넘겨서, 사용자가 ...base로 spread해도 Logician 스타일이 유지되도록 함
38
- styles: {
39
- container: (base, state) => {
40
- const merged = { ...base, width: '100%' };
41
- return styles?.container ? styles.container(merged, state) : merged;
42
- },
43
- control: (base, state) => {
44
- // Mirror Input.tsx: borderColor gray.400, _hover primary.lighter,
45
- // _focus primary.main + 1px outline (Chakra Input recipe's
46
- // `focusVisibleRing: "inside"`), _invalid danger.main,
47
- // _disabled bg gray.50 / color gray.1000 / fontWeight semibold.
48
- const focusOutlineColor = invalid ? dangerColor : primaryColor;
49
- const merged = {
50
- ...base,
51
- ...Select_styles.getControlStyles(effectiveVariant, colors),
52
- width: '100%',
53
- border: `1px solid ${invalid ? dangerColor : state.isFocused ? primaryColor : gray400}`,
54
- boxShadow: 'none',
55
- outline: state.isFocused
56
- ? `1px solid ${focusOutlineColor}`
57
- : 'none',
58
- outlineOffset: 0,
59
- // react-select sets a 0.1s `transition: all` on the control,
60
- // which causes the border-color and outline (none -> solid +
61
- // transparent -> primary) to interpolate awkwardly — a brief
62
- // dark blink during focus. Disable to match Input, which
63
- // toggles its focus ring instantly via :focus-visible.
64
- transition: 'none',
65
- '&:hover': {
66
- borderColor: invalid
67
- ? dangerColor
68
- : state.isFocused
69
- ? primaryColor
70
- : primaryLighter,
71
- },
72
- ...(state.isDisabled && {
73
- backgroundColor: gray50,
74
- color: gray1000,
75
- fontWeight: 600,
76
- cursor: 'not-allowed',
77
- }),
78
- };
79
- return styles?.control ? styles.control(merged, state) : merged;
80
- },
81
- placeholder: (base, state) => {
82
- const merged = { ...base, ...Select_styles.getPlaceholderStyles(colors) };
83
- return styles?.placeholder
84
- ? styles.placeholder(merged, state)
85
- : merged;
86
- },
87
- menu: (base, state) => {
88
- const merged = { ...base, ...Select_styles.getMenuStyles(colors) };
89
- return styles?.menu ? styles.menu(merged, state) : merged;
90
- },
91
- menuList: (base, state) => {
92
- const merged = { ...base, padding: '0px 4px' };
93
- return styles?.menuList ? styles.menuList(merged, state) : merged;
94
- },
95
- option: (base, state) => {
96
- const merged = {
97
- ...base,
98
- ...Select_styles.getOptionStyles({
99
- isSelected: state.isSelected,
100
- isDisabled: state.isDisabled,
101
- colors,
102
- }),
103
- };
104
- return styles?.option ? styles.option(merged, state) : merged;
105
- },
106
- singleValue: (base, state) => {
107
- // Match Input text color (gray.1300, inherited from body in Input).
108
- // When disabled, mirror Input's _disabled color (gray.1000).
109
- const merged = {
110
- ...base,
111
- margin: 0,
112
- color: state.isDisabled ? gray1000 : gray1300,
113
- };
114
- return styles?.singleValue
115
- ? styles.singleValue(merged, state)
116
- : merged;
117
- },
118
- valueContainer: (base, state) => {
119
- // Zero internal padding so the visible text starts after the
120
- // control's own 12px paddingLeft (matches Input's `px: 3` =
121
- // 12px). react-select's default valueContainer padding is
122
- // `2px 8px`, which would otherwise stack on top.
123
- const merged = {
124
- ...base,
125
- display: 'flex',
126
- alignItems: 'center',
127
- textAlign: 'left',
128
- padding: 0,
129
- };
130
- return styles?.valueContainer
131
- ? styles.valueContainer(merged, state)
132
- : merged;
133
- },
134
- indicatorSeparator: (base, state) => {
135
- const merged = { ...base, display: 'none' };
136
- return styles?.indicatorSeparator
137
- ? styles.indicatorSeparator(merged, state)
138
- : merged;
139
- },
140
- dropdownIndicator: (base, state) => {
141
- // Lighter than the body text color so the chevron doesn't
142
- // visually outweigh Input's right-side icons (which are
143
- // typically outline-style and read as gray.600-ish).
144
- const merged = { ...base, color: gray600 };
145
- return styles?.dropdownIndicator
146
- ? styles.dropdownIndicator(merged, state)
147
- : merged;
148
- },
149
- indicatorsContainer: (base, state) => {
150
- const merged = {
151
- ...base,
152
- display: 'flex',
153
- alignItems: 'center',
154
- };
155
- return styles?.indicatorsContainer
156
- ? styles.indicatorsContainer(merged, state)
157
- : merged;
158
- },
159
- menuPortal: (base, state) => {
160
- const merged = { ...base, zIndex: 9999 };
161
- return styles?.menuPortal ? styles.menuPortal(merged, state) : merged;
162
- },
163
- } }));
10
+ const Trigger = React.forwardRef(function SelectTrigger({ css, ...props }, ref) {
11
+ return (jsxRuntime.jsx(react.Select.Trigger, { ref: ref, ...props, css: mergeCss.mergeCss(Select_styles.triggerStyles, css) }));
12
+ });
13
+ const Content = React.forwardRef(function SelectContent({ css, ...props }, ref) {
14
+ return (jsxRuntime.jsx(react.Select.Content, { ref: ref, ...props, css: mergeCss.mergeCss(Select_styles.contentStyles, css) }));
15
+ });
16
+ const Item = React.forwardRef(function SelectItem({ css, ...props }, ref) {
17
+ return (jsxRuntime.jsx(react.Select.Item, { ref: ref, ...props, css: mergeCss.mergeCss(Select_styles.itemStyles, css) }));
18
+ });
19
+ const Indicator = React.forwardRef(function SelectIndicator({ css, ...props }, ref) {
20
+ return (jsxRuntime.jsx(react.Select.Indicator, { ref: ref, ...props, css: mergeCss.mergeCss(Select_styles.indicatorStyles, css) }));
21
+ });
22
+ /**
23
+ * Compound Select primitives — Chakra's `Select` namespace with the Logician
24
+ * design-system styling baked into the visual parts (`Trigger`, `Content`,
25
+ * `Item`, `Indicator`). Use these directly for full compositional control
26
+ * (multi-select, grouped options, custom layouts); use `SelectField` for the
27
+ * common single-select case.
28
+ */
29
+ const Select = {
30
+ Root: react.Select.Root,
31
+ PropsProvider: react.Select.PropsProvider,
32
+ Context: react.Select.Context,
33
+ Label: react.Select.Label,
34
+ Control: react.Select.Control,
35
+ Trigger,
36
+ ValueText: react.Select.ValueText,
37
+ IndicatorGroup: react.Select.IndicatorGroup,
38
+ Indicator,
39
+ ClearTrigger: react.Select.ClearTrigger,
40
+ HiddenSelect: react.Select.HiddenSelect,
41
+ Positioner: react.Select.Positioner,
42
+ Content,
43
+ ItemGroup: react.Select.ItemGroup,
44
+ ItemGroupLabel: react.Select.ItemGroupLabel,
45
+ Item,
46
+ ItemText: react.Select.ItemText,
47
+ ItemIndicator: react.Select.ItemIndicator,
48
+ ItemContext: react.Select.ItemContext,
164
49
  };
165
50
 
166
51
  exports.Select = Select;
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":[null],"names":["useToken","_jsx","getControlStyles","getPlaceholderStyles","getMenuStyles","getOptionStyles"],"mappings":";;;;;;;;MAYa,MAAM,GAAG,CAIpB,EACA,OAAO,GAAG,SAAS,EACnB,OAAO,GAAG,KAAK,EACf,MAAM,EACN,GAAG,IAAI,EAC6B,KAAI;AACxC,IAAA,MAAM,CACJ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACT,GAAGA,cAAQ,CAAC,QAAQ,EAAE;QACrB,cAAc;QACd,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,aAAa;QACb,SAAS;QACT,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;QACX,WAAW;QACX,WAAW;AACZ,KAAA,CAAC;AAEF,IAAA,MAAM,MAAM,GAAiB;QAG3B,eAAe;QACf,WAAW;QACX,WAAW;QACX,MAAM;QACN,OAAO;QAEP,OAAO;QAGP,SAED;;IAGD,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;AAErD,IAAA,QACEC,cAAA,CAAC,WAAW,EAAA,EACV,iBAAiB,EAAA,IAAA,EACjB,iBAAiB,EAAA,IAAA,EACjB,YAAY,EAAE,KAAK,EAAA,GACf,IAAI;;;AAGR,QAAA,MAAM,EAAE;AACN,YAAA,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;gBACzB,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AACzC,gBAAA,OAAO,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YACrE,CAAC;AACD,YAAA,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;;;;;gBAKvB,MAAM,iBAAiB,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY;AAC9D,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAGC,8BAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC;AAC7C,oBAAA,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,aACN,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,YAAY,GAAG,OAC3D,CAAA,CAAE;AACF,oBAAA,SAAS,EAAE,MAAM;oBACjB,OAAO,EAAE,KAAK,CAAC;0BACX,CAAA,UAAA,EAAa,iBAAiB,CAAA;AAChC,0BAAE,MAAM;AACV,oBAAA,aAAa,EAAE,CAAC;;;;;;AAMhB,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,SAAS,EAAE;AACT,wBAAA,WAAW,EAAE;AACX,8BAAE;8BACA,KAAK,CAAC;AACN,kCAAE;AACF,kCAAE,cAAc;AACrB,qBAAA;AACD,oBAAA,IAAI,KAAK,CAAC,UAAU,IAAI;AACtB,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,UAAU,EAAE,GAAG;AACf,wBAAA,MAAM,EAAE,aAAa;qBACtB,CAAC;iBACH;AACD,gBAAA,OAAO,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YACjE,CAAC;AACD,YAAA,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AAC3B,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAGC,kCAAoB,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK;sBAChC,MAAM;YACZ,CAAC;AACD,YAAA,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AACpB,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAGC,2BAAa,CAAC,MAAM,CAAC,EAAE;AACpD,gBAAA,OAAO,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YAC3D,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;gBACxB,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE;AAC9C,gBAAA,OAAO,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YACnE,CAAC;AACD,YAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AACtB,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAGC,6BAAe,CAAC;wBACjB,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,MAAM;qBACP,CAAC;iBACH;AACD,gBAAA,OAAO,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YAC/D,CAAC;AACD,YAAA,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;;;AAG3B,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ,GAAG,QAAQ;iBAC9C;gBACD,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK;sBAChC,MAAM;YACZ,CAAC;AACD,YAAA,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;;;;;AAK9B,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,GAAG,IAAI;AACP,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,SAAS,EAAE,MAAe;AAC1B,oBAAA,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK;sBACnC,MAAM;YACZ,CAAC;AACD,YAAA,kBAAkB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;gBAClC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC3C,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK;sBACvC,MAAM;YACZ,CAAC;AACD,YAAA,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;;;;gBAIjC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC1C,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK;sBACtC,MAAM;YACZ,CAAC;AACD,YAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,GAAG,IAAI;AACP,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;iBACrB;gBACD,OAAO,MAAM,EAAE;sBACX,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK;sBACxC,MAAM;YACZ,CAAC;AACD,YAAA,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAI;gBAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACxC,gBAAA,OAAO,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;YACvE,CAAC;AACF,SAAA,EAAA,CACD;AAEN;;;;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":[null],"names":["forwardRef","_jsx","ChakraSelect","mergeCss","triggerStyles","contentStyles","itemStyles","indicatorStyles"],"mappings":";;;;;;;;;AAYA,MAAM,OAAO,GAAGA,gBAAU,CACxB,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC3C,QACEC,eAACC,YAAY,CAAC,OAAO,EAAA,EACnB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAEC,iBAAQ,CAACC,2BAAa,EAAE,GAAG,CAAC,EAAA,CACjC;AAEN,CAAC,CACF;AAED,MAAM,OAAO,GAAGJ,gBAAU,CACxB,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC3C,QACEC,eAACC,YAAY,CAAC,OAAO,EAAA,EACnB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAEC,iBAAQ,CAACE,2BAAa,EAAE,GAAG,CAAC,EAAA,CACjC;AAEN,CAAC,CACF;AAED,MAAM,IAAI,GAAGL,gBAAU,CACrB,SAAS,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IACxC,QACEC,eAACC,YAAY,CAAC,IAAI,EAAA,EAAC,GAAG,EAAE,GAAG,EAAA,GAAM,KAAK,EAAE,GAAG,EAAEC,iBAAQ,CAACG,wBAAU,EAAE,GAAG,CAAC,EAAA,CAAI;AAE9E,CAAC,CACF;AAED,MAAM,SAAS,GAAGN,gBAAU,CAC1B,SAAS,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC7C,QACEC,eAACC,YAAY,CAAC,SAAS,EAAA,EACrB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAEC,iBAAQ,CAACI,6BAAe,EAAE,GAAG,CAAC,EAAA,CACnC;AAEN,CAAC,CACF;AAED;;;;;;AAMG;AACI,MAAM,MAAM,GAAG;IACpB,IAAI,EAAEL,YAAY,CAAC,IAAI;IACvB,aAAa,EAAEA,YAAY,CAAC,aAAa;IACzC,OAAO,EAAEA,YAAY,CAAC,OAAO;IAC7B,KAAK,EAAEA,YAAY,CAAC,KAAK;IACzB,OAAO,EAAEA,YAAY,CAAC,OAAO;IAC7B,OAAO;IACP,SAAS,EAAEA,YAAY,CAAC,SAAS;IACjC,cAAc,EAAEA,YAAY,CAAC,cAAc;IAC3C,SAAS;IACT,YAAY,EAAEA,YAAY,CAAC,YAAY;IACvC,YAAY,EAAEA,YAAY,CAAC,YAAY;IACvC,UAAU,EAAEA,YAAY,CAAC,UAAU;IACnC,OAAO;IACP,SAAS,EAAEA,YAAY,CAAC,SAAS;IACjC,cAAc,EAAEA,YAAY,CAAC,cAAc;IAC3C,IAAI;IACJ,QAAQ,EAAEA,YAAY,CAAC,QAAQ;IAC/B,aAAa,EAAEA,YAAY,CAAC,aAAa;IACzC,WAAW,EAAEA,YAAY,CAAC,WAAW;;;;;"}
@@ -1,164 +1,49 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import ReactSelect from 'react-select';
4
- import { useToken } from '@chakra-ui/react';
5
- import { getOptionStyles, getMenuStyles, getPlaceholderStyles, getControlStyles } from './Select.styles.mjs';
3
+ import { forwardRef } from 'react';
4
+ import { Select as Select$1 } from '@chakra-ui/react';
5
+ import { mergeCss } from '../../utils/mergeCss.mjs';
6
+ import { triggerStyles, contentStyles, itemStyles, indicatorStyles } from './Select.styles.mjs';
6
7
 
7
- const Select = ({ variant = 'default', invalid = false, styles, ...rest }) => {
8
- const [primaryColor, primaryLighter, primaryLightest, primaryDark, dangerColor, gray50, gray300, gray400, gray500, gray600, gray1000, gray1200, gray1300,] = useToken('colors', [
9
- 'primary.main',
10
- 'primary.lighter',
11
- 'primary.extralight',
12
- 'primary.dark',
13
- 'danger.main',
14
- 'gray.50',
15
- 'gray.300',
16
- 'gray.400',
17
- 'gray.500',
18
- 'gray.600',
19
- 'gray.1000',
20
- 'gray.1200',
21
- 'gray.1300',
22
- ]);
23
- const colors = {
24
- primaryLightest,
25
- primaryDark,
26
- dangerColor,
27
- gray50,
28
- gray300,
29
- gray500,
30
- gray1200};
31
- // invalid prop이 true이면 variant를 'danger'로 오버라이드
32
- const effectiveVariant = invalid ? 'danger' : variant;
33
- return (jsx(ReactSelect, { closeMenuOnSelect: true, closeMenuOnScroll: true, isSearchable: false, ...rest,
34
- // 사용자 styles 콜백에 react-select 원본 base 대신 Logician 스타일이 적용된
35
- // merged를 넘겨서, 사용자가 ...base로 spread해도 Logician 스타일이 유지되도록 함
36
- styles: {
37
- container: (base, state) => {
38
- const merged = { ...base, width: '100%' };
39
- return styles?.container ? styles.container(merged, state) : merged;
40
- },
41
- control: (base, state) => {
42
- // Mirror Input.tsx: borderColor gray.400, _hover primary.lighter,
43
- // _focus primary.main + 1px outline (Chakra Input recipe's
44
- // `focusVisibleRing: "inside"`), _invalid danger.main,
45
- // _disabled bg gray.50 / color gray.1000 / fontWeight semibold.
46
- const focusOutlineColor = invalid ? dangerColor : primaryColor;
47
- const merged = {
48
- ...base,
49
- ...getControlStyles(effectiveVariant, colors),
50
- width: '100%',
51
- border: `1px solid ${invalid ? dangerColor : state.isFocused ? primaryColor : gray400}`,
52
- boxShadow: 'none',
53
- outline: state.isFocused
54
- ? `1px solid ${focusOutlineColor}`
55
- : 'none',
56
- outlineOffset: 0,
57
- // react-select sets a 0.1s `transition: all` on the control,
58
- // which causes the border-color and outline (none -> solid +
59
- // transparent -> primary) to interpolate awkwardly — a brief
60
- // dark blink during focus. Disable to match Input, which
61
- // toggles its focus ring instantly via :focus-visible.
62
- transition: 'none',
63
- '&:hover': {
64
- borderColor: invalid
65
- ? dangerColor
66
- : state.isFocused
67
- ? primaryColor
68
- : primaryLighter,
69
- },
70
- ...(state.isDisabled && {
71
- backgroundColor: gray50,
72
- color: gray1000,
73
- fontWeight: 600,
74
- cursor: 'not-allowed',
75
- }),
76
- };
77
- return styles?.control ? styles.control(merged, state) : merged;
78
- },
79
- placeholder: (base, state) => {
80
- const merged = { ...base, ...getPlaceholderStyles(colors) };
81
- return styles?.placeholder
82
- ? styles.placeholder(merged, state)
83
- : merged;
84
- },
85
- menu: (base, state) => {
86
- const merged = { ...base, ...getMenuStyles(colors) };
87
- return styles?.menu ? styles.menu(merged, state) : merged;
88
- },
89
- menuList: (base, state) => {
90
- const merged = { ...base, padding: '0px 4px' };
91
- return styles?.menuList ? styles.menuList(merged, state) : merged;
92
- },
93
- option: (base, state) => {
94
- const merged = {
95
- ...base,
96
- ...getOptionStyles({
97
- isSelected: state.isSelected,
98
- isDisabled: state.isDisabled,
99
- colors,
100
- }),
101
- };
102
- return styles?.option ? styles.option(merged, state) : merged;
103
- },
104
- singleValue: (base, state) => {
105
- // Match Input text color (gray.1300, inherited from body in Input).
106
- // When disabled, mirror Input's _disabled color (gray.1000).
107
- const merged = {
108
- ...base,
109
- margin: 0,
110
- color: state.isDisabled ? gray1000 : gray1300,
111
- };
112
- return styles?.singleValue
113
- ? styles.singleValue(merged, state)
114
- : merged;
115
- },
116
- valueContainer: (base, state) => {
117
- // Zero internal padding so the visible text starts after the
118
- // control's own 12px paddingLeft (matches Input's `px: 3` =
119
- // 12px). react-select's default valueContainer padding is
120
- // `2px 8px`, which would otherwise stack on top.
121
- const merged = {
122
- ...base,
123
- display: 'flex',
124
- alignItems: 'center',
125
- textAlign: 'left',
126
- padding: 0,
127
- };
128
- return styles?.valueContainer
129
- ? styles.valueContainer(merged, state)
130
- : merged;
131
- },
132
- indicatorSeparator: (base, state) => {
133
- const merged = { ...base, display: 'none' };
134
- return styles?.indicatorSeparator
135
- ? styles.indicatorSeparator(merged, state)
136
- : merged;
137
- },
138
- dropdownIndicator: (base, state) => {
139
- // Lighter than the body text color so the chevron doesn't
140
- // visually outweigh Input's right-side icons (which are
141
- // typically outline-style and read as gray.600-ish).
142
- const merged = { ...base, color: gray600 };
143
- return styles?.dropdownIndicator
144
- ? styles.dropdownIndicator(merged, state)
145
- : merged;
146
- },
147
- indicatorsContainer: (base, state) => {
148
- const merged = {
149
- ...base,
150
- display: 'flex',
151
- alignItems: 'center',
152
- };
153
- return styles?.indicatorsContainer
154
- ? styles.indicatorsContainer(merged, state)
155
- : merged;
156
- },
157
- menuPortal: (base, state) => {
158
- const merged = { ...base, zIndex: 9999 };
159
- return styles?.menuPortal ? styles.menuPortal(merged, state) : merged;
160
- },
161
- } }));
8
+ const Trigger = forwardRef(function SelectTrigger({ css, ...props }, ref) {
9
+ return (jsx(Select$1.Trigger, { ref: ref, ...props, css: mergeCss(triggerStyles, css) }));
10
+ });
11
+ const Content = forwardRef(function SelectContent({ css, ...props }, ref) {
12
+ return (jsx(Select$1.Content, { ref: ref, ...props, css: mergeCss(contentStyles, css) }));
13
+ });
14
+ const Item = forwardRef(function SelectItem({ css, ...props }, ref) {
15
+ return (jsx(Select$1.Item, { ref: ref, ...props, css: mergeCss(itemStyles, css) }));
16
+ });
17
+ const Indicator = forwardRef(function SelectIndicator({ css, ...props }, ref) {
18
+ return (jsx(Select$1.Indicator, { ref: ref, ...props, css: mergeCss(indicatorStyles, css) }));
19
+ });
20
+ /**
21
+ * Compound Select primitives — Chakra's `Select` namespace with the Logician
22
+ * design-system styling baked into the visual parts (`Trigger`, `Content`,
23
+ * `Item`, `Indicator`). Use these directly for full compositional control
24
+ * (multi-select, grouped options, custom layouts); use `SelectField` for the
25
+ * common single-select case.
26
+ */
27
+ const Select = {
28
+ Root: Select$1.Root,
29
+ PropsProvider: Select$1.PropsProvider,
30
+ Context: Select$1.Context,
31
+ Label: Select$1.Label,
32
+ Control: Select$1.Control,
33
+ Trigger,
34
+ ValueText: Select$1.ValueText,
35
+ IndicatorGroup: Select$1.IndicatorGroup,
36
+ Indicator,
37
+ ClearTrigger: Select$1.ClearTrigger,
38
+ HiddenSelect: Select$1.HiddenSelect,
39
+ Positioner: Select$1.Positioner,
40
+ Content,
41
+ ItemGroup: Select$1.ItemGroup,
42
+ ItemGroupLabel: Select$1.ItemGroupLabel,
43
+ Item,
44
+ ItemText: Select$1.ItemText,
45
+ ItemIndicator: Select$1.ItemIndicator,
46
+ ItemContext: Select$1.ItemContext,
162
47
  };
163
48
 
164
49
  export { Select };
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Select.mjs","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":[null],"names":["_jsx","ChakraSelect"],"mappings":";;;;;;;AAYA,MAAM,OAAO,GAAG,UAAU,CACxB,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC3C,QACEA,IAACC,QAAY,CAAC,OAAO,EAAA,EACnB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAE,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAA,CACjC;AAEN,CAAC,CACF;AAED,MAAM,OAAO,GAAG,UAAU,CACxB,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC3C,QACED,IAACC,QAAY,CAAC,OAAO,EAAA,EACnB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAE,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAA,CACjC;AAEN,CAAC,CACF;AAED,MAAM,IAAI,GAAG,UAAU,CACrB,SAAS,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IACxC,QACED,IAACC,QAAY,CAAC,IAAI,EAAA,EAAC,GAAG,EAAE,GAAG,EAAA,GAAM,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,EAAA,CAAI;AAE9E,CAAC,CACF;AAED,MAAM,SAAS,GAAG,UAAU,CAC1B,SAAS,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAA;IAC7C,QACED,IAACC,QAAY,CAAC,SAAS,EAAA,EACrB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EACT,GAAG,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,EAAA,CACnC;AAEN,CAAC,CACF;AAED;;;;;;AAMG;AACI,MAAM,MAAM,GAAG;IACpB,IAAI,EAAEA,QAAY,CAAC,IAAI;IACvB,aAAa,EAAEA,QAAY,CAAC,aAAa;IACzC,OAAO,EAAEA,QAAY,CAAC,OAAO;IAC7B,KAAK,EAAEA,QAAY,CAAC,KAAK;IACzB,OAAO,EAAEA,QAAY,CAAC,OAAO;IAC7B,OAAO;IACP,SAAS,EAAEA,QAAY,CAAC,SAAS;IACjC,cAAc,EAAEA,QAAY,CAAC,cAAc;IAC3C,SAAS;IACT,YAAY,EAAEA,QAAY,CAAC,YAAY;IACvC,YAAY,EAAEA,QAAY,CAAC,YAAY;IACvC,UAAU,EAAEA,QAAY,CAAC,UAAU;IACnC,OAAO;IACP,SAAS,EAAEA,QAAY,CAAC,SAAS;IACjC,cAAc,EAAEA,QAAY,CAAC,cAAc;IAC3C,IAAI;IACJ,QAAQ,EAAEA,QAAY,CAAC,QAAQ;IAC/B,aAAa,EAAEA,QAAY,CAAC,aAAa;IACzC,WAAW,EAAEA,QAAY,CAAC,WAAW;;;;;"}
@@ -1,74 +1,103 @@
1
1
  /**
2
- * Select component styles (Chakra v3 compatible)
2
+ * Shared style objects for the Select and Combobox components.
3
3
  *
4
- * Defaults mirror the Input component (Chakra v3 `Input` recipe + Logician
5
- * Input.tsx overrides) so the two controls share the same border, hover,
6
- * focus, font, and disabled/readOnly behavior. When the Input component
7
- * changes, update these values to match.
8
- *
9
- * Reference (kept in sync with Input.tsx):
10
- * borderColor: gray.400
11
- * _hover : primary.lighter
12
- * _focus : primary.main
13
- * _invalid : danger.main
14
- * borderRadius: 6 (Chakra `l2` -> Logician `radii.sm`)
15
- * minHeight : 40 (Chakra md, `sizes.10`)
16
- * fontSize : 1em (Chakra textStyle `sm`, inherits responsively)
17
- * fontWeight : 500 (Chakra textStyle `sm` -> `subtitleAndP.medium`)
18
- * paddingX : 12px (Chakra md, `px: 3`)
4
+ * These mirror the Input component (`Input.tsx`) so the form controls share
5
+ * the same border, hover, focus and disabled behavior. They are applied on
6
+ * top of Chakra's built-in `select` / `combobox` slot recipes via the `css`
7
+ * prop only the design-system deltas live here. When `Input.tsx` changes,
8
+ * update these values to match.
19
9
  */
20
- export type SelectColors = Record<string, string>;
21
- export declare const getPlaceholderStyles: (colors: SelectColors) => {
22
- color: string;
23
- fontSize: string;
24
- fontWeight: number;
10
+ /** Select trigger the clickable control. */
11
+ export declare const triggerStyles: {
12
+ cursor: string;
13
+ _open: {
14
+ borderColor: string;
15
+ };
16
+ bg: string;
17
+ borderColor: string;
18
+ _hover: {
19
+ borderColor: string;
20
+ };
21
+ _focus: {
22
+ borderColor: string;
23
+ };
24
+ _invalid: {
25
+ borderColor: string;
26
+ _hover: {
27
+ borderColor: string;
28
+ };
29
+ _focus: {
30
+ borderColor: string;
31
+ };
32
+ };
33
+ _disabled: {
34
+ opacity: number;
35
+ cursor: string;
36
+ bg: string;
37
+ color: string;
38
+ fontWeight: string;
39
+ };
40
+ '--focus-color': string;
41
+ '--error-color': string;
25
42
  };
26
- export declare const getMenuStyles: (colors: SelectColors) => {
27
- width: string;
28
- minWidth: string;
29
- backgroundColor: string;
30
- borderRadius: number;
31
- border: string;
32
- marginTop: number;
43
+ /** Combobox text input the typeable control. */
44
+ export declare const inputStyles: {
45
+ bg: string;
46
+ borderColor: string;
47
+ _hover: {
48
+ borderColor: string;
49
+ };
50
+ _focus: {
51
+ borderColor: string;
52
+ };
53
+ _invalid: {
54
+ borderColor: string;
55
+ _hover: {
56
+ borderColor: string;
57
+ };
58
+ _focus: {
59
+ borderColor: string;
60
+ };
61
+ };
62
+ _disabled: {
63
+ opacity: number;
64
+ cursor: string;
65
+ bg: string;
66
+ color: string;
67
+ fontWeight: string;
68
+ };
69
+ '--focus-color': string;
70
+ '--error-color': string;
71
+ };
72
+ /** Dropdown panel for both Select and Combobox. */
73
+ export declare const contentStyles: {
74
+ bg: string;
75
+ borderColor: string;
76
+ borderWidth: string;
77
+ borderRadius: string;
33
78
  boxShadow: string;
34
- zIndex: number;
79
+ padding: string;
35
80
  };
36
- export declare const getOptionStyles: ({ isSelected, isDisabled, colors, }: {
37
- isSelected: boolean;
38
- isDisabled: boolean;
39
- colors?: SelectColors;
40
- }) => {
81
+ /** Individual option for both Select and Combobox. */
82
+ export declare const itemStyles: {
83
+ borderRadius: string;
41
84
  cursor: string;
42
- minHeight: number;
43
- margin: string;
44
- borderRadius: number;
45
- fontSize: number;
46
- backgroundColor: string;
47
85
  color: string;
48
- fontWeight: number;
49
- '&:hover': {
50
- backgroundColor: string;
86
+ _highlighted: {
87
+ bg: string;
88
+ };
89
+ _checked: {
90
+ bg: string;
91
+ color: string;
92
+ fontWeight: string;
93
+ };
94
+ _disabled: {
95
+ color: string;
96
+ cursor: string;
51
97
  };
52
98
  };
53
- export declare const getControlStyles: (variant: string, colors: SelectColors) => {
54
- borderRadius: number;
55
- cursor: string;
56
- minHeight: number;
57
- fontSize: string;
58
- fontWeight: number;
59
- paddingLeft: number;
60
- paddingRight: number;
61
- backgroundColor: string;
62
- } | {
63
- border: string;
64
- boxShadow: string;
65
- borderRadius: number;
66
- cursor: string;
67
- minHeight: number;
68
- fontSize: string;
69
- fontWeight: number;
70
- paddingLeft: number;
71
- paddingRight: number;
72
- backgroundColor: string;
99
+ /** Dropdown chevron softened so it doesn't outweigh adjacent icons. */
100
+ export declare const indicatorStyles: {
101
+ color: string;
73
102
  };
74
103
  //# sourceMappingURL=Select.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,eAAO,MAAM,oBAAoB,GAAI,QAAQ,YAAY;;;;CAIvD,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,QAAQ,YAAY;;;;;;;;;CAShD,CAAC;AAEH,eAAO,MAAM,eAAe,GAAI,qCAI7B;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;;;;;;;;;;;;CAgBC,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;CAqBrE,CAAC"}
1
+ {"version":3,"file":"Select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIzB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEvB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,aAAa;;;;;;;CAOzB,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAWtB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,eAAe;;CAE3B,CAAC"}