@ceed/ads 1.29.0 → 1.30.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
- package/dist/components/DataTable/hooks.d.ts +2 -1
- package/dist/components/DataTable/utils.d.ts +1 -0
- package/dist/components/ProfileMenu/ProfileMenu.d.ts +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +21 -0
- package/dist/components/SearchBar/index.d.ts +3 -0
- package/dist/components/data-display/Badge.md +39 -71
- package/dist/components/data-display/DataTable.md +1 -1
- package/dist/components/data-display/InfoSign.md +98 -74
- package/dist/components/data-display/Typography.md +97 -363
- package/dist/components/feedback/Dialog.md +62 -76
- package/dist/components/feedback/Modal.md +44 -259
- package/dist/components/feedback/llms.txt +0 -2
- package/dist/components/index.d.ts +2 -0
- package/dist/components/inputs/Autocomplete.md +107 -356
- package/dist/components/inputs/ButtonGroup.md +106 -115
- package/dist/components/inputs/Calendar.md +459 -98
- package/dist/components/inputs/CurrencyInput.md +5 -183
- package/dist/components/inputs/DatePicker.md +431 -108
- package/dist/components/inputs/DateRangePicker.md +492 -131
- package/dist/components/inputs/FilterMenu.md +19 -169
- package/dist/components/inputs/FilterableCheckboxGroup.md +23 -123
- package/dist/components/inputs/IconButton.md +88 -137
- package/dist/components/inputs/Input.md +0 -5
- package/dist/components/inputs/MonthPicker.md +422 -95
- package/dist/components/inputs/MonthRangePicker.md +466 -89
- package/dist/components/inputs/PercentageInput.md +16 -185
- package/dist/components/inputs/RadioButton.md +35 -163
- package/dist/components/inputs/RadioTileGroup.md +61 -150
- package/dist/components/inputs/SearchBar.md +44 -0
- package/dist/components/inputs/Select.md +326 -222
- package/dist/components/inputs/Switch.md +376 -136
- package/dist/components/inputs/Textarea.md +10 -213
- package/dist/components/inputs/Uploader/Uploader.md +66 -145
- package/dist/components/inputs/llms.txt +1 -3
- package/dist/components/navigation/Breadcrumbs.md +322 -80
- package/dist/components/navigation/Dropdown.md +221 -92
- package/dist/components/navigation/IconMenuButton.md +502 -40
- package/dist/components/navigation/InsetDrawer.md +738 -68
- package/dist/components/navigation/Link.md +298 -39
- package/dist/components/navigation/Menu.md +285 -92
- package/dist/components/navigation/MenuButton.md +448 -55
- package/dist/components/navigation/Pagination.md +338 -47
- package/dist/components/navigation/ProfileMenu.md +268 -45
- package/dist/components/navigation/Stepper.md +28 -160
- package/dist/components/navigation/Tabs.md +316 -57
- package/dist/components/surfaces/Sheet.md +334 -151
- package/dist/index.browser.js +15 -13
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +313 -291
- package/dist/index.d.ts +1 -1
- package/dist/index.js +450 -372
- package/dist/llms.txt +1 -8
- package/framer/index.js +1 -1
- package/package.json +16 -15
- package/dist/chunks/rehype-accent-FZRUD7VI.js +0 -39
- package/dist/components/feedback/CircularProgress.md +0 -257
- package/dist/components/feedback/Skeleton.md +0 -280
- package/dist/components/inputs/FormControl.md +0 -361
- package/dist/components/inputs/RadioList.md +0 -241
- package/dist/components/inputs/Slider.md +0 -334
- package/dist/guides/ThemeProvider.md +0 -116
- package/dist/guides/llms.txt +0 -9
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
## Introduction
|
|
4
4
|
|
|
5
|
-
CurrencyInput is a specialized numeric input for entering monetary values. It automatically formats numbers with the appropriate currency symbol, thousand separators, and decimal places based on the selected currency (USD or KRW). It supports features like maximum value validation, minor unit conversion, and controlled/uncontrolled modes.
|
|
6
|
-
|
|
7
|
-
> **Tip: Use built-in form props**
|
|
8
|
-
>
|
|
9
|
-
> This component supports `label` and `helperText` props directly. Use these instead of wrapping with FormControl + FormLabel + FormHelperText for simpler forms.
|
|
10
|
-
|
|
11
5
|
```tsx
|
|
12
6
|
<CurrencyInput
|
|
13
7
|
name="currency-input"
|
|
@@ -31,42 +25,8 @@ CurrencyInput is a specialized numeric input for entering monetary values. It au
|
|
|
31
25
|
| useMinorUnit | — | — |
|
|
32
26
|
| onChange | — | — |
|
|
33
27
|
|
|
34
|
-
## Usage
|
|
35
|
-
|
|
36
|
-
```tsx
|
|
37
|
-
import { CurrencyInput } from '@ceed/ads';
|
|
38
|
-
|
|
39
|
-
function MyComponent() {
|
|
40
|
-
const [amount, setAmount] = React.useState(0);
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<CurrencyInput
|
|
44
|
-
label="Price"
|
|
45
|
-
currency="USD"
|
|
46
|
-
value={amount}
|
|
47
|
-
onChange={(e) => setAmount(e.target.value)}
|
|
48
|
-
/>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Currency Formats
|
|
54
|
-
|
|
55
|
-
### USD (Default)
|
|
56
|
-
|
|
57
|
-
US Dollar format with `$` symbol, comma thousand separators, and 2 decimal places.
|
|
58
|
-
|
|
59
|
-
```tsx
|
|
60
|
-
<CurrencyInput
|
|
61
|
-
name="currency-input"
|
|
62
|
-
defaultValue={1000}
|
|
63
|
-
/>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
28
|
### KRW
|
|
67
29
|
|
|
68
|
-
Korean Won format with `₩` symbol, comma thousand separators, and no decimal places.
|
|
69
|
-
|
|
70
30
|
```tsx
|
|
71
31
|
<CurrencyInput
|
|
72
32
|
name="currency-input"
|
|
@@ -75,13 +35,7 @@ Korean Won format with `₩` symbol, comma thousand separators, and no decimal p
|
|
|
75
35
|
/>
|
|
76
36
|
```
|
|
77
37
|
|
|
78
|
-
|
|
79
|
-
<CurrencyInput currency="KRW" value={50000} />
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Sizes
|
|
83
|
-
|
|
84
|
-
CurrencyInput supports three sizes: `sm`, `md` (default), and `lg`.
|
|
38
|
+
### Sizes
|
|
85
39
|
|
|
86
40
|
```tsx
|
|
87
41
|
<Stack gap={2}>
|
|
@@ -91,9 +45,7 @@ CurrencyInput supports three sizes: `sm`, `md` (default), and `lg`.
|
|
|
91
45
|
</Stack>
|
|
92
46
|
```
|
|
93
47
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### With Label
|
|
48
|
+
### WithLabel
|
|
97
49
|
|
|
98
50
|
```tsx
|
|
99
51
|
<CurrencyInput
|
|
@@ -103,11 +55,7 @@ CurrencyInput supports three sizes: `sm`, `md` (default), and `lg`.
|
|
|
103
55
|
/>
|
|
104
56
|
```
|
|
105
57
|
|
|
106
|
-
|
|
107
|
-
<CurrencyInput label="Total Amount" />
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### With Helper Text
|
|
58
|
+
### WithHelperText
|
|
111
59
|
|
|
112
60
|
```tsx
|
|
113
61
|
<CurrencyInput
|
|
@@ -118,11 +66,7 @@ CurrencyInput supports three sizes: `sm`, `md` (default), and `lg`.
|
|
|
118
66
|
/>
|
|
119
67
|
```
|
|
120
68
|
|
|
121
|
-
|
|
122
|
-
<CurrencyInput label="Price" helperText="Enter the item price in USD." />
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### Error State
|
|
69
|
+
### Error
|
|
126
70
|
|
|
127
71
|
```tsx
|
|
128
72
|
<CurrencyInput
|
|
@@ -134,13 +78,7 @@ CurrencyInput supports three sizes: `sm`, `md` (default), and `lg`.
|
|
|
134
78
|
/>
|
|
135
79
|
```
|
|
136
80
|
|
|
137
|
-
|
|
138
|
-
<CurrencyInput label="Amount" error helperText="Amount is required." />
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Price Limit
|
|
142
|
-
|
|
143
|
-
Set the `max` prop to enforce a maximum value. When the entered value exceeds the limit, the input automatically displays an error state with a formatted limit message.
|
|
81
|
+
### PriceLimitError
|
|
144
82
|
|
|
145
83
|
```tsx
|
|
146
84
|
<CurrencyInput
|
|
@@ -151,119 +89,3 @@ Set the `max` prop to enforce a maximum value. When the entered value exceeds th
|
|
|
151
89
|
max={1000000}
|
|
152
90
|
/>
|
|
153
91
|
```
|
|
154
|
-
|
|
155
|
-
```tsx
|
|
156
|
-
<CurrencyInput
|
|
157
|
-
currency="USD"
|
|
158
|
-
max={1000000}
|
|
159
|
-
value={10000000}
|
|
160
|
-
/>
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Minor Unit Mode
|
|
164
|
-
|
|
165
|
-
When `useMinorUnit` is true, the component converts between display values and minor units (e.g., cents for USD). This is useful when your API stores amounts in the smallest currency unit.
|
|
166
|
-
|
|
167
|
-
```tsx
|
|
168
|
-
// Display shows "$10.00", but onChange returns 1000 (cents)
|
|
169
|
-
<CurrencyInput currency="USD" useMinorUnit value={1000} />
|
|
170
|
-
|
|
171
|
-
// Display shows "₩10,000", onChange returns 10000 (no conversion for KRW)
|
|
172
|
-
<CurrencyInput currency="KRW" useMinorUnit value={10000} />
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Common Use Cases
|
|
176
|
-
|
|
177
|
-
### Product Price Editor
|
|
178
|
-
|
|
179
|
-
```tsx
|
|
180
|
-
function ProductPriceEditor() {
|
|
181
|
-
const [priceUSD, setPriceUSD] = React.useState(0);
|
|
182
|
-
const [priceKRW, setPriceKRW] = React.useState(0);
|
|
183
|
-
|
|
184
|
-
return (
|
|
185
|
-
<Stack gap={2}>
|
|
186
|
-
<CurrencyInput
|
|
187
|
-
label="USD Price"
|
|
188
|
-
currency="USD"
|
|
189
|
-
value={priceUSD}
|
|
190
|
-
onChange={(e) => setPriceUSD(e.target.value)}
|
|
191
|
-
max={99999.99}
|
|
192
|
-
/>
|
|
193
|
-
<CurrencyInput
|
|
194
|
-
label="KRW Price"
|
|
195
|
-
currency="KRW"
|
|
196
|
-
value={priceKRW}
|
|
197
|
-
onChange={(e) => setPriceKRW(e.target.value)}
|
|
198
|
-
max={99999999}
|
|
199
|
-
/>
|
|
200
|
-
</Stack>
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Invoice Line Item
|
|
206
|
-
|
|
207
|
-
```tsx
|
|
208
|
-
function InvoiceLineItem({ item, onChange }) {
|
|
209
|
-
return (
|
|
210
|
-
<Stack direction="row" gap={2} alignItems="flex-end">
|
|
211
|
-
<Input label="Description" value={item.description} />
|
|
212
|
-
<CurrencyInput
|
|
213
|
-
label="Unit Price"
|
|
214
|
-
currency="USD"
|
|
215
|
-
value={item.unitPrice}
|
|
216
|
-
onChange={(e) => onChange({ ...item, unitPrice: e.target.value })}
|
|
217
|
-
/>
|
|
218
|
-
<Input label="Qty" type="number" value={item.quantity} sx={{ width: 80 }} />
|
|
219
|
-
</Stack>
|
|
220
|
-
);
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
### Budget Limit Input
|
|
225
|
-
|
|
226
|
-
```tsx
|
|
227
|
-
function BudgetSetting() {
|
|
228
|
-
const [budget, setBudget] = React.useState(50000);
|
|
229
|
-
|
|
230
|
-
return (
|
|
231
|
-
<CurrencyInput
|
|
232
|
-
label="Monthly Budget"
|
|
233
|
-
helperText="Set the maximum monthly spending limit."
|
|
234
|
-
currency="USD"
|
|
235
|
-
value={budget}
|
|
236
|
-
onChange={(e) => setBudget(e.target.value)}
|
|
237
|
-
max={1000000}
|
|
238
|
-
/>
|
|
239
|
-
);
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
## Best Practices
|
|
244
|
-
|
|
245
|
-
1. **Choose the right currency**: Always set the `currency` prop explicitly. USD uses 2 decimal places while KRW uses none.
|
|
246
|
-
|
|
247
|
-
```tsx
|
|
248
|
-
// ✅ Explicit currency
|
|
249
|
-
<CurrencyInput currency="USD" />
|
|
250
|
-
<CurrencyInput currency="KRW" />
|
|
251
|
-
|
|
252
|
-
// ❌ Relying on default — may confuse users expecting KRW
|
|
253
|
-
<CurrencyInput />
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
2. **Set max limits**: Use `max` to prevent unreasonable values. The component displays a helpful error message when the limit is exceeded.
|
|
257
|
-
|
|
258
|
-
3. **Use `useMinorUnit` for API integration**: When your backend stores amounts in minor units (cents, etc.), enable `useMinorUnit` to avoid manual conversion.
|
|
259
|
-
|
|
260
|
-
4. **Use built-in label and helperText**: Prefer the component's own `label` and `helperText` props over wrapping with FormControl.
|
|
261
|
-
|
|
262
|
-
5. **Handle negative values carefully**: CurrencyInput supports negative values. If negatives are not valid for your use case, validate in `onChange`.
|
|
263
|
-
|
|
264
|
-
## Accessibility
|
|
265
|
-
|
|
266
|
-
- The input has `role="textbox"` with proper labeling via the `label` prop.
|
|
267
|
-
- Error states are communicated via `aria-invalid` and associated error messages.
|
|
268
|
-
- The currency symbol serves as a visual indicator; ensure labels also mention the currency for screen readers.
|
|
269
|
-
- Keyboard input is fully supported — users can type numbers, and formatting is applied automatically.
|