sellmate-design-system-react 9.0.0-beta.102 → 9.0.0-beta.104
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/AGENTS.md +23 -1
- package/dist/components/SAccountListBox/accountListBox.config.d.ts +4 -1
- package/dist/components/SBarcodeInput/README.md +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +1 -0
- package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +1 -1
- package/dist/components/SCalendarBoard/README.md +1 -1
- package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +1 -1
- package/dist/components/SChatInput/README.md +1 -1
- package/dist/components/SChatInput/SChatInput.d.ts +1 -1
- package/dist/components/SConfirmModal/README.md +1 -1
- package/dist/components/SConfirmModal/SConfirmModal.d.ts +2 -2
- package/dist/components/SEditor/README.md +1 -1
- package/dist/components/SEditor/SEditor.d.ts +1 -1
- package/dist/components/SEditor/editor.config.d.ts +8 -1
- package/dist/components/SFooter/README.md +1 -1
- package/dist/components/SFooter/SFooter.d.ts +1 -1
- package/dist/components/SGnbSystem/gnbSystem.config.d.ts +0 -4
- package/dist/components/SGuide/README.md +1 -1
- package/dist/components/SGuide/SGuide.d.ts +1 -1
- package/dist/components/SIcon/README.md +1 -1
- package/dist/components/SIcon/SIcon.d.ts +5 -1
- package/dist/components/SIcon/icons.gen.d.ts +6 -1
- package/dist/components/SMeatballButton/README.md +2 -2
- package/dist/components/SMeatballButton/SMeatballButton.d.ts +5 -2
- package/dist/components/SModalContainer/README.md +1 -1
- package/dist/components/SModalContainer/SModalContainer.d.ts +5 -2
- package/dist/components/SNumberInput/README.md +1 -1
- package/dist/components/SSearchInput/README.md +1 -1
- package/dist/components/SSearchInput/SSearchInput.d.ts +1 -1
- package/dist/components/SSelect/README.md +2 -2
- package/dist/components/SSelect/SSelect.d.ts +2 -2
- package/dist/components/SStepper/README.md +1 -1
- package/dist/components/SStepper/SStepper.d.ts +2 -2
- package/dist/components/SSystemActionButton/README.md +7 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +31 -1
- package/dist/components/STable/README.md +3 -3
- package/dist/components/STable/STable.d.ts +3 -1
- package/dist/components/STableBar/README.md +1 -1
- package/dist/components/STableBar/STableBar.d.ts +1 -1
- package/dist/components/STimePicker/timepicker.config.d.ts +2 -1
- package/dist/components/STimeRangePicker/time-range-picker.config.d.ts +2 -1
- package/dist/components/STimeline/README.md +1 -1
- package/dist/components/STimeline/STimeline.d.ts +1 -0
- package/dist/index.cjs +1746 -494
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1744 -496
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/radial.d.ts +2 -2
- package/dist/lib/date.d.ts +9 -5
- package/dist/lib/form.d.ts +5 -2
- package/dist/lib/locale-context.d.ts +26 -0
- package/dist/lib/locale.d.ts +320 -0
- package/dist/lib/tree-row.d.ts +1 -1
- package/dist/llms-full.txt +51 -22
- package/dist/llms.txt +23 -1
- package/dist/styles.css +3 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -272,6 +272,1033 @@ var fieldWidthValue = (v) => {
|
|
|
272
272
|
if (isFieldWidthGrade(v)) return `var(--cmp-field-width-${v})`;
|
|
273
273
|
return typeof v === "number" ? `${v}px` : v;
|
|
274
274
|
};
|
|
275
|
+
|
|
276
|
+
// src/lib/locale.ts
|
|
277
|
+
var SLOCALES = ["ko", "en", "ja", "zh"];
|
|
278
|
+
var DEFAULT_LOCALE = "ko";
|
|
279
|
+
var koreanParticle = (word, consonant, vowel) => {
|
|
280
|
+
const code = word.charCodeAt(word.length - 1);
|
|
281
|
+
if (code < 44032 || code > 55203) return consonant;
|
|
282
|
+
return (code - 44032) % 28 === 0 ? vowel : consonant;
|
|
283
|
+
};
|
|
284
|
+
var BUNDLES = {
|
|
285
|
+
ko: {
|
|
286
|
+
accountListBox: { accountSetting: "\uACC4\uC815 \uC124\uC815", language: "\uC5B8\uC5B4 \uBCC0\uACBD", logout: "\uACC4\uC815 \uB85C\uADF8\uC544\uC6C3" },
|
|
287
|
+
gnbSystem: { alert: "\uC54C\uB9BC", setting: "\uC124\uC815" },
|
|
288
|
+
editor: {
|
|
289
|
+
placeholder: "\uB0B4\uC6A9\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694.",
|
|
290
|
+
toolbarLabel: "\uC11C\uC2DD \uB3C4\uAD6C",
|
|
291
|
+
tableSize: "\uD45C \uD06C\uAE30",
|
|
292
|
+
linkUrl: "\uB9C1\uD06C \uC8FC\uC18C",
|
|
293
|
+
apply: "\uC801\uC6A9",
|
|
294
|
+
remove: "\uC81C\uAC70",
|
|
295
|
+
headingLevel: "\uC81C\uBAA9 \uB2E8\uACC4",
|
|
296
|
+
headingBody: "\uBCF8\uBB38",
|
|
297
|
+
fontSize: "\uAE00\uC790 \uD06C\uAE30",
|
|
298
|
+
fontSizeDefaultLabel: "\uAE30\uBCF8",
|
|
299
|
+
bold: "\uAD75\uAC8C",
|
|
300
|
+
italic: "\uAE30\uC6B8\uC784",
|
|
301
|
+
underline: "\uBC11\uC904",
|
|
302
|
+
strike: "\uCDE8\uC18C\uC120",
|
|
303
|
+
inlineCode: "\uC778\uB77C\uC778 \uCF54\uB4DC",
|
|
304
|
+
textColor: "\uAE00\uC790\uC0C9",
|
|
305
|
+
clearColor: "\uC0C9 \uC9C0\uC6B0\uAE30",
|
|
306
|
+
alignLeft: "\uC67C\uCABD \uC815\uB82C",
|
|
307
|
+
alignCenter: "\uAC00\uC6B4\uB370 \uC815\uB82C",
|
|
308
|
+
alignRight: "\uC624\uB978\uCABD \uC815\uB82C",
|
|
309
|
+
alignJustify: "\uC591\uCABD \uC815\uB82C",
|
|
310
|
+
bulletList: "\uAE00\uBA38\uB9AC \uAE30\uD638 \uBAA9\uB85D",
|
|
311
|
+
orderedList: "\uBC88\uD638 \uB9E4\uAE30\uAE30 \uBAA9\uB85D",
|
|
312
|
+
taskList: "\uCCB4\uD06C \uBAA9\uB85D",
|
|
313
|
+
list: "\uBAA9\uB85D",
|
|
314
|
+
blockquote: "\uC778\uC6A9\uAD6C",
|
|
315
|
+
codeBlock: "\uCF54\uB4DC \uBE14\uB85D",
|
|
316
|
+
divider: "\uAD6C\uBD84\uC120",
|
|
317
|
+
link: "\uB9C1\uD06C",
|
|
318
|
+
insertImage: "\uC774\uBBF8\uC9C0 \uB123\uAE30",
|
|
319
|
+
image: "\uC774\uBBF8\uC9C0",
|
|
320
|
+
table: "\uD45C",
|
|
321
|
+
addRowAbove: "\uC704\uC5D0 \uD589 \uCD94\uAC00",
|
|
322
|
+
addRowBelow: "\uC544\uB798\uC5D0 \uD589 \uCD94\uAC00",
|
|
323
|
+
addColLeft: "\uC67C\uCABD\uC5D0 \uC5F4 \uCD94\uAC00",
|
|
324
|
+
addColRight: "\uC624\uB978\uCABD\uC5D0 \uC5F4 \uCD94\uAC00",
|
|
325
|
+
mergeCells: "\uC140 \uBCD1\uD569",
|
|
326
|
+
splitCell: "\uBCD1\uD569 \uD574\uC81C",
|
|
327
|
+
toggleHeaderRow: "\uD5E4\uB354 \uD589 \uD1A0\uAE00",
|
|
328
|
+
toggleHeaderCol: "\uD5E4\uB354 \uC5F4 \uD1A0\uAE00",
|
|
329
|
+
deleteRow: "\uD589 \uC0AD\uC81C",
|
|
330
|
+
deleteCol: "\uC5F4 \uC0AD\uC81C",
|
|
331
|
+
deleteTable: "\uD45C \uC0AD\uC81C",
|
|
332
|
+
undo: "\uC2E4\uD589 \uCDE8\uC18C",
|
|
333
|
+
redo: "\uB2E4\uC2DC \uC2E4\uD589",
|
|
334
|
+
colorDefault: "\uAE30\uBCF8",
|
|
335
|
+
colorSecondary: "\uBCF4\uC870",
|
|
336
|
+
colorMuted: "\uD750\uB9BC",
|
|
337
|
+
colorAccent: "\uAC15\uC870",
|
|
338
|
+
colorBrand: "\uBE0C\uB79C\uB4DC",
|
|
339
|
+
colorSuccess: "\uC131\uACF5",
|
|
340
|
+
colorWarning: "\uC8FC\uC758",
|
|
341
|
+
colorDanger: "\uC704\uD5D8",
|
|
342
|
+
tableCell: (r3, c) => `${r3}\uD589 ${c}\uC5F4`,
|
|
343
|
+
tableSizeText: (rows, cols) => `${rows}\uD589 \xD7 ${cols}\uC5F4`,
|
|
344
|
+
heading: (level) => `\uC81C\uBAA9 ${level}`,
|
|
345
|
+
fontSizeDefault: (px) => `\uAE30\uBCF8 (\uBCF8\uBB38 ${px}px)`,
|
|
346
|
+
closeEditing: (label) => `${label} \uB2EB\uAE30`
|
|
347
|
+
},
|
|
348
|
+
form: { invalid: "\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uAC12\uC785\uB2C8\uB2E4." },
|
|
349
|
+
date: {
|
|
350
|
+
weekdays: ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"],
|
|
351
|
+
weekdaysLong: ["\uC77C\uC694\uC77C", "\uC6D4\uC694\uC77C", "\uD654\uC694\uC77C", "\uC218\uC694\uC77C", "\uBAA9\uC694\uC77C", "\uAE08\uC694\uC77C", "\uD1A0\uC694\uC77C"],
|
|
352
|
+
today: "\uC624\uB298",
|
|
353
|
+
prevYear: "\uC774\uC804 \uD574",
|
|
354
|
+
nextYear: "\uB2E4\uC74C \uD574",
|
|
355
|
+
prevMonth: "\uC774\uC804 \uB2EC",
|
|
356
|
+
nextMonth: "\uB2E4\uC74C \uB2EC",
|
|
357
|
+
monthLabel: (month) => `${month}\uC6D4`,
|
|
358
|
+
dayLabel: (day) => `${day}\uC77C`,
|
|
359
|
+
unitYear: "\uB144",
|
|
360
|
+
unitMonth: "\uC6D4",
|
|
361
|
+
unitDay: "\uC77C",
|
|
362
|
+
hourItem: (hour) => `${hour}\uC2DC`,
|
|
363
|
+
minuteItem: (minute) => `${minute}\uBD84`,
|
|
364
|
+
hourAria: (prefix) => prefix ? `${prefix} \uC2DC` : "\uC2DC",
|
|
365
|
+
minuteAria: (prefix) => prefix ? `${prefix} \uBD84` : "\uBD84",
|
|
366
|
+
meridiemAria: (prefix) => prefix ? `${prefix} \uC624\uC804/\uC624\uD6C4` : "\uC624\uC804/\uC624\uD6C4",
|
|
367
|
+
am: "\uC624\uC804",
|
|
368
|
+
pm: "\uC624\uD6C4",
|
|
369
|
+
rangeFrom: "\uBD80\uD130",
|
|
370
|
+
rangeTo: "\uAE4C\uC9C0",
|
|
371
|
+
clearDate: "\uB0A0\uC9DC \uC9C0\uC6B0\uAE30",
|
|
372
|
+
clearMonth: "\uC6D4 \uC9C0\uC6B0\uAE30",
|
|
373
|
+
clearYear: "\uC5F0\uB3C4 \uC9C0\uC6B0\uAE30",
|
|
374
|
+
clearPeriod: "\uAE30\uAC04 \uC9C0\uC6B0\uAE30",
|
|
375
|
+
clearTime: "\uC2DC\uAC04 \uC9C0\uC6B0\uAE30",
|
|
376
|
+
clearTimeRange: "\uC2DC\uAC04 \uBC94\uC704 \uC9C0\uC6B0\uAE30",
|
|
377
|
+
start: "\uC2DC\uC791",
|
|
378
|
+
end: "\uC885\uB8CC",
|
|
379
|
+
startTime: "\uC2DC\uC791 \uC2DC\uAC04",
|
|
380
|
+
endTime: "\uC885\uB8CC \uC2DC\uAC04"
|
|
381
|
+
},
|
|
382
|
+
chart: {
|
|
383
|
+
unit: (unit) => `\uB2E8\uC704 : ${unit}`,
|
|
384
|
+
pie: "\uD30C\uC774 \uADF8\uB798\uD504",
|
|
385
|
+
donut: "\uB3C4\uB11B \uADF8\uB798\uD504",
|
|
386
|
+
radialSummary: (count, kind) => `${count}\uAC1C \uD56D\uBAA9 ${kind}`,
|
|
387
|
+
barSummary: (c, s, stacked) => `${c}\uAC1C \uD56D\uBAA9, ${s}\uAC1C \uACC4\uC5F4 ${stacked ? "\uB204\uC801 " : ""}\uB9C9\uB300 \uADF8\uB798\uD504`,
|
|
388
|
+
lineSummary: (c, s, stacked) => `${c}\uAC1C \uD56D\uBAA9, ${s}\uAC1C \uACC4\uC5F4 ${stacked ? "\uB204\uC801 " : ""}\uAEBE\uC740\uC120 \uADF8\uB798\uD504`
|
|
389
|
+
},
|
|
390
|
+
chipFilter: {
|
|
391
|
+
periodDay: "\uC77C\uBCC4",
|
|
392
|
+
periodMonth: "\uC6D4\uBCC4",
|
|
393
|
+
periodQuarter: "\uBD84\uAE30\uBCC4",
|
|
394
|
+
periodHalf: "\uBC18\uAE30\uBCC4",
|
|
395
|
+
periodYear: "\uC5F0\uB3C4\uBCC4",
|
|
396
|
+
custom: "\uC0AC\uC6A9\uC790 \uC9C0\uC815",
|
|
397
|
+
today: "\uC624\uB298",
|
|
398
|
+
last7: "\uC9C0\uB09C 7\uC77C",
|
|
399
|
+
last30: "\uC9C0\uB09C 30\uC77C",
|
|
400
|
+
maxWord: "\uCD5C\uB300",
|
|
401
|
+
maxRangeHint: (days) => `\uCD5C\uB300 ${days}\uC77C\uC529`,
|
|
402
|
+
requireAll: "\uD56D\uBAA9\uC744 \uBAA8\uB450 \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",
|
|
403
|
+
requireAnyDefault: "\uCD5C\uC18C 1\uAC1C\uC758 \uD544\uD130\uB97C \uC120\uD0DD\uD574\uC8FC\uC138\uC694.",
|
|
404
|
+
requireAnyNamed: (name) => `\uCD5C\uC18C 1\uAC1C\uC758 ${name}${koreanParticle(name, "\uC744", "\uB97C")} \uC120\uD0DD\uD574\uC8FC\uC138\uC694.`,
|
|
405
|
+
requireField: (label) => `${label}${koreanParticle(label, "\uC744", "\uB97C")} \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.`,
|
|
406
|
+
fieldFallback: "\uD56D\uBAA9",
|
|
407
|
+
valueListMore: (first, rest) => `${first} \uC678 ${rest}\uAC1C`,
|
|
408
|
+
quarter: (n) => `${n}\uBD84\uAE30`,
|
|
409
|
+
firstHalf: "\uC0C1\uBC18\uAE30",
|
|
410
|
+
secondHalf: "\uD558\uBC18\uAE30",
|
|
411
|
+
removeFilter: (label) => `${label} \uD544\uD130 \uC81C\uAC70`,
|
|
412
|
+
clearFilter: (label) => `${label} \uD544\uD130 \uC9C0\uC6B0\uAE30`,
|
|
413
|
+
resetSearch: "\uAC80\uC0C9 \uCD08\uAE30\uD654",
|
|
414
|
+
addFilter: "\uD544\uD130 \uCD94\uAC00",
|
|
415
|
+
noAddableFilter: "\uCD94\uAC00\uD560 \uD544\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
416
|
+
selectNone: "\uC120\uD0DD \uD574\uC81C",
|
|
417
|
+
selectAll: "\uC804\uCCB4 \uC120\uD0DD",
|
|
418
|
+
removeItem: (label) => `${label} \uC0AD\uC81C`,
|
|
419
|
+
keywordContains: "\uD3EC\uD568",
|
|
420
|
+
keywordExact: "\uC77C\uCE58",
|
|
421
|
+
keywordExcludes: "\uBBF8\uD3EC\uD568",
|
|
422
|
+
keywordHintCsv: "\uB2E4\uC911 \uD0A4\uC6CC\uB4DC\uB294 \uCF64\uB9C8(,)\uB85C \uAD6C\uBD84",
|
|
423
|
+
keywordHintEnter: "\uC785\uB825 \uD6C4 Enter\uB85C \uCD94\uAC00",
|
|
424
|
+
keywordCondition: "\uAC80\uC0C9 \uC870\uAC74 :",
|
|
425
|
+
noSearchResults: "\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."
|
|
426
|
+
},
|
|
427
|
+
numberInput: {
|
|
428
|
+
rangeBetween: (min, max) => `${min}~${max} \uC0AC\uC774\uB85C \uC785\uB825\uD574 \uC8FC\uC138\uC694.`,
|
|
429
|
+
atLeast: (min) => `${min} \uC774\uC0C1\uC73C\uB85C \uC785\uB825\uD574 \uC8FC\uC138\uC694.`,
|
|
430
|
+
atMost: (max) => `${max} \uC774\uD558\uB85C \uC785\uB825\uD574 \uC8FC\uC138\uC694.`,
|
|
431
|
+
increase: "\uC99D\uAC00",
|
|
432
|
+
decrease: "\uAC10\uC18C"
|
|
433
|
+
},
|
|
434
|
+
chipInput: {
|
|
435
|
+
placeholderWithComma: "\uD0DC\uADF8 \uC785\uB825 (Enter\xB7\uCF64\uB9C8\uB85C \uB4F1\uB85D)",
|
|
436
|
+
placeholder: "\uD0DC\uADF8 \uC785\uB825 (Enter\uB85C \uB4F1\uB85D)",
|
|
437
|
+
duplicateNamed: (label) => `\uC774\uBBF8 \uC785\uB825\uB41C ${label}\uC785\uB2C8\uB2E4.`,
|
|
438
|
+
duplicate: "\uC911\uBCF5\uB41C \uAC12\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.",
|
|
439
|
+
maxCount: (max) => `\uCD5C\uB300 ${max}\uAC1C`
|
|
440
|
+
},
|
|
441
|
+
slider: { minValue: "\uCD5C\uC19F\uAC12", maxValue: "\uCD5C\uB313\uAC12" },
|
|
442
|
+
chat: {
|
|
443
|
+
removeAttachment: (name) => `${name} \uC81C\uAC70`,
|
|
444
|
+
placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694...",
|
|
445
|
+
attachFile: "\uD30C\uC77C \uCCA8\uBD80",
|
|
446
|
+
stopResponse: "\uC751\uB2F5 \uC911\uC9C0",
|
|
447
|
+
send: "\uC804\uC1A1",
|
|
448
|
+
read: "\uC77D\uC74C",
|
|
449
|
+
unread: "\uC548 \uC77D\uC74C"
|
|
450
|
+
},
|
|
451
|
+
loadingModal: {
|
|
452
|
+
loadingMessage: "\uC791\uC5C5 \uC9C4\uD589\uC911...",
|
|
453
|
+
errorMessage: "\uC791\uC5C5\uC5D0 \uC2E4\uD328\uD558\uC600\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
|
|
454
|
+
errorButton: "\uB2E4\uC2DC \uC2DC\uB3C4",
|
|
455
|
+
ariaTitle: "\uB85C\uB529 \uC911"
|
|
456
|
+
},
|
|
457
|
+
stepper: { errorTooltip: "\uD655\uC778\uC774 \uD544\uC694\uD55C \uD56D\uBAA9\uC774 \uC788\uC2B5\uB2C8\uB2E4.", ariaLabel: "\uC9C4\uD589 \uB2E8\uACC4" },
|
|
458
|
+
timeline: { empty: "\uB0B4\uC5ED\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." },
|
|
459
|
+
callout: { dangerTitle: "\uC8FC\uC758\uC0AC\uD56D" },
|
|
460
|
+
guide: { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" },
|
|
461
|
+
loginCard: { login: "\uD1B5\uD569 \uACC4\uC815\uC73C\uB85C \uB85C\uADF8\uC778" },
|
|
462
|
+
modal: { defaultTitle: "\uBAA8\uB2EC" },
|
|
463
|
+
launcher: { opensInNewTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC" },
|
|
464
|
+
common: {
|
|
465
|
+
close: "\uB2EB\uAE30",
|
|
466
|
+
clear: "\uC9C0\uC6B0\uAE30",
|
|
467
|
+
confirm: "\uD655\uC778",
|
|
468
|
+
all: "\uC804\uCCB4",
|
|
469
|
+
back: "\uB4A4\uB85C\uAC00\uAE30",
|
|
470
|
+
more: "\uB354\uBCF4\uAE30",
|
|
471
|
+
moreActions: "\uAE30\uB2A5 \uB354 \uBCF4\uAE30",
|
|
472
|
+
openMenu: "\uBA54\uB274 \uC5F4\uAE30",
|
|
473
|
+
dragHandle: "\uB4DC\uB798\uADF8 \uD578\uB4E4",
|
|
474
|
+
resizeDrawer: "Drawer \uB108\uBE44 \uC870\uC808",
|
|
475
|
+
search: "\uAC80\uC0C9",
|
|
476
|
+
count: (n) => `${n}\uAC1C`
|
|
477
|
+
},
|
|
478
|
+
input: {
|
|
479
|
+
placeholder: "\uC785\uB825\uD574 \uC8FC\uC138\uC694.",
|
|
480
|
+
searchWithinResults: "\uACB0\uACFC \uB0B4 \uAC80\uC0C9",
|
|
481
|
+
clearInput: "\uC785\uB825 \uCD08\uAE30\uD654",
|
|
482
|
+
showPassword: "\uBE44\uBC00\uBC88\uD638 \uD45C\uC2DC"
|
|
483
|
+
},
|
|
484
|
+
pagination: {
|
|
485
|
+
firstPage: "\uCCAB \uD398\uC774\uC9C0",
|
|
486
|
+
prevPage: "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
487
|
+
nextPage: "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
488
|
+
lastPage: "\uB9C8\uC9C0\uB9C9 \uD398\uC774\uC9C0",
|
|
489
|
+
prevGroup: "\uC774\uC804 \uADF8\uB8F9",
|
|
490
|
+
nextGroup: "\uB2E4\uC74C \uADF8\uB8F9"
|
|
491
|
+
},
|
|
492
|
+
select: {
|
|
493
|
+
placeholder: "\uC120\uD0DD",
|
|
494
|
+
allSelected: "\uC804\uCCB4",
|
|
495
|
+
clear: "\uC120\uD0DD \uC9C0\uC6B0\uAE30",
|
|
496
|
+
deselect: (label) => `${label} \uC120\uD0DD \uD574\uC81C`,
|
|
497
|
+
searchPlaceholder: "\uAC80\uC0C9",
|
|
498
|
+
empty: "\uD45C\uC2DC\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
499
|
+
loading: "\uBD88\uB7EC\uC624\uB294 \uC911..."
|
|
500
|
+
},
|
|
501
|
+
table: {
|
|
502
|
+
selectAll: "\uC804\uCCB4 \uC120\uD0DD",
|
|
503
|
+
selectRow: "\uD589 \uC120\uD0DD",
|
|
504
|
+
empty: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
505
|
+
rowsPerPage: (count) => `${count}\uAC1C\uC529 \uBCF4\uAE30`,
|
|
506
|
+
editable: "\uC218\uC815 \uAC00\uB2A5",
|
|
507
|
+
opensInNewScreen: "\uC0C8 \uD654\uBA74\uC5D0\uC11C \uC5F4\uAE30",
|
|
508
|
+
sortBy: (label) => `${label} \uC815\uB82C`,
|
|
509
|
+
denseOff: "\uB113\uAC8C \uBCF4\uAE30",
|
|
510
|
+
denseOn: "\uC881\uAC8C \uBCF4\uAE30"
|
|
511
|
+
},
|
|
512
|
+
tableBar: {
|
|
513
|
+
totalBefore: "\uCD1D ",
|
|
514
|
+
totalAfter: " \uAC74",
|
|
515
|
+
selectedBefore: "",
|
|
516
|
+
selectedAfter: " \uAC74 \uC120\uD0DD"
|
|
517
|
+
}
|
|
518
|
+
},
|
|
519
|
+
en: {
|
|
520
|
+
accountListBox: {
|
|
521
|
+
accountSetting: "Account settings",
|
|
522
|
+
language: "Change language",
|
|
523
|
+
logout: "Log out"
|
|
524
|
+
},
|
|
525
|
+
gnbSystem: { alert: "Notifications", setting: "Settings" },
|
|
526
|
+
editor: {
|
|
527
|
+
placeholder: "Enter your content.",
|
|
528
|
+
toolbarLabel: "Formatting tools",
|
|
529
|
+
tableSize: "Table size",
|
|
530
|
+
linkUrl: "Link URL",
|
|
531
|
+
apply: "Apply",
|
|
532
|
+
remove: "Remove",
|
|
533
|
+
headingLevel: "Heading level",
|
|
534
|
+
headingBody: "Body",
|
|
535
|
+
fontSize: "Font size",
|
|
536
|
+
fontSizeDefaultLabel: "Default",
|
|
537
|
+
bold: "Bold",
|
|
538
|
+
italic: "Italic",
|
|
539
|
+
underline: "Underline",
|
|
540
|
+
strike: "Strikethrough",
|
|
541
|
+
inlineCode: "Inline code",
|
|
542
|
+
textColor: "Text color",
|
|
543
|
+
clearColor: "Clear color",
|
|
544
|
+
alignLeft: "Align left",
|
|
545
|
+
alignCenter: "Align center",
|
|
546
|
+
alignRight: "Align right",
|
|
547
|
+
alignJustify: "Justify",
|
|
548
|
+
bulletList: "Bullet list",
|
|
549
|
+
orderedList: "Numbered list",
|
|
550
|
+
taskList: "Checklist",
|
|
551
|
+
list: "List",
|
|
552
|
+
blockquote: "Quote",
|
|
553
|
+
codeBlock: "Code block",
|
|
554
|
+
divider: "Divider",
|
|
555
|
+
link: "Link",
|
|
556
|
+
insertImage: "Insert image",
|
|
557
|
+
image: "Image",
|
|
558
|
+
table: "Table",
|
|
559
|
+
addRowAbove: "Add row above",
|
|
560
|
+
addRowBelow: "Add row below",
|
|
561
|
+
addColLeft: "Add column left",
|
|
562
|
+
addColRight: "Add column right",
|
|
563
|
+
mergeCells: "Merge cells",
|
|
564
|
+
splitCell: "Split cell",
|
|
565
|
+
toggleHeaderRow: "Toggle header row",
|
|
566
|
+
toggleHeaderCol: "Toggle header column",
|
|
567
|
+
deleteRow: "Delete row",
|
|
568
|
+
deleteCol: "Delete column",
|
|
569
|
+
deleteTable: "Delete table",
|
|
570
|
+
undo: "Undo",
|
|
571
|
+
redo: "Redo",
|
|
572
|
+
colorDefault: "Default",
|
|
573
|
+
colorSecondary: "Secondary",
|
|
574
|
+
colorMuted: "Muted",
|
|
575
|
+
colorAccent: "Accent",
|
|
576
|
+
colorBrand: "Brand",
|
|
577
|
+
colorSuccess: "Success",
|
|
578
|
+
colorWarning: "Warning",
|
|
579
|
+
colorDanger: "Danger",
|
|
580
|
+
tableCell: (r3, c) => `Row ${r3}, column ${c}`,
|
|
581
|
+
tableSizeText: (rows, cols) => `${rows} rows \xD7 ${cols} columns`,
|
|
582
|
+
heading: (level) => `Heading ${level}`,
|
|
583
|
+
fontSizeDefault: (px) => `Default (body ${px}px)`,
|
|
584
|
+
closeEditing: (label) => `Close ${label}`
|
|
585
|
+
},
|
|
586
|
+
form: { invalid: "Invalid value." },
|
|
587
|
+
date: {
|
|
588
|
+
weekdays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
|
589
|
+
weekdaysLong: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
|
590
|
+
today: "Today",
|
|
591
|
+
prevYear: "Previous year",
|
|
592
|
+
nextYear: "Next year",
|
|
593
|
+
prevMonth: "Previous month",
|
|
594
|
+
nextMonth: "Next month",
|
|
595
|
+
monthLabel: (month) => ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][month - 1] ?? String(month),
|
|
596
|
+
dayLabel: (day) => String(day),
|
|
597
|
+
unitYear: "-",
|
|
598
|
+
unitMonth: "-",
|
|
599
|
+
unitDay: "",
|
|
600
|
+
hourItem: (hour) => hour,
|
|
601
|
+
minuteItem: (minute) => minute,
|
|
602
|
+
hourAria: (prefix) => prefix ? `${prefix} hour` : "Hour",
|
|
603
|
+
minuteAria: (prefix) => prefix ? `${prefix} minute` : "Minute",
|
|
604
|
+
meridiemAria: (prefix) => prefix ? `${prefix} AM/PM` : "AM/PM",
|
|
605
|
+
am: "AM",
|
|
606
|
+
pm: "PM",
|
|
607
|
+
rangeFrom: "From",
|
|
608
|
+
rangeTo: "To",
|
|
609
|
+
clearDate: "Clear date",
|
|
610
|
+
clearMonth: "Clear month",
|
|
611
|
+
clearYear: "Clear year",
|
|
612
|
+
clearPeriod: "Clear period",
|
|
613
|
+
clearTime: "Clear time",
|
|
614
|
+
clearTimeRange: "Clear time range",
|
|
615
|
+
start: "Start",
|
|
616
|
+
end: "End",
|
|
617
|
+
startTime: "Start time",
|
|
618
|
+
endTime: "End time"
|
|
619
|
+
},
|
|
620
|
+
chart: {
|
|
621
|
+
unit: (unit) => `Unit: ${unit}`,
|
|
622
|
+
pie: "Pie chart",
|
|
623
|
+
donut: "Donut chart",
|
|
624
|
+
radialSummary: (count, kind) => `${kind} with ${count} ${count === 1 ? "item" : "items"}`,
|
|
625
|
+
barSummary: (c, s, stacked) => `${stacked ? "Stacked bar chart" : "Bar chart"} with ${c} ${c === 1 ? "item" : "items"} and ${s} series`,
|
|
626
|
+
lineSummary: (c, s, stacked) => `${stacked ? "Stacked line chart" : "Line chart"} with ${c} ${c === 1 ? "item" : "items"} and ${s} series`
|
|
627
|
+
},
|
|
628
|
+
chipFilter: {
|
|
629
|
+
periodDay: "Daily",
|
|
630
|
+
periodMonth: "Monthly",
|
|
631
|
+
periodQuarter: "Quarterly",
|
|
632
|
+
periodHalf: "Half-yearly",
|
|
633
|
+
periodYear: "Yearly",
|
|
634
|
+
custom: "Custom",
|
|
635
|
+
today: "Today",
|
|
636
|
+
last7: "Last 7 days",
|
|
637
|
+
last30: "Last 30 days",
|
|
638
|
+
maxWord: "max",
|
|
639
|
+
maxRangeHint: (days) => `max ${days} days at a time`,
|
|
640
|
+
requireAll: "Select all items.",
|
|
641
|
+
requireAnyDefault: "Select at least one filter.",
|
|
642
|
+
requireAnyNamed: (name) => `Select at least one ${name}.`,
|
|
643
|
+
requireField: (label) => `Select ${label}.`,
|
|
644
|
+
fieldFallback: "item",
|
|
645
|
+
valueListMore: (first, rest) => `${first} +${rest} more`,
|
|
646
|
+
quarter: (n) => `Q${n}`,
|
|
647
|
+
firstHalf: "H1",
|
|
648
|
+
secondHalf: "H2",
|
|
649
|
+
removeFilter: (label) => `Remove ${label} filter`,
|
|
650
|
+
clearFilter: (label) => `Clear ${label} filter`,
|
|
651
|
+
resetSearch: "Reset search",
|
|
652
|
+
addFilter: "Add filter",
|
|
653
|
+
noAddableFilter: "No filters to add.",
|
|
654
|
+
selectNone: "Deselect all",
|
|
655
|
+
selectAll: "Select all",
|
|
656
|
+
removeItem: (label) => `Delete ${label}`,
|
|
657
|
+
keywordContains: "Contains",
|
|
658
|
+
keywordExact: "Exact",
|
|
659
|
+
keywordExcludes: "Excludes",
|
|
660
|
+
keywordHintCsv: "Separate multiple keywords with commas (,)",
|
|
661
|
+
keywordHintEnter: "Press Enter to add",
|
|
662
|
+
keywordCondition: "Search condition:",
|
|
663
|
+
noSearchResults: "No search results."
|
|
664
|
+
},
|
|
665
|
+
numberInput: {
|
|
666
|
+
rangeBetween: (min, max) => `Enter a value between ${min} and ${max}.`,
|
|
667
|
+
atLeast: (min) => `Enter ${min} or more.`,
|
|
668
|
+
atMost: (max) => `Enter ${max} or less.`,
|
|
669
|
+
increase: "Increase",
|
|
670
|
+
decrease: "Decrease"
|
|
671
|
+
},
|
|
672
|
+
chipInput: {
|
|
673
|
+
placeholderWithComma: "Add a tag (press Enter or comma)",
|
|
674
|
+
placeholder: "Add a tag (press Enter)",
|
|
675
|
+
duplicateNamed: (label) => `This ${label} has already been entered.`,
|
|
676
|
+
duplicate: "Duplicate values exist.",
|
|
677
|
+
maxCount: (max) => `Up to ${max}`
|
|
678
|
+
},
|
|
679
|
+
slider: { minValue: "Minimum", maxValue: "Maximum" },
|
|
680
|
+
chat: {
|
|
681
|
+
removeAttachment: (name) => `Remove ${name}`,
|
|
682
|
+
placeholder: "Enter a message...",
|
|
683
|
+
attachFile: "Attach file",
|
|
684
|
+
stopResponse: "Stop response",
|
|
685
|
+
send: "Send",
|
|
686
|
+
read: "Read",
|
|
687
|
+
unread: "Unread"
|
|
688
|
+
},
|
|
689
|
+
loadingModal: {
|
|
690
|
+
loadingMessage: "Working...",
|
|
691
|
+
errorMessage: "The task failed. Please try again.",
|
|
692
|
+
errorButton: "Retry",
|
|
693
|
+
ariaTitle: "Loading"
|
|
694
|
+
},
|
|
695
|
+
stepper: { errorTooltip: "Some items need your attention.", ariaLabel: "Progress steps" },
|
|
696
|
+
timeline: { empty: "No history." },
|
|
697
|
+
callout: { dangerTitle: "Caution" },
|
|
698
|
+
guide: { tip: "Tip", notion: "How-to guide" },
|
|
699
|
+
loginCard: { login: "Sign in with unified account" },
|
|
700
|
+
modal: { defaultTitle: "Modal" },
|
|
701
|
+
launcher: { opensInNewTab: "Opens in a new tab" },
|
|
702
|
+
common: {
|
|
703
|
+
close: "Close",
|
|
704
|
+
clear: "Clear",
|
|
705
|
+
confirm: "OK",
|
|
706
|
+
all: "All",
|
|
707
|
+
back: "Back",
|
|
708
|
+
more: "More",
|
|
709
|
+
moreActions: "More actions",
|
|
710
|
+
openMenu: "Open menu",
|
|
711
|
+
dragHandle: "Drag handle",
|
|
712
|
+
resizeDrawer: "Resize drawer width",
|
|
713
|
+
search: "Search",
|
|
714
|
+
count: (n) => String(n)
|
|
715
|
+
},
|
|
716
|
+
input: {
|
|
717
|
+
placeholder: "Please enter a value.",
|
|
718
|
+
searchWithinResults: "Search within results",
|
|
719
|
+
clearInput: "Reset input",
|
|
720
|
+
showPassword: "Show password"
|
|
721
|
+
},
|
|
722
|
+
pagination: {
|
|
723
|
+
firstPage: "First page",
|
|
724
|
+
prevPage: "Previous page",
|
|
725
|
+
nextPage: "Next page",
|
|
726
|
+
lastPage: "Last page",
|
|
727
|
+
prevGroup: "Previous pages",
|
|
728
|
+
nextGroup: "Next pages"
|
|
729
|
+
},
|
|
730
|
+
select: {
|
|
731
|
+
placeholder: "Select",
|
|
732
|
+
allSelected: "All",
|
|
733
|
+
clear: "Clear selection",
|
|
734
|
+
deselect: (label) => `Deselect ${label}`,
|
|
735
|
+
searchPlaceholder: "Search",
|
|
736
|
+
empty: "No items to display.",
|
|
737
|
+
loading: "Loading..."
|
|
738
|
+
},
|
|
739
|
+
table: {
|
|
740
|
+
selectAll: "Select all",
|
|
741
|
+
selectRow: "Select row",
|
|
742
|
+
empty: "No data.",
|
|
743
|
+
rowsPerPage: (count) => `${count} per page`,
|
|
744
|
+
editable: "Editable",
|
|
745
|
+
opensInNewScreen: "Opens in a new screen",
|
|
746
|
+
sortBy: (label) => `Sort by ${label}`,
|
|
747
|
+
denseOff: "Comfortable view",
|
|
748
|
+
denseOn: "Compact view"
|
|
749
|
+
},
|
|
750
|
+
tableBar: {
|
|
751
|
+
totalBefore: "Total ",
|
|
752
|
+
totalAfter: "",
|
|
753
|
+
selectedBefore: "",
|
|
754
|
+
selectedAfter: " selected"
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
ja: {
|
|
758
|
+
accountListBox: {
|
|
759
|
+
accountSetting: "\u30A2\u30AB\u30A6\u30F3\u30C8\u8A2D\u5B9A",
|
|
760
|
+
language: "\u8A00\u8A9E\u306E\u5909\u66F4",
|
|
761
|
+
logout: "\u30ED\u30B0\u30A2\u30A6\u30C8"
|
|
762
|
+
},
|
|
763
|
+
gnbSystem: { alert: "\u901A\u77E5", setting: "\u8A2D\u5B9A" },
|
|
764
|
+
editor: {
|
|
765
|
+
placeholder: "\u5185\u5BB9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
766
|
+
toolbarLabel: "\u66F8\u5F0F\u30C4\u30FC\u30EB",
|
|
767
|
+
tableSize: "\u8868\u306E\u30B5\u30A4\u30BA",
|
|
768
|
+
linkUrl: "\u30EA\u30F3\u30AFURL",
|
|
769
|
+
apply: "\u9069\u7528",
|
|
770
|
+
remove: "\u524A\u9664",
|
|
771
|
+
headingLevel: "\u898B\u51FA\u3057\u30EC\u30D9\u30EB",
|
|
772
|
+
headingBody: "\u672C\u6587",
|
|
773
|
+
fontSize: "\u6587\u5B57\u30B5\u30A4\u30BA",
|
|
774
|
+
fontSizeDefaultLabel: "\u6A19\u6E96",
|
|
775
|
+
bold: "\u592A\u5B57",
|
|
776
|
+
italic: "\u659C\u4F53",
|
|
777
|
+
underline: "\u4E0B\u7DDA",
|
|
778
|
+
strike: "\u53D6\u308A\u6D88\u3057\u7DDA",
|
|
779
|
+
inlineCode: "\u30A4\u30F3\u30E9\u30A4\u30F3\u30B3\u30FC\u30C9",
|
|
780
|
+
textColor: "\u6587\u5B57\u8272",
|
|
781
|
+
clearColor: "\u8272\u3092\u30AF\u30EA\u30A2",
|
|
782
|
+
alignLeft: "\u5DE6\u63C3\u3048",
|
|
783
|
+
alignCenter: "\u4E2D\u592E\u63C3\u3048",
|
|
784
|
+
alignRight: "\u53F3\u63C3\u3048",
|
|
785
|
+
alignJustify: "\u4E21\u7AEF\u63C3\u3048",
|
|
786
|
+
bulletList: "\u7B87\u6761\u66F8\u304D",
|
|
787
|
+
orderedList: "\u756A\u53F7\u4ED8\u304D\u30EA\u30B9\u30C8",
|
|
788
|
+
taskList: "\u30C1\u30A7\u30C3\u30AF\u30EA\u30B9\u30C8",
|
|
789
|
+
list: "\u30EA\u30B9\u30C8",
|
|
790
|
+
blockquote: "\u5F15\u7528",
|
|
791
|
+
codeBlock: "\u30B3\u30FC\u30C9\u30D6\u30ED\u30C3\u30AF",
|
|
792
|
+
divider: "\u533A\u5207\u308A\u7DDA",
|
|
793
|
+
link: "\u30EA\u30F3\u30AF",
|
|
794
|
+
insertImage: "\u753B\u50CF\u3092\u633F\u5165",
|
|
795
|
+
image: "\u753B\u50CF",
|
|
796
|
+
table: "\u8868",
|
|
797
|
+
addRowAbove: "\u4E0A\u306B\u884C\u3092\u8FFD\u52A0",
|
|
798
|
+
addRowBelow: "\u4E0B\u306B\u884C\u3092\u8FFD\u52A0",
|
|
799
|
+
addColLeft: "\u5DE6\u306B\u5217\u3092\u8FFD\u52A0",
|
|
800
|
+
addColRight: "\u53F3\u306B\u5217\u3092\u8FFD\u52A0",
|
|
801
|
+
mergeCells: "\u30BB\u30EB\u3092\u7D50\u5408",
|
|
802
|
+
splitCell: "\u7D50\u5408\u3092\u89E3\u9664",
|
|
803
|
+
toggleHeaderRow: "\u30D8\u30C3\u30C0\u30FC\u884C\u3092\u5207\u308A\u66FF\u3048",
|
|
804
|
+
toggleHeaderCol: "\u30D8\u30C3\u30C0\u30FC\u5217\u3092\u5207\u308A\u66FF\u3048",
|
|
805
|
+
deleteRow: "\u884C\u3092\u524A\u9664",
|
|
806
|
+
deleteCol: "\u5217\u3092\u524A\u9664",
|
|
807
|
+
deleteTable: "\u8868\u3092\u524A\u9664",
|
|
808
|
+
undo: "\u5143\u306B\u623B\u3059",
|
|
809
|
+
redo: "\u3084\u308A\u76F4\u3057",
|
|
810
|
+
colorDefault: "\u6A19\u6E96",
|
|
811
|
+
colorSecondary: "\u88DC\u52A9",
|
|
812
|
+
colorMuted: "\u8584\u3044",
|
|
813
|
+
colorAccent: "\u5F37\u8ABF",
|
|
814
|
+
colorBrand: "\u30D6\u30E9\u30F3\u30C9",
|
|
815
|
+
colorSuccess: "\u6210\u529F",
|
|
816
|
+
colorWarning: "\u6CE8\u610F",
|
|
817
|
+
colorDanger: "\u5371\u967A",
|
|
818
|
+
tableCell: (r3, c) => `${r3}\u884C${c}\u5217`,
|
|
819
|
+
tableSizeText: (rows, cols) => `${rows}\u884C \xD7 ${cols}\u5217`,
|
|
820
|
+
heading: (level) => `\u898B\u51FA\u3057${level}`,
|
|
821
|
+
fontSizeDefault: (px) => `\u6A19\u6E96\uFF08\u672C\u6587 ${px}px\uFF09`,
|
|
822
|
+
closeEditing: (label) => `${label}\u3092\u9589\u3058\u308B`
|
|
823
|
+
},
|
|
824
|
+
form: { invalid: "\u7121\u52B9\u306A\u5024\u3067\u3059\u3002" },
|
|
825
|
+
date: {
|
|
826
|
+
weekdays: ["\u65E5", "\u6708", "\u706B", "\u6C34", "\u6728", "\u91D1", "\u571F"],
|
|
827
|
+
weekdaysLong: ["\u65E5\u66DC\u65E5", "\u6708\u66DC\u65E5", "\u706B\u66DC\u65E5", "\u6C34\u66DC\u65E5", "\u6728\u66DC\u65E5", "\u91D1\u66DC\u65E5", "\u571F\u66DC\u65E5"],
|
|
828
|
+
today: "\u4ECA\u65E5",
|
|
829
|
+
prevYear: "\u524D\u306E\u5E74",
|
|
830
|
+
nextYear: "\u6B21\u306E\u5E74",
|
|
831
|
+
prevMonth: "\u524D\u306E\u6708",
|
|
832
|
+
nextMonth: "\u6B21\u306E\u6708",
|
|
833
|
+
monthLabel: (month) => `${month}\u6708`,
|
|
834
|
+
dayLabel: (day) => `${day}\u65E5`,
|
|
835
|
+
unitYear: "\u5E74",
|
|
836
|
+
unitMonth: "\u6708",
|
|
837
|
+
unitDay: "\u65E5",
|
|
838
|
+
hourItem: (hour) => `${hour}\u6642`,
|
|
839
|
+
minuteItem: (minute) => `${minute}\u5206`,
|
|
840
|
+
hourAria: (prefix) => `${prefix}\u6642`,
|
|
841
|
+
minuteAria: (prefix) => `${prefix}\u5206`,
|
|
842
|
+
meridiemAria: (prefix) => `${prefix}\u5348\u524D/\u5348\u5F8C`,
|
|
843
|
+
am: "\u5348\u524D",
|
|
844
|
+
pm: "\u5348\u5F8C",
|
|
845
|
+
rangeFrom: "\u958B\u59CB",
|
|
846
|
+
rangeTo: "\u7D42\u4E86",
|
|
847
|
+
clearDate: "\u65E5\u4ED8\u3092\u30AF\u30EA\u30A2",
|
|
848
|
+
clearMonth: "\u6708\u3092\u30AF\u30EA\u30A2",
|
|
849
|
+
clearYear: "\u5E74\u3092\u30AF\u30EA\u30A2",
|
|
850
|
+
clearPeriod: "\u671F\u9593\u3092\u30AF\u30EA\u30A2",
|
|
851
|
+
clearTime: "\u6642\u523B\u3092\u30AF\u30EA\u30A2",
|
|
852
|
+
clearTimeRange: "\u6642\u9593\u7BC4\u56F2\u3092\u30AF\u30EA\u30A2",
|
|
853
|
+
start: "\u958B\u59CB",
|
|
854
|
+
end: "\u7D42\u4E86",
|
|
855
|
+
startTime: "\u958B\u59CB\u6642\u523B",
|
|
856
|
+
endTime: "\u7D42\u4E86\u6642\u523B"
|
|
857
|
+
},
|
|
858
|
+
chart: {
|
|
859
|
+
unit: (unit) => `\u5358\u4F4D\uFF1A${unit}`,
|
|
860
|
+
pie: "\u5186\u30B0\u30E9\u30D5",
|
|
861
|
+
donut: "\u30C9\u30FC\u30CA\u30C4\u30B0\u30E9\u30D5",
|
|
862
|
+
radialSummary: (count, kind) => `${count}\u9805\u76EE\u306E${kind}`,
|
|
863
|
+
barSummary: (c, s, stacked) => `${c}\u9805\u76EE\u3001${s}\u7CFB\u5217\u306E${stacked ? "\u7A4D\u307F\u4E0A\u3052" : ""}\u68D2\u30B0\u30E9\u30D5`,
|
|
864
|
+
lineSummary: (c, s, stacked) => `${c}\u9805\u76EE\u3001${s}\u7CFB\u5217\u306E${stacked ? "\u7A4D\u307F\u4E0A\u3052" : ""}\u6298\u308C\u7DDA\u30B0\u30E9\u30D5`
|
|
865
|
+
},
|
|
866
|
+
chipFilter: {
|
|
867
|
+
periodDay: "\u65E5\u5225",
|
|
868
|
+
periodMonth: "\u6708\u5225",
|
|
869
|
+
periodQuarter: "\u56DB\u534A\u671F\u5225",
|
|
870
|
+
periodHalf: "\u534A\u671F\u5225",
|
|
871
|
+
periodYear: "\u5E74\u5225",
|
|
872
|
+
custom: "\u30E6\u30FC\u30B6\u30FC\u6307\u5B9A",
|
|
873
|
+
today: "\u4ECA\u65E5",
|
|
874
|
+
last7: "\u904E\u53BB7\u65E5",
|
|
875
|
+
last30: "\u904E\u53BB30\u65E5",
|
|
876
|
+
maxWord: "\u6700\u5927",
|
|
877
|
+
maxRangeHint: (days) => `\u6700\u5927${days}\u65E5`,
|
|
878
|
+
requireAll: "\u3059\u3079\u3066\u306E\u9805\u76EE\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
879
|
+
requireAnyDefault: "1\u3064\u4EE5\u4E0A\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
880
|
+
requireAnyNamed: (name) => `${name}\u30921\u3064\u4EE5\u4E0A\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
881
|
+
requireField: (label) => `${label}\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
882
|
+
fieldFallback: "\u9805\u76EE",
|
|
883
|
+
valueListMore: (first, rest) => `${first} \u4ED6${rest}\u4EF6`,
|
|
884
|
+
quarter: (n) => `\u7B2C${n}\u56DB\u534A\u671F`,
|
|
885
|
+
firstHalf: "\u4E0A\u534A\u671F",
|
|
886
|
+
secondHalf: "\u4E0B\u534A\u671F",
|
|
887
|
+
removeFilter: (label) => `${label}\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u524A\u9664`,
|
|
888
|
+
clearFilter: (label) => `${label}\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30AF\u30EA\u30A2`,
|
|
889
|
+
resetSearch: "\u691C\u7D22\u3092\u30EA\u30BB\u30C3\u30C8",
|
|
890
|
+
addFilter: "\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u8FFD\u52A0",
|
|
891
|
+
noAddableFilter: "\u8FFD\u52A0\u3067\u304D\u308B\u30D5\u30A3\u30EB\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
892
|
+
selectNone: "\u9078\u629E\u3092\u89E3\u9664",
|
|
893
|
+
selectAll: "\u3059\u3079\u3066\u9078\u629E",
|
|
894
|
+
removeItem: (label) => `${label}\u3092\u524A\u9664`,
|
|
895
|
+
keywordContains: "\u542B\u3080",
|
|
896
|
+
keywordExact: "\u4E00\u81F4",
|
|
897
|
+
keywordExcludes: "\u542B\u307E\u306A\u3044",
|
|
898
|
+
keywordHintCsv: "\u8907\u6570\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u30AB\u30F3\u30DE(,)\u3067\u533A\u5207\u308A\u307E\u3059",
|
|
899
|
+
keywordHintEnter: "\u5165\u529B\u5F8C Enter \u3067\u8FFD\u52A0",
|
|
900
|
+
keywordCondition: "\u691C\u7D22\u6761\u4EF6\uFF1A",
|
|
901
|
+
noSearchResults: "\u691C\u7D22\u7D50\u679C\u304C\u3042\u308A\u307E\u305B\u3093\u3002"
|
|
902
|
+
},
|
|
903
|
+
numberInput: {
|
|
904
|
+
rangeBetween: (min, max) => `${min}\u301C${max}\u306E\u7BC4\u56F2\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
905
|
+
atLeast: (min) => `${min}\u4EE5\u4E0A\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
906
|
+
atMost: (max) => `${max}\u4EE5\u4E0B\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
907
|
+
increase: "\u5897\u3084\u3059",
|
|
908
|
+
decrease: "\u6E1B\u3089\u3059"
|
|
909
|
+
},
|
|
910
|
+
chipInput: {
|
|
911
|
+
placeholderWithComma: "\u30BF\u30B0\u3092\u5165\u529B\uFF08Enter\u307E\u305F\u306F\u30AB\u30F3\u30DE\u3067\u767B\u9332\uFF09",
|
|
912
|
+
placeholder: "\u30BF\u30B0\u3092\u5165\u529B\uFF08Enter\u3067\u767B\u9332\uFF09",
|
|
913
|
+
duplicateNamed: (label) => `\u3059\u3067\u306B\u5165\u529B\u3055\u308C\u305F${label}\u3067\u3059\u3002`,
|
|
914
|
+
duplicate: "\u91CD\u8907\u3057\u305F\u5024\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
915
|
+
maxCount: (max) => `\u6700\u5927${max}\u4EF6`
|
|
916
|
+
},
|
|
917
|
+
slider: { minValue: "\u6700\u5C0F\u5024", maxValue: "\u6700\u5927\u5024" },
|
|
918
|
+
chat: {
|
|
919
|
+
removeAttachment: (name) => `${name}\u3092\u524A\u9664`,
|
|
920
|
+
placeholder: "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
921
|
+
attachFile: "\u30D5\u30A1\u30A4\u30EB\u3092\u6DFB\u4ED8",
|
|
922
|
+
stopResponse: "\u5FDC\u7B54\u3092\u505C\u6B62",
|
|
923
|
+
send: "\u9001\u4FE1",
|
|
924
|
+
read: "\u65E2\u8AAD",
|
|
925
|
+
unread: "\u672A\u8AAD"
|
|
926
|
+
},
|
|
927
|
+
loadingModal: {
|
|
928
|
+
loadingMessage: "\u51E6\u7406\u4E2D...",
|
|
929
|
+
errorMessage: "\u51E6\u7406\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
|
|
930
|
+
errorButton: "\u518D\u8A66\u884C",
|
|
931
|
+
ariaTitle: "\u8AAD\u307F\u8FBC\u307F\u4E2D"
|
|
932
|
+
},
|
|
933
|
+
stepper: { errorTooltip: "\u78BA\u8A8D\u304C\u5FC5\u8981\u306A\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\u3002", ariaLabel: "\u9032\u884C\u30B9\u30C6\u30C3\u30D7" },
|
|
934
|
+
timeline: { empty: "\u5C65\u6B74\u304C\u3042\u308A\u307E\u305B\u3093\u3002" },
|
|
935
|
+
callout: { dangerTitle: "\u6CE8\u610F\u4E8B\u9805" },
|
|
936
|
+
guide: { tip: "\u30D2\u30F3\u30C8", notion: "\u4F7F\u3044\u65B9\u30AC\u30A4\u30C9" },
|
|
937
|
+
loginCard: { login: "\u7D71\u5408\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u30ED\u30B0\u30A4\u30F3" },
|
|
938
|
+
modal: { defaultTitle: "\u30E2\u30FC\u30C0\u30EB" },
|
|
939
|
+
launcher: { opensInNewTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059" },
|
|
940
|
+
common: {
|
|
941
|
+
close: "\u9589\u3058\u308B",
|
|
942
|
+
clear: "\u30AF\u30EA\u30A2",
|
|
943
|
+
confirm: "\u78BA\u8A8D",
|
|
944
|
+
all: "\u3059\u3079\u3066",
|
|
945
|
+
back: "\u623B\u308B",
|
|
946
|
+
more: "\u3082\u3063\u3068\u898B\u308B",
|
|
947
|
+
moreActions: "\u305D\u306E\u4ED6\u306E\u6A5F\u80FD",
|
|
948
|
+
openMenu: "\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F",
|
|
949
|
+
dragHandle: "\u30C9\u30E9\u30C3\u30B0\u30CF\u30F3\u30C9\u30EB",
|
|
950
|
+
resizeDrawer: "\u30C9\u30ED\u30EF\u30FC\u306E\u5E45\u3092\u8ABF\u6574",
|
|
951
|
+
search: "\u691C\u7D22",
|
|
952
|
+
count: (n) => `${n}\u4EF6`
|
|
953
|
+
},
|
|
954
|
+
input: {
|
|
955
|
+
placeholder: "\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
956
|
+
searchWithinResults: "\u7D50\u679C\u5185\u3092\u691C\u7D22",
|
|
957
|
+
clearInput: "\u5165\u529B\u3092\u30EA\u30BB\u30C3\u30C8",
|
|
958
|
+
showPassword: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8868\u793A"
|
|
959
|
+
},
|
|
960
|
+
pagination: {
|
|
961
|
+
firstPage: "\u6700\u521D\u306E\u30DA\u30FC\u30B8",
|
|
962
|
+
prevPage: "\u524D\u306E\u30DA\u30FC\u30B8",
|
|
963
|
+
nextPage: "\u6B21\u306E\u30DA\u30FC\u30B8",
|
|
964
|
+
lastPage: "\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",
|
|
965
|
+
prevGroup: "\u524D\u306E\u30B0\u30EB\u30FC\u30D7",
|
|
966
|
+
nextGroup: "\u6B21\u306E\u30B0\u30EB\u30FC\u30D7"
|
|
967
|
+
},
|
|
968
|
+
select: {
|
|
969
|
+
placeholder: "\u9078\u629E",
|
|
970
|
+
allSelected: "\u3059\u3079\u3066",
|
|
971
|
+
clear: "\u9078\u629E\u3092\u30AF\u30EA\u30A2",
|
|
972
|
+
deselect: (label) => `${label} \u306E\u9078\u629E\u3092\u89E3\u9664`,
|
|
973
|
+
searchPlaceholder: "\u691C\u7D22",
|
|
974
|
+
empty: "\u8868\u793A\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
975
|
+
loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D..."
|
|
976
|
+
},
|
|
977
|
+
table: {
|
|
978
|
+
selectAll: "\u3059\u3079\u3066\u9078\u629E",
|
|
979
|
+
selectRow: "\u884C\u3092\u9078\u629E",
|
|
980
|
+
empty: "\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
981
|
+
rowsPerPage: (count) => `${count}\u4EF6\u305A\u3064\u8868\u793A`,
|
|
982
|
+
editable: "\u7DE8\u96C6\u53EF\u80FD",
|
|
983
|
+
opensInNewScreen: "\u65B0\u3057\u3044\u753B\u9762\u3067\u958B\u304F",
|
|
984
|
+
sortBy: (label) => `${label} \u3067\u4E26\u3079\u66FF\u3048`,
|
|
985
|
+
denseOff: "\u5E83\u304F\u8868\u793A",
|
|
986
|
+
denseOn: "\u72ED\u304F\u8868\u793A"
|
|
987
|
+
},
|
|
988
|
+
tableBar: {
|
|
989
|
+
totalBefore: "\u5408\u8A08 ",
|
|
990
|
+
totalAfter: "\u4EF6",
|
|
991
|
+
selectedBefore: "",
|
|
992
|
+
selectedAfter: "\u4EF6\u9078\u629E"
|
|
993
|
+
}
|
|
994
|
+
},
|
|
995
|
+
zh: {
|
|
996
|
+
accountListBox: { accountSetting: "\u8D26\u53F7\u8BBE\u7F6E", language: "\u66F4\u6539\u8BED\u8A00", logout: "\u9000\u51FA\u767B\u5F55" },
|
|
997
|
+
gnbSystem: { alert: "\u901A\u77E5", setting: "\u8BBE\u7F6E" },
|
|
998
|
+
editor: {
|
|
999
|
+
placeholder: "\u8BF7\u8F93\u5165\u5185\u5BB9\u3002",
|
|
1000
|
+
toolbarLabel: "\u683C\u5F0F\u5DE5\u5177",
|
|
1001
|
+
tableSize: "\u8868\u683C\u5927\u5C0F",
|
|
1002
|
+
linkUrl: "\u94FE\u63A5\u5730\u5740",
|
|
1003
|
+
apply: "\u5E94\u7528",
|
|
1004
|
+
remove: "\u79FB\u9664",
|
|
1005
|
+
headingLevel: "\u6807\u9898\u7EA7\u522B",
|
|
1006
|
+
headingBody: "\u6B63\u6587",
|
|
1007
|
+
fontSize: "\u5B57\u53F7",
|
|
1008
|
+
fontSizeDefaultLabel: "\u9ED8\u8BA4",
|
|
1009
|
+
bold: "\u52A0\u7C97",
|
|
1010
|
+
italic: "\u659C\u4F53",
|
|
1011
|
+
underline: "\u4E0B\u5212\u7EBF",
|
|
1012
|
+
strike: "\u5220\u9664\u7EBF",
|
|
1013
|
+
inlineCode: "\u884C\u5185\u4EE3\u7801",
|
|
1014
|
+
textColor: "\u6587\u5B57\u989C\u8272",
|
|
1015
|
+
clearColor: "\u6E05\u9664\u989C\u8272",
|
|
1016
|
+
alignLeft: "\u5DE6\u5BF9\u9F50",
|
|
1017
|
+
alignCenter: "\u5C45\u4E2D\u5BF9\u9F50",
|
|
1018
|
+
alignRight: "\u53F3\u5BF9\u9F50",
|
|
1019
|
+
alignJustify: "\u4E24\u7AEF\u5BF9\u9F50",
|
|
1020
|
+
bulletList: "\u9879\u76EE\u7B26\u53F7\u5217\u8868",
|
|
1021
|
+
orderedList: "\u7F16\u53F7\u5217\u8868",
|
|
1022
|
+
taskList: "\u5F85\u529E\u5217\u8868",
|
|
1023
|
+
list: "\u5217\u8868",
|
|
1024
|
+
blockquote: "\u5F15\u7528",
|
|
1025
|
+
codeBlock: "\u4EE3\u7801\u5757",
|
|
1026
|
+
divider: "\u5206\u9694\u7EBF",
|
|
1027
|
+
link: "\u94FE\u63A5",
|
|
1028
|
+
insertImage: "\u63D2\u5165\u56FE\u7247",
|
|
1029
|
+
image: "\u56FE\u7247",
|
|
1030
|
+
table: "\u8868\u683C",
|
|
1031
|
+
addRowAbove: "\u5728\u4E0A\u65B9\u63D2\u5165\u884C",
|
|
1032
|
+
addRowBelow: "\u5728\u4E0B\u65B9\u63D2\u5165\u884C",
|
|
1033
|
+
addColLeft: "\u5728\u5DE6\u4FA7\u63D2\u5165\u5217",
|
|
1034
|
+
addColRight: "\u5728\u53F3\u4FA7\u63D2\u5165\u5217",
|
|
1035
|
+
mergeCells: "\u5408\u5E76\u5355\u5143\u683C",
|
|
1036
|
+
splitCell: "\u53D6\u6D88\u5408\u5E76",
|
|
1037
|
+
toggleHeaderRow: "\u5207\u6362\u6807\u9898\u884C",
|
|
1038
|
+
toggleHeaderCol: "\u5207\u6362\u6807\u9898\u5217",
|
|
1039
|
+
deleteRow: "\u5220\u9664\u884C",
|
|
1040
|
+
deleteCol: "\u5220\u9664\u5217",
|
|
1041
|
+
deleteTable: "\u5220\u9664\u8868\u683C",
|
|
1042
|
+
undo: "\u64A4\u9500",
|
|
1043
|
+
redo: "\u91CD\u505A",
|
|
1044
|
+
colorDefault: "\u9ED8\u8BA4",
|
|
1045
|
+
colorSecondary: "\u6B21\u8981",
|
|
1046
|
+
colorMuted: "\u6DE1\u5316",
|
|
1047
|
+
colorAccent: "\u5F3A\u8C03",
|
|
1048
|
+
colorBrand: "\u54C1\u724C",
|
|
1049
|
+
colorSuccess: "\u6210\u529F",
|
|
1050
|
+
colorWarning: "\u8B66\u544A",
|
|
1051
|
+
colorDanger: "\u5371\u9669",
|
|
1052
|
+
tableCell: (r3, c) => `${r3}\u884C${c}\u5217`,
|
|
1053
|
+
tableSizeText: (rows, cols) => `${rows}\u884C \xD7 ${cols}\u5217`,
|
|
1054
|
+
heading: (level) => `\u6807\u9898 ${level}`,
|
|
1055
|
+
fontSizeDefault: (px) => `\u9ED8\u8BA4\uFF08\u6B63\u6587 ${px}px\uFF09`,
|
|
1056
|
+
closeEditing: (label) => `\u5173\u95ED${label}`
|
|
1057
|
+
},
|
|
1058
|
+
form: { invalid: "\u65E0\u6548\u7684\u503C\u3002" },
|
|
1059
|
+
date: {
|
|
1060
|
+
weekdays: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"],
|
|
1061
|
+
weekdaysLong: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"],
|
|
1062
|
+
today: "\u4ECA\u5929",
|
|
1063
|
+
prevYear: "\u4E0A\u4E00\u5E74",
|
|
1064
|
+
nextYear: "\u4E0B\u4E00\u5E74",
|
|
1065
|
+
prevMonth: "\u4E0A\u4E2A\u6708",
|
|
1066
|
+
nextMonth: "\u4E0B\u4E2A\u6708",
|
|
1067
|
+
monthLabel: (month) => `${month}\u6708`,
|
|
1068
|
+
dayLabel: (day) => `${day}\u65E5`,
|
|
1069
|
+
unitYear: "\u5E74",
|
|
1070
|
+
unitMonth: "\u6708",
|
|
1071
|
+
unitDay: "\u65E5",
|
|
1072
|
+
hourItem: (hour) => `${hour}\u65F6`,
|
|
1073
|
+
minuteItem: (minute) => `${minute}\u5206`,
|
|
1074
|
+
hourAria: (prefix) => `${prefix}\u5C0F\u65F6`,
|
|
1075
|
+
minuteAria: (prefix) => `${prefix}\u5206\u949F`,
|
|
1076
|
+
meridiemAria: (prefix) => `${prefix}\u4E0A\u5348/\u4E0B\u5348`,
|
|
1077
|
+
am: "\u4E0A\u5348",
|
|
1078
|
+
pm: "\u4E0B\u5348",
|
|
1079
|
+
rangeFrom: "\u5F00\u59CB",
|
|
1080
|
+
rangeTo: "\u7ED3\u675F",
|
|
1081
|
+
clearDate: "\u6E05\u9664\u65E5\u671F",
|
|
1082
|
+
clearMonth: "\u6E05\u9664\u6708\u4EFD",
|
|
1083
|
+
clearYear: "\u6E05\u9664\u5E74\u4EFD",
|
|
1084
|
+
clearPeriod: "\u6E05\u9664\u65F6\u95F4\u6BB5",
|
|
1085
|
+
clearTime: "\u6E05\u9664\u65F6\u95F4",
|
|
1086
|
+
clearTimeRange: "\u6E05\u9664\u65F6\u95F4\u8303\u56F4",
|
|
1087
|
+
start: "\u5F00\u59CB",
|
|
1088
|
+
end: "\u7ED3\u675F",
|
|
1089
|
+
startTime: "\u5F00\u59CB\u65F6\u95F4",
|
|
1090
|
+
endTime: "\u7ED3\u675F\u65F6\u95F4"
|
|
1091
|
+
},
|
|
1092
|
+
chart: {
|
|
1093
|
+
unit: (unit) => `\u5355\u4F4D\uFF1A${unit}`,
|
|
1094
|
+
pie: "\u997C\u56FE",
|
|
1095
|
+
donut: "\u73AF\u5F62\u56FE",
|
|
1096
|
+
radialSummary: (count, kind) => `${kind}\uFF0C\u5171 ${count} \u9879`,
|
|
1097
|
+
barSummary: (c, s, stacked) => `${stacked ? "\u5806\u53E0" : ""}\u67F1\u72B6\u56FE\uFF0C${c} \u9879\uFF0C${s} \u4E2A\u7CFB\u5217`,
|
|
1098
|
+
lineSummary: (c, s, stacked) => `${stacked ? "\u5806\u53E0" : ""}\u6298\u7EBF\u56FE\uFF0C${c} \u9879\uFF0C${s} \u4E2A\u7CFB\u5217`
|
|
1099
|
+
},
|
|
1100
|
+
chipFilter: {
|
|
1101
|
+
periodDay: "\u6309\u65E5",
|
|
1102
|
+
periodMonth: "\u6309\u6708",
|
|
1103
|
+
periodQuarter: "\u6309\u5B63\u5EA6",
|
|
1104
|
+
periodHalf: "\u6309\u534A\u5E74",
|
|
1105
|
+
periodYear: "\u6309\u5E74",
|
|
1106
|
+
custom: "\u81EA\u5B9A\u4E49",
|
|
1107
|
+
today: "\u4ECA\u5929",
|
|
1108
|
+
last7: "\u6700\u8FD17\u5929",
|
|
1109
|
+
last30: "\u6700\u8FD130\u5929",
|
|
1110
|
+
maxWord: "\u6700\u591A",
|
|
1111
|
+
maxRangeHint: (days) => `\u6700\u591A${days}\u5929`,
|
|
1112
|
+
requireAll: "\u8BF7\u9009\u62E9\u6240\u6709\u9879\u76EE\u3002",
|
|
1113
|
+
requireAnyDefault: "\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A\u7B5B\u9009\u6761\u4EF6\u3002",
|
|
1114
|
+
requireAnyNamed: (name) => `\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A${name}\u3002`,
|
|
1115
|
+
requireField: (label) => `\u8BF7\u9009\u62E9${label}\u3002`,
|
|
1116
|
+
fieldFallback: "\u9879\u76EE",
|
|
1117
|
+
valueListMore: (first, rest) => `${first} \u7B49${rest + 1}\u9879`,
|
|
1118
|
+
quarter: (n) => `\u7B2C${n}\u5B63\u5EA6`,
|
|
1119
|
+
firstHalf: "\u4E0A\u534A\u5E74",
|
|
1120
|
+
secondHalf: "\u4E0B\u534A\u5E74",
|
|
1121
|
+
removeFilter: (label) => `\u79FB\u9664${label}\u7B5B\u9009`,
|
|
1122
|
+
clearFilter: (label) => `\u6E05\u9664${label}\u7B5B\u9009`,
|
|
1123
|
+
resetSearch: "\u91CD\u7F6E\u641C\u7D22",
|
|
1124
|
+
addFilter: "\u6DFB\u52A0\u7B5B\u9009",
|
|
1125
|
+
noAddableFilter: "\u6CA1\u6709\u53EF\u6DFB\u52A0\u7684\u7B5B\u9009\u6761\u4EF6\u3002",
|
|
1126
|
+
selectNone: "\u53D6\u6D88\u5168\u9009",
|
|
1127
|
+
selectAll: "\u5168\u9009",
|
|
1128
|
+
removeItem: (label) => `\u5220\u9664${label}`,
|
|
1129
|
+
keywordContains: "\u5305\u542B",
|
|
1130
|
+
keywordExact: "\u5B8C\u5168\u5339\u914D",
|
|
1131
|
+
keywordExcludes: "\u4E0D\u5305\u542B",
|
|
1132
|
+
keywordHintCsv: "\u591A\u4E2A\u5173\u952E\u8BCD\u7528\u9017\u53F7(,)\u5206\u9694",
|
|
1133
|
+
keywordHintEnter: "\u8F93\u5165\u540E\u6309 Enter \u6DFB\u52A0",
|
|
1134
|
+
keywordCondition: "\u641C\u7D22\u6761\u4EF6\uFF1A",
|
|
1135
|
+
noSearchResults: "\u6CA1\u6709\u641C\u7D22\u7ED3\u679C\u3002"
|
|
1136
|
+
},
|
|
1137
|
+
numberInput: {
|
|
1138
|
+
rangeBetween: (min, max) => `\u8BF7\u8F93\u5165 ${min}~${max} \u4E4B\u95F4\u7684\u503C\u3002`,
|
|
1139
|
+
atLeast: (min) => `\u8BF7\u8F93\u5165\u4E0D\u5C0F\u4E8E ${min} \u7684\u503C\u3002`,
|
|
1140
|
+
atMost: (max) => `\u8BF7\u8F93\u5165\u4E0D\u5927\u4E8E ${max} \u7684\u503C\u3002`,
|
|
1141
|
+
increase: "\u589E\u52A0",
|
|
1142
|
+
decrease: "\u51CF\u5C11"
|
|
1143
|
+
},
|
|
1144
|
+
chipInput: {
|
|
1145
|
+
placeholderWithComma: "\u8F93\u5165\u6807\u7B7E\uFF08\u6309 Enter \u6216\u9017\u53F7\u6DFB\u52A0\uFF09",
|
|
1146
|
+
placeholder: "\u8F93\u5165\u6807\u7B7E\uFF08\u6309 Enter \u6DFB\u52A0\uFF09",
|
|
1147
|
+
duplicateNamed: (label) => `${label}\u5DF2\u5B58\u5728\u3002`,
|
|
1148
|
+
duplicate: "\u5B58\u5728\u91CD\u590D\u7684\u503C\u3002",
|
|
1149
|
+
maxCount: (max) => `\u6700\u591A ${max} \u4E2A`
|
|
1150
|
+
},
|
|
1151
|
+
slider: { minValue: "\u6700\u5C0F\u503C", maxValue: "\u6700\u5927\u503C" },
|
|
1152
|
+
chat: {
|
|
1153
|
+
removeAttachment: (name) => `\u79FB\u9664${name}`,
|
|
1154
|
+
placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F...",
|
|
1155
|
+
attachFile: "\u9644\u52A0\u6587\u4EF6",
|
|
1156
|
+
stopResponse: "\u505C\u6B62\u56DE\u590D",
|
|
1157
|
+
send: "\u53D1\u9001",
|
|
1158
|
+
read: "\u5DF2\u8BFB",
|
|
1159
|
+
unread: "\u672A\u8BFB"
|
|
1160
|
+
},
|
|
1161
|
+
loadingModal: {
|
|
1162
|
+
loadingMessage: "\u5904\u7406\u4E2D...",
|
|
1163
|
+
errorMessage: "\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002",
|
|
1164
|
+
errorButton: "\u91CD\u8BD5",
|
|
1165
|
+
ariaTitle: "\u52A0\u8F7D\u4E2D"
|
|
1166
|
+
},
|
|
1167
|
+
stepper: { errorTooltip: "\u6709\u9700\u8981\u786E\u8BA4\u7684\u9879\u76EE\u3002", ariaLabel: "\u8FDB\u5EA6\u6B65\u9AA4" },
|
|
1168
|
+
timeline: { empty: "\u6CA1\u6709\u8BB0\u5F55\u3002" },
|
|
1169
|
+
callout: { dangerTitle: "\u6CE8\u610F\u4E8B\u9879" },
|
|
1170
|
+
guide: { tip: "\u4F7F\u7528\u63D0\u793A", notion: "\u4F7F\u7528\u6307\u5357" },
|
|
1171
|
+
loginCard: { login: "\u4F7F\u7528\u7EDF\u4E00\u8D26\u53F7\u767B\u5F55" },
|
|
1172
|
+
modal: { defaultTitle: "\u6A21\u6001\u6846" },
|
|
1173
|
+
launcher: { opensInNewTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00" },
|
|
1174
|
+
common: {
|
|
1175
|
+
close: "\u5173\u95ED",
|
|
1176
|
+
clear: "\u6E05\u9664",
|
|
1177
|
+
confirm: "\u786E\u5B9A",
|
|
1178
|
+
all: "\u5168\u90E8",
|
|
1179
|
+
back: "\u8FD4\u56DE",
|
|
1180
|
+
more: "\u66F4\u591A",
|
|
1181
|
+
moreActions: "\u66F4\u591A\u529F\u80FD",
|
|
1182
|
+
openMenu: "\u6253\u5F00\u83DC\u5355",
|
|
1183
|
+
dragHandle: "\u62D6\u52A8\u624B\u67C4",
|
|
1184
|
+
resizeDrawer: "\u8C03\u6574\u62BD\u5C49\u5BBD\u5EA6",
|
|
1185
|
+
search: "\u641C\u7D22",
|
|
1186
|
+
count: (n) => `${n}\u4E2A`
|
|
1187
|
+
},
|
|
1188
|
+
input: {
|
|
1189
|
+
placeholder: "\u8BF7\u8F93\u5165\u3002",
|
|
1190
|
+
searchWithinResults: "\u5728\u7ED3\u679C\u4E2D\u641C\u7D22",
|
|
1191
|
+
clearInput: "\u91CD\u7F6E\u8F93\u5165",
|
|
1192
|
+
showPassword: "\u663E\u793A\u5BC6\u7801"
|
|
1193
|
+
},
|
|
1194
|
+
pagination: {
|
|
1195
|
+
firstPage: "\u7B2C\u4E00\u9875",
|
|
1196
|
+
prevPage: "\u4E0A\u4E00\u9875",
|
|
1197
|
+
nextPage: "\u4E0B\u4E00\u9875",
|
|
1198
|
+
lastPage: "\u6700\u540E\u4E00\u9875",
|
|
1199
|
+
prevGroup: "\u4E0A\u4E00\u7EC4",
|
|
1200
|
+
nextGroup: "\u4E0B\u4E00\u7EC4"
|
|
1201
|
+
},
|
|
1202
|
+
select: {
|
|
1203
|
+
placeholder: "\u8BF7\u9009\u62E9",
|
|
1204
|
+
allSelected: "\u5168\u90E8",
|
|
1205
|
+
clear: "\u6E05\u9664\u9009\u62E9",
|
|
1206
|
+
deselect: (label) => `\u53D6\u6D88\u9009\u62E9 ${label}`,
|
|
1207
|
+
searchPlaceholder: "\u641C\u7D22",
|
|
1208
|
+
empty: "\u6CA1\u6709\u53EF\u663E\u793A\u7684\u9879\u76EE\u3002",
|
|
1209
|
+
loading: "\u52A0\u8F7D\u4E2D..."
|
|
1210
|
+
},
|
|
1211
|
+
table: {
|
|
1212
|
+
selectAll: "\u5168\u9009",
|
|
1213
|
+
selectRow: "\u9009\u62E9\u884C",
|
|
1214
|
+
empty: "\u6CA1\u6709\u6570\u636E\u3002",
|
|
1215
|
+
rowsPerPage: (count) => `\u6BCF\u9875 ${count} \u6761`,
|
|
1216
|
+
editable: "\u53EF\u7F16\u8F91",
|
|
1217
|
+
opensInNewScreen: "\u5728\u65B0\u9875\u9762\u4E2D\u6253\u5F00",
|
|
1218
|
+
sortBy: (label) => `\u6309${label}\u6392\u5E8F`,
|
|
1219
|
+
denseOff: "\u5BBD\u677E\u663E\u793A",
|
|
1220
|
+
denseOn: "\u7D27\u51D1\u663E\u793A"
|
|
1221
|
+
},
|
|
1222
|
+
tableBar: {
|
|
1223
|
+
totalBefore: "\u5171 ",
|
|
1224
|
+
totalAfter: " \u6761",
|
|
1225
|
+
selectedBefore: "\u5DF2\u9009 ",
|
|
1226
|
+
selectedAfter: " \u6761"
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
};
|
|
1230
|
+
function normalizeLocale(locale) {
|
|
1231
|
+
if (!locale) return DEFAULT_LOCALE;
|
|
1232
|
+
const lang = locale.toLowerCase().split(/[-_]/)[0];
|
|
1233
|
+
return SLOCALES.includes(lang) ? lang : DEFAULT_LOCALE;
|
|
1234
|
+
}
|
|
1235
|
+
function mergeDefined(base, override) {
|
|
1236
|
+
const next = { ...base };
|
|
1237
|
+
if (!override) return next;
|
|
1238
|
+
for (const key of Object.keys(override)) {
|
|
1239
|
+
if (override[key] !== void 0) next[key] = override[key];
|
|
1240
|
+
}
|
|
1241
|
+
return next;
|
|
1242
|
+
}
|
|
1243
|
+
function mergeDateDefined(base, override) {
|
|
1244
|
+
const merged = mergeDefined(base, override);
|
|
1245
|
+
if (merged.weekdays.length !== 7) merged.weekdays = base.weekdays;
|
|
1246
|
+
if (merged.weekdaysLong.length !== 7) merged.weekdaysLong = base.weekdaysLong;
|
|
1247
|
+
return merged;
|
|
1248
|
+
}
|
|
1249
|
+
function resolveMessages(locale, override) {
|
|
1250
|
+
const base = BUNDLES[normalizeLocale(locale)];
|
|
1251
|
+
return {
|
|
1252
|
+
common: mergeDefined(base.common, override?.common),
|
|
1253
|
+
input: mergeDefined(base.input, override?.input),
|
|
1254
|
+
chart: mergeDefined(base.chart, override?.chart),
|
|
1255
|
+
date: mergeDateDefined(base.date, override?.date),
|
|
1256
|
+
form: mergeDefined(base.form, override?.form),
|
|
1257
|
+
accountListBox: mergeDefined(base.accountListBox, override?.accountListBox),
|
|
1258
|
+
gnbSystem: mergeDefined(base.gnbSystem, override?.gnbSystem),
|
|
1259
|
+
editor: mergeDefined(base.editor, override?.editor),
|
|
1260
|
+
chipFilter: mergeDefined(base.chipFilter, override?.chipFilter),
|
|
1261
|
+
numberInput: mergeDefined(base.numberInput, override?.numberInput),
|
|
1262
|
+
chipInput: mergeDefined(base.chipInput, override?.chipInput),
|
|
1263
|
+
slider: mergeDefined(base.slider, override?.slider),
|
|
1264
|
+
chat: mergeDefined(base.chat, override?.chat),
|
|
1265
|
+
loadingModal: mergeDefined(base.loadingModal, override?.loadingModal),
|
|
1266
|
+
stepper: mergeDefined(base.stepper, override?.stepper),
|
|
1267
|
+
timeline: mergeDefined(base.timeline, override?.timeline),
|
|
1268
|
+
callout: mergeDefined(base.callout, override?.callout),
|
|
1269
|
+
guide: mergeDefined(base.guide, override?.guide),
|
|
1270
|
+
loginCard: mergeDefined(base.loginCard, override?.loginCard),
|
|
1271
|
+
modal: mergeDefined(base.modal, override?.modal),
|
|
1272
|
+
launcher: mergeDefined(base.launcher, override?.launcher),
|
|
1273
|
+
pagination: mergeDefined(base.pagination, override?.pagination),
|
|
1274
|
+
select: mergeDefined(base.select, override?.select),
|
|
1275
|
+
table: mergeDefined(base.table, override?.table),
|
|
1276
|
+
tableBar: mergeDefined(base.tableBar, override?.tableBar)
|
|
1277
|
+
};
|
|
1278
|
+
}
|
|
1279
|
+
function createValue(locale, override) {
|
|
1280
|
+
const normalized = normalizeLocale(locale);
|
|
1281
|
+
const numberFormat = new Intl.NumberFormat(normalized);
|
|
1282
|
+
return {
|
|
1283
|
+
locale: normalized,
|
|
1284
|
+
messages: resolveMessages(normalized, override),
|
|
1285
|
+
formatNumber: (value) => numberFormat.format(value)
|
|
1286
|
+
};
|
|
1287
|
+
}
|
|
1288
|
+
var DEFAULT_VALUE = createValue(void 0);
|
|
1289
|
+
var LocaleContext = /* @__PURE__ */ react.createContext(DEFAULT_VALUE);
|
|
1290
|
+
function SLocaleProvider({ locale, messages, children }) {
|
|
1291
|
+
const value = react.useMemo(() => createValue(locale, messages), [locale, messages]);
|
|
1292
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LocaleContext.Provider, { value, children });
|
|
1293
|
+
}
|
|
1294
|
+
function useLocale() {
|
|
1295
|
+
return react.useContext(LocaleContext);
|
|
1296
|
+
}
|
|
1297
|
+
var strokeProps = (strokeWidth) => ({
|
|
1298
|
+
stroke: "currentColor",
|
|
1299
|
+
strokeWidth: strokeWidth ?? 1.5,
|
|
1300
|
+
vectorEffect: strokeWidth ? "non-scaling-stroke" : void 0
|
|
1301
|
+
});
|
|
275
1302
|
var Icon_account = (p) => {
|
|
276
1303
|
const { size = 24, ...rest } = p;
|
|
277
1304
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1739,6 +2766,41 @@ var Icon_date = (p) => {
|
|
|
1739
2766
|
}
|
|
1740
2767
|
);
|
|
1741
2768
|
};
|
|
2769
|
+
var Icon_dollar = (p) => {
|
|
2770
|
+
const { size = 24, ...rest } = p;
|
|
2771
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2772
|
+
"svg",
|
|
2773
|
+
{
|
|
2774
|
+
width: size,
|
|
2775
|
+
height: size,
|
|
2776
|
+
viewBox: "0 0 24 24",
|
|
2777
|
+
fill: "none",
|
|
2778
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2779
|
+
...rest,
|
|
2780
|
+
children: [
|
|
2781
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2782
|
+
"path",
|
|
2783
|
+
{
|
|
2784
|
+
d: "M12 5V7.1M12 7.1V12M12 7.1H15.3333M12 7.1H10.3333C9.04467 7.1 8 8.1969 8 9.55C8 10.9031 9.04467 12 10.3333 12H12M12 12V16.9M12 12H13.6667C14.9553 12 16 13.0969 16 14.45C16 15.8031 14.9553 16.9 13.6667 16.9H12M12 16.9V19M12 16.9H8.66667",
|
|
2785
|
+
stroke: "currentColor",
|
|
2786
|
+
strokeWidth: "1.5",
|
|
2787
|
+
strokeLinecap: "round",
|
|
2788
|
+
strokeLinejoin: "round"
|
|
2789
|
+
}
|
|
2790
|
+
),
|
|
2791
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2792
|
+
"path",
|
|
2793
|
+
{
|
|
2794
|
+
d: "M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z",
|
|
2795
|
+
stroke: "currentColor",
|
|
2796
|
+
strokeWidth: "1.5",
|
|
2797
|
+
strokeLinecap: "round"
|
|
2798
|
+
}
|
|
2799
|
+
)
|
|
2800
|
+
]
|
|
2801
|
+
}
|
|
2802
|
+
);
|
|
2803
|
+
};
|
|
1742
2804
|
var Icon_dot = (p) => {
|
|
1743
2805
|
const { size = 24, ...rest } = p;
|
|
1744
2806
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1955,6 +3017,54 @@ var Icon_focus = (p) => {
|
|
|
1955
3017
|
}
|
|
1956
3018
|
);
|
|
1957
3019
|
};
|
|
3020
|
+
var Icon_fullscreen = (p) => {
|
|
3021
|
+
const { size = 24, ...rest } = p;
|
|
3022
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3023
|
+
"svg",
|
|
3024
|
+
{
|
|
3025
|
+
width: size,
|
|
3026
|
+
height: size,
|
|
3027
|
+
viewBox: "0 0 24 24",
|
|
3028
|
+
fill: "none",
|
|
3029
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3030
|
+
...rest,
|
|
3031
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3032
|
+
"path",
|
|
3033
|
+
{
|
|
3034
|
+
d: "M9 3H4C3.44772 3 3 3.44772 3 4V9M15 3H20C20.5523 3 21 3.44772 21 4V9M21 15V20C21 20.5523 20.5523 21 20 21H15M9 21H4C3.44772 21 3 20.5523 3 20V15",
|
|
3035
|
+
stroke: "currentColor",
|
|
3036
|
+
strokeWidth: "1.5",
|
|
3037
|
+
strokeLinecap: "round",
|
|
3038
|
+
strokeLinejoin: "round"
|
|
3039
|
+
}
|
|
3040
|
+
)
|
|
3041
|
+
}
|
|
3042
|
+
);
|
|
3043
|
+
};
|
|
3044
|
+
var Icon_fullscreenExit = (p) => {
|
|
3045
|
+
const { size = 24, ...rest } = p;
|
|
3046
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3047
|
+
"svg",
|
|
3048
|
+
{
|
|
3049
|
+
width: size,
|
|
3050
|
+
height: size,
|
|
3051
|
+
viewBox: "0 0 24 24",
|
|
3052
|
+
fill: "none",
|
|
3053
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
3054
|
+
...rest,
|
|
3055
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3056
|
+
"path",
|
|
3057
|
+
{
|
|
3058
|
+
d: "M3 9H8C8.55228 9 9 8.55228 9 8V3M15 3V8C15 8.55228 15.4477 9 16 9H21M21 15H16C15.4477 15 15 15.4477 15 16V21M9 21V16C9 15.4477 8.55228 15 8 15H3",
|
|
3059
|
+
stroke: "currentColor",
|
|
3060
|
+
strokeWidth: "1.5",
|
|
3061
|
+
strokeLinecap: "round",
|
|
3062
|
+
strokeLinejoin: "round"
|
|
3063
|
+
}
|
|
3064
|
+
)
|
|
3065
|
+
}
|
|
3066
|
+
);
|
|
3067
|
+
};
|
|
1958
3068
|
var Icon_global = (p) => {
|
|
1959
3069
|
const { size = 24, ...rest } = p;
|
|
1960
3070
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1998,7 +3108,8 @@ var Icon_helpFill = (p) => {
|
|
|
1998
3108
|
);
|
|
1999
3109
|
};
|
|
2000
3110
|
var Icon_helpOutline = (p) => {
|
|
2001
|
-
const { size = 24, ...rest } = p;
|
|
3111
|
+
const { size = 24, strokeWidth, ...rest } = p;
|
|
3112
|
+
const stroke = strokeProps(strokeWidth);
|
|
2002
3113
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2003
3114
|
"svg",
|
|
2004
3115
|
{
|
|
@@ -2012,23 +3123,24 @@ var Icon_helpOutline = (p) => {
|
|
|
2012
3123
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2013
3124
|
"path",
|
|
2014
3125
|
{
|
|
2015
|
-
d: "
|
|
2016
|
-
|
|
3126
|
+
d: "M22.1998 11.9998C22.1998 6.3665 17.6331 1.7998 11.9998 1.7998C6.3665 1.7998 1.7998 6.3665 1.7998 11.9998C1.7998 17.6331 6.3665 22.1998 11.9998 22.1998C17.6331 22.1998 22.1998 17.6331 22.1998 11.9998Z",
|
|
3127
|
+
strokeLinecap: "round",
|
|
3128
|
+
...stroke
|
|
2017
3129
|
}
|
|
2018
3130
|
),
|
|
2019
3131
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2020
3132
|
"path",
|
|
2021
3133
|
{
|
|
2022
|
-
d: "
|
|
2023
|
-
|
|
3134
|
+
d: "M8.99982 9.10203C8.99982 8.19294 9.59982 6.37476 11.9998 6.37476C14.3998 6.37476 14.9998 8.19294 14.9998 9.10203C14.9998 9.87031 14.5713 11.2879 12.9899 11.7086C12.4562 11.8506 11.9998 12.277 11.9998 12.8293V13.8748",
|
|
3135
|
+
strokeLinecap: "round",
|
|
3136
|
+
strokeLinejoin: "round",
|
|
3137
|
+
...stroke
|
|
2024
3138
|
}
|
|
2025
3139
|
),
|
|
2026
3140
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2027
3141
|
"path",
|
|
2028
3142
|
{
|
|
2029
|
-
|
|
2030
|
-
clipRule: "evenodd",
|
|
2031
|
-
d: "M12 1.0498C18.0474 1.04991 22.9502 5.95255 22.9502 12C22.9501 18.0474 18.0474 22.9501 12 22.9502C5.95255 22.9502 1.04991 18.0474 1.0498 12C1.0498 5.95248 5.95248 1.0498 12 1.0498ZM12 2.5498C6.78091 2.5498 2.5498 6.78091 2.5498 12C2.54991 17.219 6.78097 21.4502 12 21.4502C17.2189 21.4501 21.4501 17.2189 21.4502 12C21.4502 6.78097 17.219 2.54991 12 2.5498Z",
|
|
3143
|
+
d: "M11.9998 15.7498C12.5521 15.7498 12.9998 16.1975 12.9998 16.7498C12.9998 17.302 12.5521 17.7498 11.9998 17.7498C11.4475 17.7498 10.9998 17.302 10.9998 16.7498C10.9998 16.1975 11.4475 15.7498 11.9998 15.7498Z",
|
|
2032
3144
|
fill: "currentColor"
|
|
2033
3145
|
}
|
|
2034
3146
|
)
|
|
@@ -2557,7 +3669,8 @@ var Icon_notificationFill = (p) => {
|
|
|
2557
3669
|
);
|
|
2558
3670
|
};
|
|
2559
3671
|
var Icon_notificationOutline = (p) => {
|
|
2560
|
-
const { size = 24, ...rest } = p;
|
|
3672
|
+
const { size = 24, strokeWidth, ...rest } = p;
|
|
3673
|
+
const stroke = strokeProps(strokeWidth);
|
|
2561
3674
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2562
3675
|
"svg",
|
|
2563
3676
|
{
|
|
@@ -2571,23 +3684,16 @@ var Icon_notificationOutline = (p) => {
|
|
|
2571
3684
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2572
3685
|
"path",
|
|
2573
3686
|
{
|
|
2574
|
-
d: "
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
),
|
|
2578
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2579
|
-
"path",
|
|
2580
|
-
{
|
|
2581
|
-
d: "M12 6.375C12.4142 6.375 12.75 6.71079 12.75 7.125V13.125C12.75 13.5392 12.4142 13.875 12 13.875C11.5858 13.875 11.25 13.5392 11.25 13.125V7.125C11.25 6.71079 11.5858 6.375 12 6.375Z",
|
|
2582
|
-
fill: "currentColor"
|
|
3687
|
+
d: "M22.2 12C22.2 6.36674 17.6333 1.80005 12 1.80005C6.36668 1.80005 1.79999 6.36674 1.79999 12C1.79999 17.6334 6.36668 22.2 12 22.2C17.6333 22.2 22.2 17.6334 22.2 12Z",
|
|
3688
|
+
strokeLinecap: "round",
|
|
3689
|
+
...stroke
|
|
2583
3690
|
}
|
|
2584
3691
|
),
|
|
3692
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 13.125L12 7.125", strokeLinecap: "round", strokeLinejoin: "round", ...stroke }),
|
|
2585
3693
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2586
3694
|
"path",
|
|
2587
3695
|
{
|
|
2588
|
-
|
|
2589
|
-
clipRule: "evenodd",
|
|
2590
|
-
d: "M12 1.0498C18.0474 1.04991 22.9501 5.95264 22.9502 12C22.9501 18.0474 18.0474 22.9501 12 22.9502C5.95263 22.9501 1.04991 18.0474 1.0498 12C1.04991 5.95263 5.95263 1.0499 12 1.0498ZM12 2.5498C6.78106 2.5499 2.54991 6.78106 2.5498 12C2.54991 17.2189 6.78106 21.4501 12 21.4502C17.2189 21.4501 21.4501 17.2189 21.4502 12C21.4501 6.78107 17.2189 2.54991 12 2.5498Z",
|
|
3696
|
+
d: "M12 15.5C12.5523 15.5 13 15.9477 13 16.5C13 17.0523 12.5523 17.5 12 17.5C11.4477 17.5 11 17.0523 11 16.5C11 15.9477 11.4477 15.5 12 15.5Z",
|
|
2591
3697
|
fill: "currentColor"
|
|
2592
3698
|
}
|
|
2593
3699
|
)
|
|
@@ -3050,7 +4156,8 @@ var Icon_setting = (p) => {
|
|
|
3050
4156
|
);
|
|
3051
4157
|
};
|
|
3052
4158
|
var Icon_settingOutline = (p) => {
|
|
3053
|
-
const { size = 24, ...rest } = p;
|
|
4159
|
+
const { size = 24, strokeWidth, ...rest } = p;
|
|
4160
|
+
const stroke = strokeProps(strokeWidth);
|
|
3054
4161
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3055
4162
|
"svg",
|
|
3056
4163
|
{
|
|
@@ -3061,22 +4168,12 @@ var Icon_settingOutline = (p) => {
|
|
|
3061
4168
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3062
4169
|
...rest,
|
|
3063
4170
|
children: [
|
|
4171
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "3", ...stroke }),
|
|
3064
4172
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3065
4173
|
"path",
|
|
3066
4174
|
{
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
d: "M11.9996 8C14.2087 8 15.9996 9.79086 15.9996 12C15.9996 14.2091 14.2087 16 11.9996 16C9.79065 15.9998 7.9996 14.209 7.9996 12C7.9996 9.791 9.79065 8.00022 11.9996 8ZM11.9996 9.5C10.6191 9.50022 9.4996 10.6194 9.4996 12C9.4996 13.3806 10.6191 14.4998 11.9996 14.5C13.3803 14.5 14.4996 13.3807 14.4996 12C14.4996 10.6193 13.3803 9.5 11.9996 9.5Z",
|
|
3070
|
-
fill: "currentColor"
|
|
3071
|
-
}
|
|
3072
|
-
),
|
|
3073
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3074
|
-
"path",
|
|
3075
|
-
{
|
|
3076
|
-
fillRule: "evenodd",
|
|
3077
|
-
clipRule: "evenodd",
|
|
3078
|
-
d: "M13.1851 1C13.5085 1 13.7979 1.20161 13.9068 1.50293L14.6832 3.65527C14.9613 3.72452 15.2006 3.79367 15.4029 3.86621C15.5134 3.90579 15.64 3.95628 15.7828 4.0166L16.2613 4.22949L18.0689 3.27246C18.2163 3.19438 18.3856 3.16661 18.5504 3.19238C18.7153 3.21835 18.8676 3.29735 18.984 3.41699L20.5748 5.06152C20.7859 5.28042 20.8459 5.60054 20.7271 5.87988L19.8785 7.86719C20.0192 8.12546 20.1316 8.34655 20.2174 8.53125C20.3097 8.73243 20.4239 9.01001 20.5601 9.36719L22.5377 10.2148L22.6432 10.2695C22.8771 10.4155 23.016 10.6779 22.9986 10.9561L22.8531 13.2383L22.8375 13.3486C22.8141 13.4565 22.7672 13.5589 22.6998 13.6475L22.6266 13.7305C22.5476 13.8076 22.4523 13.8674 22.3473 13.9043L20.4752 14.5693C20.4213 14.8278 20.3647 15.0493 20.3053 15.2363L20.1519 15.666C20.0973 15.8078 20.0394 15.9488 19.9781 16.0879L20.9185 18.166L20.9586 18.2793C20.9899 18.3941 20.9942 18.5153 20.9693 18.6328L20.9351 18.7471C20.8923 18.8584 20.823 18.959 20.733 19.0391L18.9449 20.6357L18.8512 20.707C18.753 20.7705 18.6411 20.812 18.524 20.8262L18.4059 20.8311C18.2889 20.8272 18.1732 20.7964 18.0689 20.7412L16.2262 19.7647C15.9378 19.9173 15.6394 20.0519 15.3346 20.168L14.5299 20.4697L13.815 22.4502L13.7672 22.5547C13.7121 22.6552 13.6346 22.7424 13.5406 22.8096L13.442 22.8701C13.3398 22.9219 13.2264 22.9498 13.1109 22.9522L11.0211 23C10.9023 23.0031 10.7841 22.9783 10.6773 22.9287L10.5748 22.8711C10.4431 22.7831 10.3415 22.6557 10.2848 22.5078L9.44198 20.2783C9.1547 20.1801 8.86973 20.0733 8.58847 19.959C8.35848 19.8594 8.13142 19.7518 7.90878 19.6367L5.81894 20.5303L5.71347 20.5664C5.64162 20.5854 5.56705 20.594 5.49276 20.5918L5.38241 20.5801C5.27208 20.5606 5.1671 20.5175 5.07577 20.4541L4.98886 20.3838L3.44198 18.9326C3.35574 18.8519 3.28988 18.7525 3.2496 18.6426L3.21737 18.5303C3.18685 18.376 3.20586 18.2154 3.27109 18.0723L4.1705 16.1143C4.05101 15.8824 3.93933 15.6454 3.83749 15.4053C3.71871 15.1116 3.60934 14.814 3.50839 14.5137L1.53866 13.9141C1.41879 13.8777 1.31002 13.8122 1.22226 13.7246L1.14218 13.6299C1.04481 13.4941 0.994151 13.3291 0.999601 13.1621L1.07675 11.0498C1.08222 10.9121 1.1259 10.7782 1.20175 10.6631C1.25874 10.5767 1.33262 10.5026 1.41855 10.4463L1.50839 10.3965L3.57382 9.4043C3.6695 9.05348 3.75306 8.78014 3.82675 8.58106C3.9305 8.31518 4.0461 8.05376 4.17245 7.79785L3.27694 5.90625C3.20906 5.76263 3.18873 5.6004 3.21835 5.44434C3.24057 5.3276 3.2899 5.21813 3.36191 5.125L3.44198 5.03711L4.98593 3.57813C5.09409 3.47611 5.23034 3.40784 5.37655 3.38086C5.52273 3.354 5.67376 3.37002 5.81112 3.42676L7.89901 4.28906C8.12988 4.13515 8.33881 4.01023 8.52792 3.91016C8.75326 3.79034 9.05504 3.66547 9.43417 3.53027L10.1607 1.50488C10.2143 1.35699 10.3122 1.22899 10.441 1.13867C10.57 1.04839 10.7249 0.999723 10.8824 1H13.1851ZM10.8463 4.03613C10.6946 4.45908 10.3613 4.79149 9.93808 4.94238C9.5875 5.06739 9.36381 5.16528 9.23202 5.23535L9.23007 5.23633C9.09075 5.31005 8.9247 5.40801 8.73105 5.53711C8.31531 5.81413 7.78855 5.86633 7.32675 5.67578L5.67343 4.99219L4.86484 5.75586L5.52792 7.15625C5.72387 7.57031 5.71997 8.05117 5.51718 8.46192C5.41394 8.67102 5.31944 8.88459 5.23398 9.10156L5.14218 9.37598C5.10686 9.491 5.06681 9.63118 5.02109 9.79883C4.90655 10.2184 4.6153 10.5675 4.22323 10.7559L2.55917 11.5547L2.51913 12.6436L3.94491 13.0781L4.11386 13.1416C4.49659 13.3106 4.79411 13.6335 4.92929 14.0352C5.01804 14.2992 5.11534 14.5609 5.21933 14.8193L5.35507 15.126C5.40249 15.2271 5.45233 15.3275 5.50351 15.4268C5.71457 15.8364 5.72588 16.3204 5.53378 16.7393L4.85898 18.2061L5.66659 18.9639L7.31894 18.2578L7.47616 18.2012C7.84698 18.0894 8.24932 18.125 8.59726 18.3047C8.78187 18.4001 8.97024 18.4892 9.16073 18.5723C9.28594 18.6231 9.41211 18.6724 9.53866 18.7197L9.92733 18.8594L10.0816 18.9219C10.4317 19.0869 10.7069 19.382 10.8453 19.748L11.5025 21.4883L12.5748 21.4639L13.1187 19.96L13.1832 19.8096C13.3508 19.4678 13.6433 19.2005 14.0035 19.0654L14.8004 18.7666L15.1676 18.6143C15.288 18.5597 15.4071 18.5013 15.524 18.4395L15.692 18.3623C16.0928 18.2097 16.5441 18.236 16.9283 18.4395L18.3238 19.1787L19.3248 18.2842L18.6109 16.7061C18.4355 16.318 18.4336 15.8732 18.6051 15.4834C18.7075 15.2508 18.7973 15.0126 18.8775 14.7715C18.9163 14.6479 18.9608 14.4825 19.0064 14.2637L19.0582 14.0762C19.2064 13.6503 19.5409 13.3098 19.9723 13.1563L21.3873 12.6523L21.4674 11.3877L19.9703 10.7461C19.5971 10.5861 19.3035 10.2817 19.1588 9.90234C19.0283 9.56034 18.9273 9.31663 18.8541 9.15723C18.7854 9.00988 18.689 8.81973 18.5611 8.58496C18.3418 8.18212 18.3187 7.70024 18.4986 7.27832L19.1519 5.74707L18.2867 4.85352L16.9625 5.55567C16.5475 5.77509 16.0531 5.78799 15.6275 5.58984C15.2974 5.43614 15.0582 5.33606 14.8971 5.27832C14.7581 5.22851 14.5701 5.17338 14.3209 5.11133C13.8356 4.99032 13.4418 4.63455 13.2721 4.16406L12.6715 2.5H11.3971L10.8463 4.03613Z",
|
|
3079
|
-
fill: "currentColor"
|
|
4175
|
+
d: "M13.078 2C13.372 2 13.635 2.183 13.734 2.457L14.4399 4.41397C14.6929 4.47697 14.9099 4.53997 15.0939 4.60597C15.2949 4.67797 15.5539 4.78697 15.8739 4.93597L17.5178 4.06598C17.652 3.99488 17.8056 3.96922 17.9556 3.99284C18.1057 4.01646 18.244 4.08809 18.3498 4.19698L19.7958 5.69196C19.9877 5.89095 20.0417 6.18195 19.9337 6.43595L19.1628 8.24293C19.2908 8.47792 19.3928 8.67892 19.4708 8.84692C19.5548 9.02992 19.6588 9.28191 19.7828 9.60691L21.5797 10.3769C21.8497 10.4919 22.0167 10.7619 21.9987 11.0509L21.8667 13.1259C21.8577 13.2607 21.8093 13.3899 21.7275 13.4974C21.6457 13.605 21.5342 13.6861 21.4067 13.7309L19.7048 14.3359C19.6558 14.5708 19.6048 14.7718 19.5508 14.9418C19.4637 15.2044 19.3642 15.4627 19.2528 15.7158L20.1077 17.6058C20.1681 17.7386 20.1843 17.8872 20.1541 18.0299C20.1239 18.1726 20.0488 18.3019 19.9397 18.3988L18.3138 19.8508C18.2067 19.946 18.0731 20.0062 17.9308 20.0234C17.7886 20.0405 17.6445 20.0138 17.5178 19.9468L15.8419 19.0588C15.5797 19.1976 15.3092 19.3202 15.0319 19.4258L14.2999 19.6998L13.65 21.4998C13.6018 21.6316 13.5149 21.7458 13.4007 21.8273C13.2865 21.9089 13.1503 21.954 13.01 21.9568L11.1101 21.9998C10.966 22.0035 10.8244 21.9626 10.7046 21.8825C10.5848 21.8025 10.4927 21.6873 10.4411 21.5528L9.6751 19.5258C9.41376 19.4365 9.155 19.3398 8.89913 19.2358C8.68985 19.1452 8.48374 19.0475 8.28115 18.9428L6.38122 19.7548C6.25603 19.8082 6.11801 19.8241 5.98397 19.8004C5.84993 19.7768 5.72564 19.7148 5.62624 19.6218L4.22029 18.3028C4.11562 18.205 4.04433 18.0768 4.01651 17.9363C3.9887 17.7958 4.00576 17.6501 4.0653 17.5198L4.88227 15.7398C4.77362 15.529 4.67288 15.3142 4.58028 15.0958C4.47218 14.8286 4.37214 14.5581 4.28029 14.2849L2.49035 13.7399C2.34486 13.6959 2.21795 13.6051 2.12935 13.4816C2.04075 13.3581 1.99541 13.2088 2.00037 13.0569L2.07037 11.1359C2.07535 11.0106 2.1145 10.889 2.18359 10.7843C2.25268 10.6796 2.34907 10.5958 2.46235 10.5419L4.34029 9.63991C4.42728 9.32091 4.50328 9.07292 4.57028 8.89192C4.66462 8.65017 4.76938 8.41261 4.88427 8.17993L4.0703 6.45995C4.00852 6.32933 3.98977 6.18249 4.01672 6.04054C4.04367 5.89859 4.11494 5.76884 4.22029 5.66996L5.62424 4.34397C5.72266 4.25115 5.8458 4.18874 5.97886 4.16426C6.11191 4.13977 6.2492 4.15426 6.37422 4.20598L8.27215 4.98997C8.48214 4.84997 8.67214 4.73697 8.84413 4.64597C9.04912 4.53697 9.32311 4.42297 9.6681 4.29997L10.3281 2.459C10.3769 2.32427 10.4661 2.20788 10.5835 2.12573C10.7009 2.04358 10.8408 1.99967 10.9841 2H13.078Z",
|
|
4176
|
+
...stroke
|
|
3080
4177
|
}
|
|
3081
4178
|
)
|
|
3082
4179
|
]
|
|
@@ -3657,6 +4754,7 @@ var ICONS = {
|
|
|
3657
4754
|
coupon: Icon_coupon,
|
|
3658
4755
|
dashboard: Icon_dashboard,
|
|
3659
4756
|
date: Icon_date,
|
|
4757
|
+
dollar: Icon_dollar,
|
|
3660
4758
|
dot: Icon_dot,
|
|
3661
4759
|
download: Icon_download,
|
|
3662
4760
|
drag: Icon_drag,
|
|
@@ -3664,6 +4762,8 @@ var ICONS = {
|
|
|
3664
4762
|
etc: Icon_etc,
|
|
3665
4763
|
event: Icon_event,
|
|
3666
4764
|
focus: Icon_focus,
|
|
4765
|
+
fullscreen: Icon_fullscreen,
|
|
4766
|
+
fullscreenExit: Icon_fullscreenExit,
|
|
3667
4767
|
global: Icon_global,
|
|
3668
4768
|
helpFill: Icon_helpFill,
|
|
3669
4769
|
helpOutline: Icon_helpOutline,
|
|
@@ -3720,6 +4820,19 @@ var ICONS = {
|
|
|
3720
4820
|
warningOutline: Icon_warningOutline,
|
|
3721
4821
|
youtube: Icon_youtube
|
|
3722
4822
|
};
|
|
4823
|
+
var STROKE_BY_SIZE = {
|
|
4824
|
+
8: 1,
|
|
4825
|
+
10: 1,
|
|
4826
|
+
12: 1,
|
|
4827
|
+
16: 1.25,
|
|
4828
|
+
20: 1.5,
|
|
4829
|
+
24: 1.5,
|
|
4830
|
+
32: 2
|
|
4831
|
+
};
|
|
4832
|
+
function toPx(size) {
|
|
4833
|
+
if (typeof size === "number") return size;
|
|
4834
|
+
return /^\d+(\.\d+)?(px)?$/.test(size) ? parseFloat(size) : void 0;
|
|
4835
|
+
}
|
|
3723
4836
|
var SIcon = /* @__PURE__ */ react.forwardRef(function SIcon2({ name, size = 24, color, rotate, label, className, style }, ref) {
|
|
3724
4837
|
const Svg = ICONS[name];
|
|
3725
4838
|
if (!Svg) return null;
|
|
@@ -3738,7 +4851,7 @@ var SIcon = /* @__PURE__ */ react.forwardRef(function SIcon2({ name, size = 24,
|
|
|
3738
4851
|
role: label ? "img" : void 0,
|
|
3739
4852
|
"aria-label": label,
|
|
3740
4853
|
"aria-hidden": label ? void 0 : true,
|
|
3741
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Svg, { size: cssSize ? "100%" : size })
|
|
4854
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Svg, { size: cssSize ? "100%" : size, strokeWidth: STROKE_BY_SIZE[toPx(size) ?? 0] })
|
|
3742
4855
|
}
|
|
3743
4856
|
);
|
|
3744
4857
|
});
|
|
@@ -4377,6 +5490,7 @@ function SFooter({
|
|
|
4377
5490
|
leftClassName,
|
|
4378
5491
|
style
|
|
4379
5492
|
}) {
|
|
5493
|
+
const tc = useLocale().messages.common;
|
|
4380
5494
|
const isGrey = bg === "grey";
|
|
4381
5495
|
const hasSlot = left != null || children != null;
|
|
4382
5496
|
const hasButton = button != null;
|
|
@@ -4408,7 +5522,7 @@ function SFooter({
|
|
|
4408
5522
|
...button,
|
|
4409
5523
|
size,
|
|
4410
5524
|
color: button.color ?? "primary",
|
|
4411
|
-
label: button.label ??
|
|
5525
|
+
label: button.label ?? tc.confirm
|
|
4412
5526
|
}
|
|
4413
5527
|
)
|
|
4414
5528
|
]
|
|
@@ -4789,6 +5903,7 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4789
5903
|
style,
|
|
4790
5904
|
contentProps
|
|
4791
5905
|
}, ref) {
|
|
5906
|
+
const tc = useLocale().messages.common;
|
|
4792
5907
|
const portalContainer = usePortalContainer();
|
|
4793
5908
|
const [internalOpen, setInternalOpen] = react.useState(false);
|
|
4794
5909
|
const isControlled = openProp !== void 0;
|
|
@@ -4906,7 +6021,7 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4906
6021
|
icon: "close",
|
|
4907
6022
|
size: "xs",
|
|
4908
6023
|
intent: tooltipType === "default" ? "inverse" : "default",
|
|
4909
|
-
ariaLabel:
|
|
6024
|
+
ariaLabel: tc.close,
|
|
4910
6025
|
className: "shrink-0",
|
|
4911
6026
|
onClick: () => {
|
|
4912
6027
|
cancelHide();
|
|
@@ -4922,14 +6037,21 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4922
6037
|
] });
|
|
4923
6038
|
});
|
|
4924
6039
|
var STooltip2 = /* @__PURE__ */ withDisplayName(STooltipImpl, "STooltip");
|
|
4925
|
-
function runRules(value, rules) {
|
|
6040
|
+
function runRules(value, rules, invalidMessage = "\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uAC12\uC785\uB2C8\uB2E4.") {
|
|
4926
6041
|
if (!rules || rules.length === 0) return "";
|
|
4927
6042
|
for (const rule of rules) {
|
|
4928
6043
|
const result = rule(value ?? "");
|
|
4929
|
-
if (result !== true) return typeof result === "string" ? result :
|
|
6044
|
+
if (result !== true) return typeof result === "string" ? result : invalidMessage;
|
|
4930
6045
|
}
|
|
4931
6046
|
return "";
|
|
4932
6047
|
}
|
|
6048
|
+
function useRunRules() {
|
|
6049
|
+
const invalid = useLocale().messages.form.invalid;
|
|
6050
|
+
return react.useCallback(
|
|
6051
|
+
(value, rules) => runRules(value, rules, invalid),
|
|
6052
|
+
[invalid]
|
|
6053
|
+
);
|
|
6054
|
+
}
|
|
4933
6055
|
var FormContext = /* @__PURE__ */ react.createContext(null);
|
|
4934
6056
|
function useFormContext() {
|
|
4935
6057
|
return react.useContext(FormContext);
|
|
@@ -5261,12 +6383,15 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
5261
6383
|
width,
|
|
5262
6384
|
disabled = false,
|
|
5263
6385
|
readOnly = false,
|
|
5264
|
-
placeholder
|
|
6386
|
+
placeholder: placeholderProp,
|
|
5265
6387
|
onBlur,
|
|
5266
6388
|
className,
|
|
5267
6389
|
style,
|
|
5268
6390
|
...rest
|
|
5269
6391
|
}, ref) {
|
|
6392
|
+
const runRules2 = useRunRules();
|
|
6393
|
+
const ti = useLocale().messages.input;
|
|
6394
|
+
const placeholder = placeholderProp ?? ti.placeholder;
|
|
5270
6395
|
const p = TEXTAREA_SIZE[size];
|
|
5271
6396
|
const heightForRows = (n) => `calc(${p.lineHeight * n}px + ${p.paddingY} * 2)`;
|
|
5272
6397
|
const minHeight = heightForRows(MIN_ROWS);
|
|
@@ -5301,7 +6426,7 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
5301
6426
|
useFormField({
|
|
5302
6427
|
name: rest.name,
|
|
5303
6428
|
validate: () => {
|
|
5304
|
-
const msg =
|
|
6429
|
+
const msg = runRules2(value, rules);
|
|
5305
6430
|
setRuleError(msg);
|
|
5306
6431
|
return msg === "";
|
|
5307
6432
|
},
|
|
@@ -5350,11 +6475,11 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
5350
6475
|
onChange: (e) => {
|
|
5351
6476
|
onChange?.(e);
|
|
5352
6477
|
onValueChange?.(e.target.value);
|
|
5353
|
-
if (ruleError !== "") setRuleError(
|
|
6478
|
+
if (ruleError !== "") setRuleError(runRules2(e.target.value, rules));
|
|
5354
6479
|
},
|
|
5355
6480
|
onBlur: (e) => {
|
|
5356
6481
|
onBlur?.(e);
|
|
5357
|
-
if (rules && rules.length > 0) setRuleError(
|
|
6482
|
+
if (rules && rules.length > 0) setRuleError(runRules2(e.target.value, rules));
|
|
5358
6483
|
},
|
|
5359
6484
|
className: cn(
|
|
5360
6485
|
"w-full border-0 bg-transparent outline-none placeholder:text-[color:var(--sys-color-field-text-placeholder)] disabled:cursor-not-allowed",
|
|
@@ -5381,7 +6506,6 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
5381
6506
|
}
|
|
5382
6507
|
);
|
|
5383
6508
|
});
|
|
5384
|
-
var DEFAULT_PLACEHOLDER = "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694...";
|
|
5385
6509
|
var FIELD_BORDER = 1;
|
|
5386
6510
|
var TEXTAREA_MIN_HEIGHT = `calc(var(--cmp-chatInput-buttonFrame-height) - ${FIELD_BORDER * 2}px)`;
|
|
5387
6511
|
var BUTTON_BOTTOM_INSET = `calc((var(--cmp-chatInput-buttonFrame-height) - var(--cmp-ghostButton-md-size)) / 2)`;
|
|
@@ -5392,7 +6516,7 @@ function BarButton(props) {
|
|
|
5392
6516
|
var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
5393
6517
|
value = "",
|
|
5394
6518
|
onValueChange,
|
|
5395
|
-
placeholder
|
|
6519
|
+
placeholder: placeholderProp,
|
|
5396
6520
|
disabled = false,
|
|
5397
6521
|
onSend,
|
|
5398
6522
|
hasAttachments = false,
|
|
@@ -5413,6 +6537,8 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
5413
6537
|
textareaClassName,
|
|
5414
6538
|
...rest
|
|
5415
6539
|
}, ref) {
|
|
6540
|
+
const t = useLocale().messages.chat;
|
|
6541
|
+
const placeholder = placeholderProp ?? t.placeholder;
|
|
5416
6542
|
const hasText = value.trim() !== "";
|
|
5417
6543
|
const canSend = !disabled && !busy && !sendDisabled && (hasText || hasAttachments);
|
|
5418
6544
|
const send = () => {
|
|
@@ -5452,7 +6578,7 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
5452
6578
|
BarButton,
|
|
5453
6579
|
{
|
|
5454
6580
|
icon: "attachFile",
|
|
5455
|
-
ariaLabel:
|
|
6581
|
+
ariaLabel: t.attachFile,
|
|
5456
6582
|
tooltipText: attachTooltip,
|
|
5457
6583
|
disabled: attachLocked,
|
|
5458
6584
|
onClick: handleAttachClick
|
|
@@ -5498,7 +6624,7 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
5498
6624
|
{
|
|
5499
6625
|
icon: "stop",
|
|
5500
6626
|
intent: "danger",
|
|
5501
|
-
ariaLabel:
|
|
6627
|
+
ariaLabel: t.stopResponse,
|
|
5502
6628
|
disabled,
|
|
5503
6629
|
onClick: onStop
|
|
5504
6630
|
}
|
|
@@ -5508,7 +6634,7 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
5508
6634
|
{
|
|
5509
6635
|
icon: "send",
|
|
5510
6636
|
intent: "subAction",
|
|
5511
|
-
ariaLabel:
|
|
6637
|
+
ariaLabel: t.send,
|
|
5512
6638
|
disabled: !canSend,
|
|
5513
6639
|
onClick: send
|
|
5514
6640
|
}
|
|
@@ -5539,6 +6665,7 @@ var CHAT_ATTACHED_FILE_CONFIG = {
|
|
|
5539
6665
|
};
|
|
5540
6666
|
var SChatAttachedFileImpl = /* @__PURE__ */ react.forwardRef(
|
|
5541
6667
|
function SChatAttachedFile({ name, onRemove, className, ...rest }, ref) {
|
|
6668
|
+
const t = useLocale().messages.chat;
|
|
5542
6669
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5543
6670
|
"div",
|
|
5544
6671
|
{
|
|
@@ -5579,7 +6706,7 @@ var SChatAttachedFileImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
5579
6706
|
{
|
|
5580
6707
|
icon: "close",
|
|
5581
6708
|
size: "xs",
|
|
5582
|
-
ariaLabel:
|
|
6709
|
+
ariaLabel: t.removeAttachment(name),
|
|
5583
6710
|
onClick: onRemove,
|
|
5584
6711
|
className: "shrink-0"
|
|
5585
6712
|
}
|
|
@@ -5706,10 +6833,6 @@ var OUTGOING_SURFACE = {
|
|
|
5706
6833
|
admin: "admin"
|
|
5707
6834
|
};
|
|
5708
6835
|
var CHAT_MESSAGE_READ_STATUSES = ["read", "unread"];
|
|
5709
|
-
var READ_STATUS_LABEL = {
|
|
5710
|
-
read: "\uC77D\uC74C",
|
|
5711
|
-
unread: "\uC548 \uC77D\uC74C"
|
|
5712
|
-
};
|
|
5713
6836
|
var READ_STATUS_COLOR = {
|
|
5714
6837
|
read: "text-(--cmp-chatTimeStamp-color)",
|
|
5715
6838
|
unread: "text-(--cmp-chatReadMark-color)"
|
|
@@ -5758,6 +6881,7 @@ var SChatMessageImpl = /* @__PURE__ */ react.forwardRef(function SChatMessage({
|
|
|
5758
6881
|
className,
|
|
5759
6882
|
...rest
|
|
5760
6883
|
}, ref) {
|
|
6884
|
+
const t = useLocale().messages.chat;
|
|
5761
6885
|
const outgoing = direction === "outgoing";
|
|
5762
6886
|
const surface = outgoing ? OUTGOING_SURFACE[variant] : "incoming";
|
|
5763
6887
|
const bubbles = messages ?? [];
|
|
@@ -5828,7 +6952,7 @@ var SChatMessageImpl = /* @__PURE__ */ react.forwardRef(function SChatMessage({
|
|
|
5828
6952
|
),
|
|
5829
6953
|
(readStatus != null || time != null) && // 읽음 표시와 시각은 한 줄에 선다 — 읽음이 먼저, 시각이 뒤다.
|
|
5830
6954
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-(--cmp-chatMessage-subData-gap) px-(--cmp-chatMessage-subData-paddingX)", children: [
|
|
5831
|
-
readStatus != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("typo-body-sm-bold", READ_STATUS_COLOR[readStatus]), children:
|
|
6955
|
+
readStatus != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("typo-body-sm-bold", READ_STATUS_COLOR[readStatus]), children: t[readStatus] }),
|
|
5832
6956
|
time != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-medium text-(--cmp-chatTimeStamp-color)", children: time })
|
|
5833
6957
|
] }),
|
|
5834
6958
|
actions != null && // 버튼이 많아 한 줄에 안 들어가면 감싼다 — 넘쳐서 잘리는 것보다 낫다.
|
|
@@ -5926,6 +7050,7 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
5926
7050
|
style,
|
|
5927
7051
|
...rest
|
|
5928
7052
|
}, ref) {
|
|
7053
|
+
const tc = useLocale().messages.common;
|
|
5929
7054
|
const renderState = { hovered, dragging, disabled };
|
|
5930
7055
|
const titleNode = renderSlot(title, renderState);
|
|
5931
7056
|
const supportingTextNode = renderSlot(supportingText, renderState);
|
|
@@ -5989,7 +7114,7 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
5989
7114
|
...dragHandleProps,
|
|
5990
7115
|
role: dragHandleProps?.role ?? "button",
|
|
5991
7116
|
tabIndex: dragHandleProps?.tabIndex ?? (disabled ? -1 : 0),
|
|
5992
|
-
"aria-label": dragHandleProps?.["aria-label"] ??
|
|
7117
|
+
"aria-label": dragHandleProps?.["aria-label"] ?? tc.dragHandle,
|
|
5993
7118
|
"aria-disabled": disabled || void 0,
|
|
5994
7119
|
onMouseDown: onDragHandleMouseDown,
|
|
5995
7120
|
className: cn(
|
|
@@ -7594,7 +8719,6 @@ var SLogo = /* @__PURE__ */ react.forwardRef(function SLogo2({
|
|
|
7594
8719
|
}
|
|
7595
8720
|
);
|
|
7596
8721
|
});
|
|
7597
|
-
var BUTTON_LABEL = "\uD1B5\uD569 \uACC4\uC815\uC73C\uB85C \uB85C\uADF8\uC778";
|
|
7598
8722
|
var SERVICE_LABEL = {
|
|
7599
8723
|
sellmate: "Sellmate",
|
|
7600
8724
|
wms: "Sellmate WMS",
|
|
@@ -7610,6 +8734,7 @@ var SERVICE_LABEL = {
|
|
|
7610
8734
|
};
|
|
7611
8735
|
var LOGO_SIZE = 70;
|
|
7612
8736
|
var SLoginCardImpl = /* @__PURE__ */ react.forwardRef(function SLoginCard({ service, title, description, onLogin, footerNote, bottomAction, className, ...rest }, ref) {
|
|
8737
|
+
const t = useLocale().messages.loginCard;
|
|
7613
8738
|
const hasIntro = title != null || description != null;
|
|
7614
8739
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7615
8740
|
"div",
|
|
@@ -7657,7 +8782,7 @@ var SLoginCardImpl = /* @__PURE__ */ react.forwardRef(function SLoginCard({ serv
|
|
|
7657
8782
|
{
|
|
7658
8783
|
color: "secondary",
|
|
7659
8784
|
size: "lg",
|
|
7660
|
-
label:
|
|
8785
|
+
label: t.login,
|
|
7661
8786
|
onClick: onLogin,
|
|
7662
8787
|
className: "w-[320px]"
|
|
7663
8788
|
}
|
|
@@ -7912,7 +9037,7 @@ function TreeConnector({
|
|
|
7912
9037
|
] });
|
|
7913
9038
|
}
|
|
7914
9039
|
function TreeAllRow({
|
|
7915
|
-
label
|
|
9040
|
+
label: labelProp,
|
|
7916
9041
|
selected,
|
|
7917
9042
|
indeterminate = false,
|
|
7918
9043
|
size = "sm",
|
|
@@ -7924,6 +9049,8 @@ function TreeAllRow({
|
|
|
7924
9049
|
className,
|
|
7925
9050
|
...rest
|
|
7926
9051
|
}) {
|
|
9052
|
+
const tc = useLocale().messages.common;
|
|
9053
|
+
const label = labelProp ?? tc.all;
|
|
7927
9054
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7928
9055
|
"div",
|
|
7929
9056
|
{
|
|
@@ -7971,7 +9098,7 @@ function collectSelectableIds(node) {
|
|
|
7971
9098
|
function toSelectedSet(value) {
|
|
7972
9099
|
return new Set(value ?? []);
|
|
7973
9100
|
}
|
|
7974
|
-
var
|
|
9101
|
+
var TREE_ALL_ID = "__all__";
|
|
7975
9102
|
function getSelectionState(node, selectedSet) {
|
|
7976
9103
|
const selectableChildren = (node.children ?? []).filter(
|
|
7977
9104
|
(child) => collectSelectableIds(child).length > 0
|
|
@@ -8170,6 +9297,8 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8170
9297
|
className,
|
|
8171
9298
|
...rest
|
|
8172
9299
|
}, ref) {
|
|
9300
|
+
const tc = useLocale().messages.common;
|
|
9301
|
+
const allNode = react.useMemo(() => ({ id: TREE_ALL_ID, label: tc.all }), [tc.all]);
|
|
8173
9302
|
const [internalValue, setInternalValue] = react.useState(defaultValue ?? []);
|
|
8174
9303
|
const [internalExpandedIds, setInternalExpandedIds] = react.useState(
|
|
8175
9304
|
defaultExpandedIds ?? items.filter((item4) => item4.children?.length).map((item4) => item4.id)
|
|
@@ -8186,7 +9315,7 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8186
9315
|
const visibleRows = react.useMemo(() => {
|
|
8187
9316
|
const rows = [];
|
|
8188
9317
|
if (showAllItem) {
|
|
8189
|
-
rows.push({ id:
|
|
9318
|
+
rows.push({ id: TREE_ALL_ID, node: allNode, parentId: null, expanded: false });
|
|
8190
9319
|
}
|
|
8191
9320
|
const walk = (nodes, parentId) => {
|
|
8192
9321
|
nodes.forEach((node) => {
|
|
@@ -8197,7 +9326,7 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8197
9326
|
};
|
|
8198
9327
|
walk(items, null);
|
|
8199
9328
|
return rows;
|
|
8200
|
-
}, [items, expandedSet, showAllItem]);
|
|
9329
|
+
}, [items, expandedSet, showAllItem, allNode]);
|
|
8201
9330
|
const [focusedId, setFocusedId] = react.useState(null);
|
|
8202
9331
|
const activeRowId = focusedId != null && visibleRows.some((row) => row.id === focusedId) ? focusedId : visibleRows[0]?.id ?? null;
|
|
8203
9332
|
const treeRef = react.useRef(null);
|
|
@@ -8242,7 +9371,7 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8242
9371
|
});
|
|
8243
9372
|
const orderedIds = collectIds(items).filter((id) => next.has(id));
|
|
8244
9373
|
if (value === void 0) setInternalValue(orderedIds);
|
|
8245
|
-
onValueChange?.(orderedIds,
|
|
9374
|
+
onValueChange?.(orderedIds, allNode);
|
|
8246
9375
|
};
|
|
8247
9376
|
const handleTreeKeyDown = (event) => {
|
|
8248
9377
|
const target = event.target;
|
|
@@ -8286,7 +9415,7 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8286
9415
|
}
|
|
8287
9416
|
case "Enter":
|
|
8288
9417
|
case " ": {
|
|
8289
|
-
if (row.id ===
|
|
9418
|
+
if (row.id === TREE_ALL_ID) updateAllSelected();
|
|
8290
9419
|
else if (selectable) updateSelected(row.node);
|
|
8291
9420
|
else if (hasChildren) updateExpanded(row.node);
|
|
8292
9421
|
else return;
|
|
@@ -8347,8 +9476,8 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
8347
9476
|
showAllItem && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8348
9477
|
STreeAllItem,
|
|
8349
9478
|
{
|
|
8350
|
-
rowId:
|
|
8351
|
-
tabIndex: activeRowId ===
|
|
9479
|
+
rowId: TREE_ALL_ID,
|
|
9480
|
+
tabIndex: activeRowId === TREE_ALL_ID ? 0 : -1,
|
|
8352
9481
|
onKeyDown: handleTreeKeyDown,
|
|
8353
9482
|
selected: allSelected,
|
|
8354
9483
|
indeterminate: allIndeterminate,
|
|
@@ -8984,7 +10113,6 @@ var SURFACE = {
|
|
|
8984
10113
|
content: "var(--cmp-callout-default-content)"
|
|
8985
10114
|
}
|
|
8986
10115
|
};
|
|
8987
|
-
var DANGER_TITLE_LABEL = "\uC8FC\uC758\uC0AC\uD56D";
|
|
8988
10116
|
function renderItems(message, depth = 1) {
|
|
8989
10117
|
const out = [];
|
|
8990
10118
|
message.forEach((m, i) => {
|
|
@@ -9016,6 +10144,7 @@ function renderItems(message, depth = 1) {
|
|
|
9016
10144
|
return out;
|
|
9017
10145
|
}
|
|
9018
10146
|
var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "default", showTitle = true, message = [], children, className, style }, ref) {
|
|
10147
|
+
const t = useLocale().messages.callout;
|
|
9019
10148
|
const hasDangerTitle = type === "danger" && showTitle;
|
|
9020
10149
|
const surface = SURFACE[type];
|
|
9021
10150
|
const vars = {
|
|
@@ -9052,7 +10181,7 @@ var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "def
|
|
|
9052
10181
|
color: "var(--cmp-callout-danger-title-color)"
|
|
9053
10182
|
}
|
|
9054
10183
|
),
|
|
9055
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children:
|
|
10184
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: t.dangerTitle })
|
|
9056
10185
|
]
|
|
9057
10186
|
}
|
|
9058
10187
|
),
|
|
@@ -9600,6 +10729,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9600
10729
|
className,
|
|
9601
10730
|
style
|
|
9602
10731
|
}, ref) {
|
|
10732
|
+
const tc = useLocale().messages.common;
|
|
9603
10733
|
const insideModal = useInsideModal();
|
|
9604
10734
|
const [open, setOpen] = react.useState(false);
|
|
9605
10735
|
const splitWrapRef = react.useRef(null);
|
|
@@ -9706,7 +10836,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9706
10836
|
ref: splitToggleRef,
|
|
9707
10837
|
type: "button",
|
|
9708
10838
|
disabled,
|
|
9709
|
-
"aria-label":
|
|
10839
|
+
"aria-label": tc.openMenu,
|
|
9710
10840
|
className: cn(
|
|
9711
10841
|
triggerBase,
|
|
9712
10842
|
"justify-center border-l-[length:var(--cmp-button-border-width-default)]"
|
|
@@ -9753,14 +10883,12 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9753
10883
|
}
|
|
9754
10884
|
);
|
|
9755
10885
|
var SDropdownButton2 = /* @__PURE__ */ withDisplayName(SDropdownButtonImpl, "SDropdownButton");
|
|
9756
|
-
var DEFAULT_LABEL = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30";
|
|
9757
10886
|
var SMeatballButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
9758
10887
|
function SMeatballButton({
|
|
9759
10888
|
size = "sm",
|
|
9760
10889
|
intent = "default",
|
|
9761
10890
|
items = [],
|
|
9762
|
-
|
|
9763
|
-
tooltipText = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30",
|
|
10891
|
+
tooltipText: tooltipTextProp,
|
|
9764
10892
|
ariaLabel,
|
|
9765
10893
|
disabled = false,
|
|
9766
10894
|
onItemClick,
|
|
@@ -9769,6 +10897,8 @@ var SMeatballButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9769
10897
|
style
|
|
9770
10898
|
}, ref) {
|
|
9771
10899
|
const insideModal = useInsideModal();
|
|
10900
|
+
const tc = useLocale().messages.common;
|
|
10901
|
+
const tooltipText = tooltipTextProp ?? tc.moreActions;
|
|
9772
10902
|
const [open, setOpen] = react.useState(false);
|
|
9773
10903
|
const buttonRef = react.useRef(null);
|
|
9774
10904
|
const pointerRef = react.useRef(false);
|
|
@@ -9784,7 +10914,7 @@ var SMeatballButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9784
10914
|
}),
|
|
9785
10915
|
[]
|
|
9786
10916
|
);
|
|
9787
|
-
const label = ariaLabel?.trim() || tooltipText.trim() ||
|
|
10917
|
+
const label = ariaLabel?.trim() || tooltipText.trim() || tc.moreActions;
|
|
9788
10918
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9789
10919
|
RDropdown5__namespace.Root,
|
|
9790
10920
|
{
|
|
@@ -10167,13 +11297,14 @@ function Row({
|
|
|
10167
11297
|
}
|
|
10168
11298
|
var SAccountListBox = /* @__PURE__ */ react.forwardRef(
|
|
10169
11299
|
function SAccountListBox2({ email, name, authority, accountSetting, language, logout, className, style, ...rest }, ref) {
|
|
11300
|
+
const tl = useLocale().messages.accountListBox;
|
|
10170
11301
|
const hasUserdata = email != null || name != null || authority != null;
|
|
10171
11302
|
const languageOptions = language?.options ?? [];
|
|
10172
11303
|
const hasLanguageMenu = languageOptions.length > 0;
|
|
10173
11304
|
const [languageMenuOpen, setLanguageMenuOpen] = react.useState(false);
|
|
10174
11305
|
const languageValueRef = react.useRef(null);
|
|
10175
11306
|
const languageRowRef = react.useRef(null);
|
|
10176
|
-
const languageLabel = language?.label ??
|
|
11307
|
+
const languageLabel = language?.label ?? tl.language;
|
|
10177
11308
|
const languageDoesNothing = Boolean(language) && !hasLanguageMenu && !language?.onClick;
|
|
10178
11309
|
react.useEffect(() => {
|
|
10179
11310
|
if (isDev() && languageDoesNothing) {
|
|
@@ -10226,7 +11357,7 @@ var SAccountListBox = /* @__PURE__ */ react.forwardRef(
|
|
|
10226
11357
|
Row,
|
|
10227
11358
|
{
|
|
10228
11359
|
icon: ACCOUNT_LIST_BOX_ICONS.accountSetting,
|
|
10229
|
-
label: accountSetting.label ??
|
|
11360
|
+
label: accountSetting.label ?? tl.accountSetting,
|
|
10230
11361
|
onClick: accountSetting.onClick
|
|
10231
11362
|
}
|
|
10232
11363
|
),
|
|
@@ -10270,7 +11401,7 @@ var SAccountListBox = /* @__PURE__ */ react.forwardRef(
|
|
|
10270
11401
|
{
|
|
10271
11402
|
tone: "negative",
|
|
10272
11403
|
icon: ACCOUNT_LIST_BOX_ICONS.logout,
|
|
10273
|
-
label: logout?.label ??
|
|
11404
|
+
label: logout?.label ?? tl.logout,
|
|
10274
11405
|
onClick: logout?.onClick
|
|
10275
11406
|
}
|
|
10276
11407
|
)
|
|
@@ -10449,7 +11580,17 @@ function TokenIcon2({ name, size }) {
|
|
|
10449
11580
|
return /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name, size: "100%", style: { width: size, height: size } });
|
|
10450
11581
|
}
|
|
10451
11582
|
var SSystemActionButton = /* @__PURE__ */ react.forwardRef(
|
|
10452
|
-
function SSystemActionButton2({
|
|
11583
|
+
function SSystemActionButton2({
|
|
11584
|
+
color = "light",
|
|
11585
|
+
type,
|
|
11586
|
+
label,
|
|
11587
|
+
labelSlot,
|
|
11588
|
+
option,
|
|
11589
|
+
disabled = false,
|
|
11590
|
+
className,
|
|
11591
|
+
style,
|
|
11592
|
+
...rest
|
|
11593
|
+
}, ref) {
|
|
10453
11594
|
const c = SYSTEM_ACTION_BUTTON_COLOR_CONFIG[color];
|
|
10454
11595
|
const spec = SYSTEM_ACTION_BUTTON_TYPE_CONFIG[type];
|
|
10455
11596
|
const listBox = type === "account" ? option ?? {} : void 0;
|
|
@@ -10537,7 +11678,19 @@ var SSystemActionButton = /* @__PURE__ */ react.forwardRef(
|
|
|
10537
11678
|
icon: "dot",
|
|
10538
11679
|
label: selected?.label ?? status.value
|
|
10539
11680
|
}
|
|
10540
|
-
) : /* @__PURE__ */ jsxRuntime.
|
|
11681
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11682
|
+
label != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: label }),
|
|
11683
|
+
labelSlot != null && // 라벨↔슬롯 간격에 대응 토큰이 없어 아이콘↔라벨 간격을 같은 호흡으로 쓴다.
|
|
11684
|
+
// 라벨이 없으면 슬롯이 아이콘 바로 옆에서 시작하도록 간격은 라벨이 있을 때만 준다.
|
|
11685
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11686
|
+
"span",
|
|
11687
|
+
{
|
|
11688
|
+
className: "inline-flex shrink-0 items-center",
|
|
11689
|
+
style: label != null ? { marginLeft: SYSTEM_ACTION_BUTTON_LAYOUT.iconLabelGap } : void 0,
|
|
11690
|
+
children: labelSlot
|
|
11691
|
+
}
|
|
11692
|
+
)
|
|
11693
|
+
] }) }),
|
|
10541
11694
|
(actionText != null || spec.actionIcon) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex shrink-0 items-center", style: { gap: SYSTEM_ACTION_BUTTON_LAYOUT.actionGap }, children: [
|
|
10542
11695
|
actionText != null && spec.actionText && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10543
11696
|
"span",
|
|
@@ -10661,6 +11814,7 @@ function SPopover({
|
|
|
10661
11814
|
menuClassName,
|
|
10662
11815
|
style
|
|
10663
11816
|
}) {
|
|
11817
|
+
const tc = useLocale().messages.common;
|
|
10664
11818
|
const portalContainer = usePortalContainer();
|
|
10665
11819
|
const [internalOpen, setInternalOpen] = react.useState(defaultOpen ?? false);
|
|
10666
11820
|
const isControlled = open !== void 0;
|
|
@@ -10699,7 +11853,7 @@ function SPopover({
|
|
|
10699
11853
|
{
|
|
10700
11854
|
icon: "close",
|
|
10701
11855
|
size: "xs",
|
|
10702
|
-
ariaLabel:
|
|
11856
|
+
ariaLabel: tc.close,
|
|
10703
11857
|
onClick: () => setOpen(false),
|
|
10704
11858
|
className: "absolute right-[12px] top-[12px]"
|
|
10705
11859
|
}
|
|
@@ -10816,7 +11970,6 @@ var SPopup = /* @__PURE__ */ react.forwardRef(function SPopup2({
|
|
|
10816
11970
|
}
|
|
10817
11971
|
);
|
|
10818
11972
|
});
|
|
10819
|
-
var DEFAULT_LABEL2 = { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" };
|
|
10820
11973
|
var ICON = { tip: "helpOutline", notion: "notion" };
|
|
10821
11974
|
var VIEWPORT_GUTTER = 24;
|
|
10822
11975
|
var CLOSE_INSET = 12;
|
|
@@ -10834,11 +11987,12 @@ function SGuide({
|
|
|
10834
11987
|
className,
|
|
10835
11988
|
style
|
|
10836
11989
|
}) {
|
|
11990
|
+
const tg = useLocale().messages.guide;
|
|
10837
11991
|
const [open, setOpen] = react.useState(false);
|
|
10838
11992
|
const portalContainer = usePortalContainer();
|
|
10839
11993
|
const isNotion = type === "notion";
|
|
10840
11994
|
const isAutoWidth = popupWidth === "auto";
|
|
10841
|
-
const defaultLabel =
|
|
11995
|
+
const defaultLabel = type === "notion" ? tg.notion : tg.tip;
|
|
10842
11996
|
const iconName = ICON[type];
|
|
10843
11997
|
const messages = flattenMessages(message);
|
|
10844
11998
|
const active = open;
|
|
@@ -10983,7 +12137,7 @@ var CLOSE_ANIMATION_DURATION = 300;
|
|
|
10983
12137
|
function SModalContainer({
|
|
10984
12138
|
open,
|
|
10985
12139
|
onOpenChange,
|
|
10986
|
-
ariaTitle
|
|
12140
|
+
ariaTitle: ariaTitleProp,
|
|
10987
12141
|
showClose = false,
|
|
10988
12142
|
onClose,
|
|
10989
12143
|
persistent = true,
|
|
@@ -10993,6 +12147,8 @@ function SModalContainer({
|
|
|
10993
12147
|
className,
|
|
10994
12148
|
style
|
|
10995
12149
|
}) {
|
|
12150
|
+
const { common: tc, modal: tm } = useLocale().messages;
|
|
12151
|
+
const ariaTitle = ariaTitleProp ?? tm.defaultTitle;
|
|
10996
12152
|
const [shaking, setShaking] = react.useState(false);
|
|
10997
12153
|
const [rendered, setRendered] = react.useState(() => Boolean(open));
|
|
10998
12154
|
const contentRef = react.useRef(null);
|
|
@@ -11086,7 +12242,7 @@ function SModalContainer({
|
|
|
11086
12242
|
SGhostButton,
|
|
11087
12243
|
{
|
|
11088
12244
|
icon: "close",
|
|
11089
|
-
ariaLabel:
|
|
12245
|
+
ariaLabel: tc.close,
|
|
11090
12246
|
onClick: () => {
|
|
11091
12247
|
if (closeRequested.current) return;
|
|
11092
12248
|
closeRequested.current = true;
|
|
@@ -11152,7 +12308,7 @@ function SConfirmModal({
|
|
|
11152
12308
|
tagSlot,
|
|
11153
12309
|
optionSlot,
|
|
11154
12310
|
contentSlot,
|
|
11155
|
-
mainButtonLabel
|
|
12311
|
+
mainButtonLabel: mainButtonLabelProp,
|
|
11156
12312
|
mainButtonOutline,
|
|
11157
12313
|
mainButtonDisabled = false,
|
|
11158
12314
|
subButtonLabel,
|
|
@@ -11160,6 +12316,8 @@ function SConfirmModal({
|
|
|
11160
12316
|
onCancel,
|
|
11161
12317
|
onClose
|
|
11162
12318
|
}) {
|
|
12319
|
+
const tc = useLocale().messages.common;
|
|
12320
|
+
const mainButtonLabel = mainButtonLabelProp ?? tc.confirm;
|
|
11163
12321
|
const iconName = TYPE_ICON[type];
|
|
11164
12322
|
const mainColor = MAIN_BUTTON_COLOR[type];
|
|
11165
12323
|
const mainOutline = mainButtonOutline ?? MAIN_BUTTON_OUTLINE[type];
|
|
@@ -11274,6 +12432,7 @@ function SOverlayHeader({
|
|
|
11274
12432
|
descriptionClassName,
|
|
11275
12433
|
style
|
|
11276
12434
|
}) {
|
|
12435
|
+
const tc = useLocale().messages.common;
|
|
11277
12436
|
const hasDescription = description != null && description !== "";
|
|
11278
12437
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11279
12438
|
"header",
|
|
@@ -11312,7 +12471,7 @@ function SOverlayHeader({
|
|
|
11312
12471
|
SGhostButton,
|
|
11313
12472
|
{
|
|
11314
12473
|
icon: "close",
|
|
11315
|
-
ariaLabel:
|
|
12474
|
+
ariaLabel: tc.close,
|
|
11316
12475
|
onClick: () => onClose?.(),
|
|
11317
12476
|
className: "absolute right-[12px] top-[12px]"
|
|
11318
12477
|
}
|
|
@@ -11367,14 +12526,6 @@ function SActionModal({
|
|
|
11367
12526
|
}
|
|
11368
12527
|
);
|
|
11369
12528
|
}
|
|
11370
|
-
var DEFAULT_MESSAGE = {
|
|
11371
|
-
loading: "\uC791\uC5C5 \uC9C4\uD589\uC911...",
|
|
11372
|
-
error: "\uC791\uC5C5\uC5D0 \uC2E4\uD328\uD558\uC600\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694."
|
|
11373
|
-
};
|
|
11374
|
-
var DEFAULT_BUTTON_LABEL = {
|
|
11375
|
-
loading: "\uD655\uC778",
|
|
11376
|
-
error: "\uB2E4\uC2DC \uC2DC\uB3C4"
|
|
11377
|
-
};
|
|
11378
12529
|
function SLoadingModal({
|
|
11379
12530
|
open,
|
|
11380
12531
|
onOpenChange,
|
|
@@ -11389,7 +12540,8 @@ function SLoadingModal({
|
|
|
11389
12540
|
width = "var(--cmp-modal-loading-width)",
|
|
11390
12541
|
height = "var(--cmp-modal-loading-height)"
|
|
11391
12542
|
}) {
|
|
11392
|
-
const
|
|
12543
|
+
const { loadingModal: t, common: tc } = useLocale().messages;
|
|
12544
|
+
const resolvedMessage = message ?? (state2 === "loading" ? t.loadingMessage : t.errorMessage);
|
|
11393
12545
|
const lines = Array.isArray(resolvedMessage) ? resolvedMessage : resolvedMessage ? [resolvedMessage] : [];
|
|
11394
12546
|
const buttonVisible = showButton || state2 === "error";
|
|
11395
12547
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11400,7 +12552,7 @@ function SLoadingModal({
|
|
|
11400
12552
|
onClose,
|
|
11401
12553
|
showClose: state2 === "error",
|
|
11402
12554
|
persistent,
|
|
11403
|
-
ariaTitle: lines[0] ||
|
|
12555
|
+
ariaTitle: lines[0] || t.ariaTitle,
|
|
11404
12556
|
width,
|
|
11405
12557
|
height,
|
|
11406
12558
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-auto flex-col overflow-y-auto px-[32px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "m-auto flex flex-col items-center gap-(--cmp-modal-loading-gap)", children: [
|
|
@@ -11430,7 +12582,7 @@ function SLoadingModal({
|
|
|
11430
12582
|
onButtonClick?.();
|
|
11431
12583
|
onOpenChange?.(false);
|
|
11432
12584
|
},
|
|
11433
|
-
label: buttonLabel ??
|
|
12585
|
+
label: buttonLabel ?? (state2 === "loading" ? tc.confirm : t.errorButton)
|
|
11434
12586
|
}
|
|
11435
12587
|
)
|
|
11436
12588
|
] }) })
|
|
@@ -11440,7 +12592,7 @@ function SLoadingModal({
|
|
|
11440
12592
|
var CLOSE_ANIMATION_DURATION2 = 300;
|
|
11441
12593
|
var RESIZE_KEY_STEP = { normal: 10, large: 50 };
|
|
11442
12594
|
var RESIZE_HIT_WIDTH = "calc(var(--cmp-splitter-border-width) + var(--cmp-splitter-border-padding) * 2)";
|
|
11443
|
-
function
|
|
12595
|
+
function toPx2(value, percentBase) {
|
|
11444
12596
|
if (typeof value === "number") return value;
|
|
11445
12597
|
if (typeof value !== "string") return void 0;
|
|
11446
12598
|
const normalized = value.trim();
|
|
@@ -11484,6 +12636,7 @@ function SDrawer({
|
|
|
11484
12636
|
className,
|
|
11485
12637
|
style
|
|
11486
12638
|
}) {
|
|
12639
|
+
const tc = useLocale().messages.common;
|
|
11487
12640
|
const [shaking, setShaking] = react.useState(false);
|
|
11488
12641
|
const [rendered, setRendered] = react.useState(() => Boolean(open));
|
|
11489
12642
|
const [entered, setEntered] = react.useState(false);
|
|
@@ -11575,8 +12728,8 @@ function SDrawer({
|
|
|
11575
12728
|
const resizeBounds = () => {
|
|
11576
12729
|
const limit = viewportWidth;
|
|
11577
12730
|
if (limit === void 0) return { min: void 0, max: void 0 };
|
|
11578
|
-
const min =
|
|
11579
|
-
const max =
|
|
12731
|
+
const min = toPx2(minWidth, limit);
|
|
12732
|
+
const max = toPx2(maxWidth, limit);
|
|
11580
12733
|
return {
|
|
11581
12734
|
min: min === void 0 ? void 0 : Math.min(min, limit),
|
|
11582
12735
|
max: max === void 0 ? limit : Math.min(max, limit)
|
|
@@ -11710,7 +12863,7 @@ function SDrawer({
|
|
|
11710
12863
|
{
|
|
11711
12864
|
role: "separator",
|
|
11712
12865
|
"aria-orientation": "vertical",
|
|
11713
|
-
"aria-label":
|
|
12866
|
+
"aria-label": tc.resizeDrawer,
|
|
11714
12867
|
"aria-valuenow": resizeValueNow,
|
|
11715
12868
|
"aria-valuemin": resizeValueMin,
|
|
11716
12869
|
"aria-valuemax": resizeValueMax,
|
|
@@ -12276,6 +13429,7 @@ function resolveRows(items) {
|
|
|
12276
13429
|
}
|
|
12277
13430
|
var SLauncherListBox = /* @__PURE__ */ react.forwardRef(
|
|
12278
13431
|
function SLauncherListBox2({ items, onSelect, consoleHref, onConsoleClick, ariaLabel, className, style, ...rest }, ref) {
|
|
13432
|
+
const tl = useLocale().messages.launcher;
|
|
12279
13433
|
const rows = items ? resolveRows(items) : [];
|
|
12280
13434
|
if (rows.length === 0) return null;
|
|
12281
13435
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -12394,7 +13548,7 @@ var SLauncherListBox = /* @__PURE__ */ react.forwardRef(
|
|
|
12394
13548
|
onClick: () => onSelect?.(row.service),
|
|
12395
13549
|
children: [
|
|
12396
13550
|
content,
|
|
12397
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children:
|
|
13551
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: tl.opensInNewTab })
|
|
12398
13552
|
]
|
|
12399
13553
|
}
|
|
12400
13554
|
)
|
|
@@ -12421,7 +13575,7 @@ var SLauncherListBox = /* @__PURE__ */ react.forwardRef(
|
|
|
12421
13575
|
window.open(consoleHref, "_blank", "noopener,noreferrer");
|
|
12422
13576
|
onConsoleClick?.();
|
|
12423
13577
|
},
|
|
12424
|
-
"aria-label": `${LAUNCHER_LIST_BOX_CONSOLE_LABEL} (
|
|
13578
|
+
"aria-label": `${LAUNCHER_LIST_BOX_CONSOLE_LABEL} (${tl.opensInNewTab})`
|
|
12425
13579
|
}
|
|
12426
13580
|
)
|
|
12427
13581
|
}
|
|
@@ -13556,8 +14710,6 @@ var GNB_SYSTEM_LAYOUT = {
|
|
|
13556
14710
|
domainRadius: domain("radius")
|
|
13557
14711
|
};
|
|
13558
14712
|
var GNB_SYSTEM_ALERT_DOT_SIZE = 6;
|
|
13559
|
-
var GNB_SYSTEM_ALERT_LABEL = "\uC54C\uB9BC";
|
|
13560
|
-
var GNB_SYSTEM_SETTING_LABEL = "\uC124\uC815";
|
|
13561
14713
|
function TokenIcon3({ name, size }) {
|
|
13562
14714
|
return /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name, size: "100%", style: { width: size, height: size } });
|
|
13563
14715
|
}
|
|
@@ -13665,6 +14817,7 @@ var SGnbSystem = /* @__PURE__ */ react.forwardRef(function SGnbSystem2({
|
|
|
13665
14817
|
style,
|
|
13666
14818
|
...rest
|
|
13667
14819
|
}, ref) {
|
|
14820
|
+
const tg = useLocale().messages.gnbSystem;
|
|
13668
14821
|
const gnb3 = react.useContext(SGnbSystemContext);
|
|
13669
14822
|
const color = colorProp ?? gnb3?.color ?? "light";
|
|
13670
14823
|
const placement = gnb3?.placement ?? "panel";
|
|
@@ -13723,8 +14876,8 @@ var SGnbSystem = /* @__PURE__ */ react.forwardRef(function SGnbSystem2({
|
|
|
13723
14876
|
setAlertTooltipDismissed(true);
|
|
13724
14877
|
alert2?.onTooltipDismiss?.();
|
|
13725
14878
|
};
|
|
13726
|
-
const alertLabel = alert2?.label ??
|
|
13727
|
-
const settingLabel = setting?.label ??
|
|
14879
|
+
const alertLabel = alert2?.label ?? tg.alert;
|
|
14880
|
+
const settingLabel = setting?.label ?? tg.setting;
|
|
13728
14881
|
const alertButton = alert2 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
13729
14882
|
SystemButton,
|
|
13730
14883
|
{
|
|
@@ -13760,7 +14913,7 @@ var SGnbSystem = /* @__PURE__ */ react.forwardRef(function SGnbSystem2({
|
|
|
13760
14913
|
align: "end",
|
|
13761
14914
|
offset: 8,
|
|
13762
14915
|
viewportPadding: 8,
|
|
13763
|
-
ariaLabel:
|
|
14916
|
+
ariaLabel: alertLabel,
|
|
13764
14917
|
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
13765
14918
|
className: "rounded-(--radius-8)",
|
|
13766
14919
|
children: alert2.listBox
|
|
@@ -14088,6 +15241,7 @@ var PAGE_CONTENT_WIDTHS = ["full", "fixed", "fixedCenter"];
|
|
|
14088
15241
|
var PAGE_HEADER_VARIANTS = ["plain", "bar"];
|
|
14089
15242
|
var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
14090
15243
|
react.forwardRef(function SPageHeader2({ title, subText, titleSlot, variant, onBack, slot, scrolled, className, style, ...rest }, ref) {
|
|
15244
|
+
const tc = useLocale().messages.common;
|
|
14091
15245
|
const hasBack = onBack != null;
|
|
14092
15246
|
const hasTitleSlot = titleSlot != null && titleSlot !== false;
|
|
14093
15247
|
const titleEl = /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-heading-lg min-w-0 truncate text-(--cmp-pageHeader-title-text)", children: title });
|
|
@@ -14126,7 +15280,7 @@ var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
|
14126
15280
|
{
|
|
14127
15281
|
icon: "chevronLeft",
|
|
14128
15282
|
size: "xs",
|
|
14129
|
-
ariaLabel:
|
|
15283
|
+
ariaLabel: tc.back,
|
|
14130
15284
|
onClick: onBack,
|
|
14131
15285
|
className: cn("shrink-0", bar ? "" : "mt-[3px]")
|
|
14132
15286
|
}
|
|
@@ -14315,6 +15469,7 @@ function SPagination({
|
|
|
14315
15469
|
className,
|
|
14316
15470
|
style
|
|
14317
15471
|
}) {
|
|
15472
|
+
const t = useLocale().messages.pagination;
|
|
14318
15473
|
const start = Math.floor((currentPage - 1) / PER_PAGE) * PER_PAGE + 1;
|
|
14319
15474
|
const end = Math.min(start + PER_PAGE - 1, lastPage);
|
|
14320
15475
|
const pageNumbers = Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i);
|
|
@@ -14341,18 +15496,18 @@ function SPagination({
|
|
|
14341
15496
|
}
|
|
14342
15497
|
);
|
|
14343
15498
|
const prevButtons = simple ? currentPage > 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14344
|
-
navBtn("chevronLeftEnd",
|
|
14345
|
-
navBtn("chevronLeft",
|
|
15499
|
+
navBtn("chevronLeftEnd", t.firstPage, () => go(1)),
|
|
15500
|
+
navBtn("chevronLeft", t.prevPage, () => go(currentPage - 1))
|
|
14346
15501
|
] }) : !isFirstGroup && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14347
|
-
navBtn("chevronLeftEnd",
|
|
14348
|
-
navBtn("chevronLeft",
|
|
15502
|
+
navBtn("chevronLeftEnd", t.firstPage, () => go(1)),
|
|
15503
|
+
navBtn("chevronLeft", t.prevGroup, () => groupMove("backward"))
|
|
14349
15504
|
] });
|
|
14350
15505
|
const nextButtons = simple ? currentPage < lastPage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14351
|
-
navBtn("chevronRight",
|
|
14352
|
-
navBtn("chevronRightEnd",
|
|
15506
|
+
navBtn("chevronRight", t.nextPage, () => go(currentPage + 1)),
|
|
15507
|
+
navBtn("chevronRightEnd", t.lastPage, () => go(lastPage))
|
|
14353
15508
|
] }) : !isLastGroup && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14354
|
-
navBtn("chevronRight",
|
|
14355
|
-
navBtn("chevronRightEnd",
|
|
15509
|
+
navBtn("chevronRight", t.nextGroup, () => groupMove("forward")),
|
|
15510
|
+
navBtn("chevronRightEnd", t.lastPage, () => go(lastPage))
|
|
14356
15511
|
] });
|
|
14357
15512
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14358
15513
|
"div",
|
|
@@ -14702,7 +15857,6 @@ var STEPPER_VERTICAL_COLORS = {
|
|
|
14702
15857
|
sequenceIconCompleted: STEPPER_COLORS.sequenceText.completed,
|
|
14703
15858
|
errorBadge: "#FB4444"
|
|
14704
15859
|
};
|
|
14705
|
-
var ERROR_TOOLTIP_MESSAGE = "\uD655\uC778\uC774 \uD544\uC694\uD55C \uD56D\uBAA9\uC774 \uC788\uC2B5\uB2C8\uB2E4.";
|
|
14706
15860
|
function getItemValue(item4, index) {
|
|
14707
15861
|
return item4.value ?? String(index + 1);
|
|
14708
15862
|
}
|
|
@@ -14744,10 +15898,12 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
14744
15898
|
vertical = false,
|
|
14745
15899
|
clickable,
|
|
14746
15900
|
onValueChange,
|
|
14747
|
-
ariaLabel
|
|
15901
|
+
ariaLabel: ariaLabelProp,
|
|
14748
15902
|
className,
|
|
14749
15903
|
style
|
|
14750
15904
|
}, ref) {
|
|
15905
|
+
const t = useLocale().messages.stepper;
|
|
15906
|
+
const ariaLabel = ariaLabelProp ?? t.ariaLabel;
|
|
14751
15907
|
const config = STEPPER_SIZE_CONFIG[size];
|
|
14752
15908
|
const isClickable = clickable ?? vertical;
|
|
14753
15909
|
const [hoveredIndex, setHoveredIndex] = react.useState(null);
|
|
@@ -15029,7 +16185,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
15029
16185
|
{
|
|
15030
16186
|
trigger: "none",
|
|
15031
16187
|
open: showTooltip,
|
|
15032
|
-
content:
|
|
16188
|
+
content: t.errorTooltip,
|
|
15033
16189
|
tooltipType: "danger",
|
|
15034
16190
|
placement: "right",
|
|
15035
16191
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15207,16 +16363,20 @@ function monthCells(year, month) {
|
|
|
15207
16363
|
}
|
|
15208
16364
|
return cells;
|
|
15209
16365
|
}
|
|
15210
|
-
var
|
|
15211
|
-
var
|
|
15212
|
-
|
|
15213
|
-
|
|
16366
|
+
var glyphEm = (char) => /[\u1100-\u11ff\u3040-\u30ff\u3130-\u318f\u3400-\u9fff\uac00-\ud7a3]/.test(char) ? 1 : 0.58;
|
|
16367
|
+
var weekdaySuffixWidth = (fontSize, t) => {
|
|
16368
|
+
const longest = Math.max(
|
|
16369
|
+
...t.weekdaysLong.map((name) => Array.from(name).reduce((sum, char) => sum + glyphEm(char), 0))
|
|
16370
|
+
);
|
|
16371
|
+
return Math.ceil(fontSize * (0.25 + longest));
|
|
16372
|
+
};
|
|
16373
|
+
function withWeekday(value, t) {
|
|
15214
16374
|
const [date = "", ...rest] = value.split(" ");
|
|
15215
16375
|
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(date);
|
|
15216
16376
|
if (!match) return value;
|
|
15217
16377
|
const day = new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3])).getDay();
|
|
15218
16378
|
if (Number.isNaN(day)) return value;
|
|
15219
|
-
return [date,
|
|
16379
|
+
return [date, t.weekdaysLong[day], ...rest].join(" ");
|
|
15220
16380
|
}
|
|
15221
16381
|
|
|
15222
16382
|
// src/components/SCalendarBoard/calendar-board-layout.ts
|
|
@@ -15451,7 +16611,9 @@ function CalendarEventButton({
|
|
|
15451
16611
|
}
|
|
15452
16612
|
);
|
|
15453
16613
|
}
|
|
15454
|
-
var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreButton2({ count, label
|
|
16614
|
+
var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreButton2({ count, label: labelProp, dimmed = false, onClick, className, style }, ref) {
|
|
16615
|
+
const tc = useLocale().messages.common;
|
|
16616
|
+
const label = labelProp ?? tc.more;
|
|
15455
16617
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15456
16618
|
"button",
|
|
15457
16619
|
{
|
|
@@ -15474,10 +16636,7 @@ var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreB
|
|
|
15474
16636
|
className: "pointer-events-none absolute inset-0 rounded-(--cmp-calendarBoard-item-radius) bg-(--cmp-calendarBoard-moreButton-hover-overlay-color) opacity-0 transition-opacity group-hover:opacity-(--cmp-calendarBoard-moreButton-hover-overlay-opacity)"
|
|
15475
16637
|
}
|
|
15476
16638
|
),
|
|
15477
|
-
/* @__PURE__ */ jsxRuntime.
|
|
15478
|
-
count,
|
|
15479
|
-
"\uAC1C"
|
|
15480
|
-
] }),
|
|
16639
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-semibold shrink-0 text-(--cmp-calendarBoard-moreButton-count-color)", children: tc.count(count) }),
|
|
15481
16640
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-default min-w-0 truncate text-(--cmp-calendarBoard-moreButton-label-color)", children: label })
|
|
15482
16641
|
]
|
|
15483
16642
|
}
|
|
@@ -15615,10 +16774,12 @@ function CalendarDayEventListBox({
|
|
|
15615
16774
|
minWidth,
|
|
15616
16775
|
minHeight,
|
|
15617
16776
|
onClose,
|
|
15618
|
-
closeLabel
|
|
16777
|
+
closeLabel: closeLabelProp
|
|
15619
16778
|
}) {
|
|
16779
|
+
const { common: tc, date: t } = useLocale().messages;
|
|
16780
|
+
const closeLabel = closeLabelProp ?? tc.close;
|
|
15620
16781
|
const [y, m, d] = date.split("-").map(Number);
|
|
15621
|
-
const weekday =
|
|
16782
|
+
const weekday = t.weekdays[new Date(y, m - 1, d).getDay()];
|
|
15622
16783
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15623
16784
|
"div",
|
|
15624
16785
|
{
|
|
@@ -15626,10 +16787,7 @@ function CalendarDayEventListBox({
|
|
|
15626
16787
|
style: { minWidth, maxWidth: MAX_WIDTH, minHeight, maxHeight: MAX_HEIGHT },
|
|
15627
16788
|
children: [
|
|
15628
16789
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-(--cmp-calendarBoard-dayEvent-header-gap) px-(--cmp-calendarBoard-dayEvent-header-paddingX) py-(--cmp-calendarBoard-dayEvent-header-paddingY)", children: [
|
|
15629
|
-
/* @__PURE__ */ jsxRuntime.
|
|
15630
|
-
d,
|
|
15631
|
-
"\uC77C"
|
|
15632
|
-
] }),
|
|
16790
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-heading-md text-(--cmp-calendarBoard-header-content-color)", children: t.dayLabel(d) }),
|
|
15633
16791
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "typo-body-lg-default flex-1 text-(--cmp-calendarBoard-header-content-color)", children: [
|
|
15634
16792
|
"(",
|
|
15635
16793
|
weekday,
|
|
@@ -15690,12 +16848,14 @@ function SCalendarBoard({
|
|
|
15690
16848
|
focusedEventId,
|
|
15691
16849
|
onEventClick,
|
|
15692
16850
|
onMoreClick,
|
|
15693
|
-
todayLabel
|
|
16851
|
+
todayLabel: todayLabelProp,
|
|
15694
16852
|
moreLabel,
|
|
15695
16853
|
headerRight,
|
|
15696
16854
|
className,
|
|
15697
16855
|
style
|
|
15698
16856
|
}) {
|
|
16857
|
+
const t = useLocale().messages.date;
|
|
16858
|
+
const todayLabel = todayLabelProp ?? t.today;
|
|
15699
16859
|
const today = todayStr();
|
|
15700
16860
|
const [ty, tm] = [Number(today.slice(0, 4)), Number(today.slice(5, 7))];
|
|
15701
16861
|
const [innerView, setInnerView] = react.useState(() => ({
|
|
@@ -15801,7 +16961,7 @@ function SCalendarBoard({
|
|
|
15801
16961
|
{
|
|
15802
16962
|
icon: "chevronLeft",
|
|
15803
16963
|
size: "xxs",
|
|
15804
|
-
ariaLabel:
|
|
16964
|
+
ariaLabel: t.prevYear,
|
|
15805
16965
|
onClick: () => setView({ year: view.year - 1, month: view.month })
|
|
15806
16966
|
}
|
|
15807
16967
|
),
|
|
@@ -15811,7 +16971,7 @@ function SCalendarBoard({
|
|
|
15811
16971
|
{
|
|
15812
16972
|
icon: "chevronRight",
|
|
15813
16973
|
size: "xxs",
|
|
15814
|
-
ariaLabel:
|
|
16974
|
+
ariaLabel: t.nextYear,
|
|
15815
16975
|
onClick: () => setView({ year: view.year + 1, month: view.month })
|
|
15816
16976
|
}
|
|
15817
16977
|
)
|
|
@@ -15823,20 +16983,17 @@ function SCalendarBoard({
|
|
|
15823
16983
|
{
|
|
15824
16984
|
icon: "chevronLeft",
|
|
15825
16985
|
size: "xxs",
|
|
15826
|
-
ariaLabel:
|
|
16986
|
+
ariaLabel: t.prevMonth,
|
|
15827
16987
|
onClick: () => setView(calcYearMonth(view.year, view.month, "prev"))
|
|
15828
16988
|
}
|
|
15829
16989
|
),
|
|
15830
|
-
/* @__PURE__ */ jsxRuntime.
|
|
15831
|
-
view.month,
|
|
15832
|
-
"\uC6D4"
|
|
15833
|
-
] }),
|
|
16990
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-heading-lg inline-flex min-w-[48px] justify-center text-(--cmp-calendarBoard-header-content-color)", children: t.monthLabel(view.month) }),
|
|
15834
16991
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15835
16992
|
SGhostButton,
|
|
15836
16993
|
{
|
|
15837
16994
|
icon: "chevronRight",
|
|
15838
16995
|
size: "xxs",
|
|
15839
|
-
ariaLabel:
|
|
16996
|
+
ariaLabel: t.nextMonth,
|
|
15840
16997
|
onClick: () => setView(calcYearMonth(view.year, view.month, "next"))
|
|
15841
16998
|
}
|
|
15842
16999
|
)
|
|
@@ -15859,7 +17016,7 @@ function SCalendarBoard({
|
|
|
15859
17016
|
{
|
|
15860
17017
|
className: "grid shrink-0 bg-(--cmp-calendarBoard-grid-bg) pt-(--cmp-calendarBoard-grid-paddingTop) pb-(--cmp-calendarBoard-grid-gap)",
|
|
15861
17018
|
style: { gridTemplateColumns: columns },
|
|
15862
|
-
children:
|
|
17019
|
+
children: t.weekdays.map((label) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15863
17020
|
"div",
|
|
15864
17021
|
{
|
|
15865
17022
|
className: "typo-body-md-default flex justify-center text-(--cmp-calendarBoard-grid-weekRow-color)",
|
|
@@ -16214,7 +17371,7 @@ var SSearchInput = /* @__PURE__ */ react.forwardRef(function SSearchInput2({
|
|
|
16214
17371
|
onChange,
|
|
16215
17372
|
onSearch,
|
|
16216
17373
|
size = "sm",
|
|
16217
|
-
placeholder
|
|
17374
|
+
placeholder: placeholderProp,
|
|
16218
17375
|
clearable = false,
|
|
16219
17376
|
disabled = false,
|
|
16220
17377
|
width,
|
|
@@ -16227,6 +17384,8 @@ var SSearchInput = /* @__PURE__ */ react.forwardRef(function SSearchInput2({
|
|
|
16227
17384
|
onKeyDown,
|
|
16228
17385
|
...rest
|
|
16229
17386
|
}, ref) {
|
|
17387
|
+
const { common: tc, input: ti } = useLocale().messages;
|
|
17388
|
+
const placeholder = placeholderProp ?? ti.searchWithinResults;
|
|
16230
17389
|
const f = FONT[size];
|
|
16231
17390
|
const hasValue = value !== void 0 && value !== null && String(value) !== "";
|
|
16232
17391
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16294,7 +17453,7 @@ var SSearchInput = /* @__PURE__ */ react.forwardRef(function SSearchInput2({
|
|
|
16294
17453
|
{
|
|
16295
17454
|
icon: "close",
|
|
16296
17455
|
size: "xxs",
|
|
16297
|
-
ariaLabel:
|
|
17456
|
+
ariaLabel: tc.clear,
|
|
16298
17457
|
className: "flex-shrink-0",
|
|
16299
17458
|
onClick: () => onValueChange?.("")
|
|
16300
17459
|
}
|
|
@@ -16444,8 +17603,8 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16444
17603
|
valueDisplay = "text",
|
|
16445
17604
|
showSearch = false,
|
|
16446
17605
|
showSelectAll = false,
|
|
16447
|
-
allSelectedLabel
|
|
16448
|
-
placeholder
|
|
17606
|
+
allSelectedLabel: allSelectedLabelProp,
|
|
17607
|
+
placeholder: placeholderProp,
|
|
16449
17608
|
disabled = false,
|
|
16450
17609
|
clearable = false,
|
|
16451
17610
|
error = false,
|
|
@@ -16479,6 +17638,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16479
17638
|
className,
|
|
16480
17639
|
style
|
|
16481
17640
|
}, ref) {
|
|
17641
|
+
const runRules2 = useRunRules();
|
|
16482
17642
|
const multi = type === "multi" || type === "multi_depth" || type === "multi_tree";
|
|
16483
17643
|
const isDepth = type === "default_depth" || type === "multi_depth";
|
|
16484
17644
|
const isTree = type === "tree" || type === "multi_tree";
|
|
@@ -16486,6 +17646,9 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16486
17646
|
const partialOptions = pagingEnabled || serverSearch;
|
|
16487
17647
|
const portalContainer = usePortalContainer();
|
|
16488
17648
|
const insideModal = useInsideModal();
|
|
17649
|
+
const t = useLocale().messages.select;
|
|
17650
|
+
const allSelectedLabel = allSelectedLabelProp ?? t.allSelected;
|
|
17651
|
+
const placeholder = placeholderProp ?? t.placeholder;
|
|
16489
17652
|
const [search, setSearch] = react.useState("");
|
|
16490
17653
|
const [ruleError, setRuleError] = react.useState("");
|
|
16491
17654
|
const [open, setOpen] = react.useState(false);
|
|
@@ -16588,7 +17751,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16588
17751
|
setSearch("");
|
|
16589
17752
|
if (rules && rules.length > 0) {
|
|
16590
17753
|
const current = valueForRules ?? selectedRef.current;
|
|
16591
|
-
setRuleError(
|
|
17754
|
+
setRuleError(runRules2(multi ? current : current[0] ?? "", rules));
|
|
16592
17755
|
}
|
|
16593
17756
|
}
|
|
16594
17757
|
};
|
|
@@ -16627,7 +17790,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16627
17790
|
useFormField({
|
|
16628
17791
|
name,
|
|
16629
17792
|
validate: () => {
|
|
16630
|
-
const msg =
|
|
17793
|
+
const msg = runRules2(multi ? selected : selected[0] ?? "", rules);
|
|
16631
17794
|
setRuleError(msg);
|
|
16632
17795
|
return msg === "";
|
|
16633
17796
|
},
|
|
@@ -16900,14 +18063,14 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16900
18063
|
const showClear = clearable && !effectiveDisabled && !isPlaceholder;
|
|
16901
18064
|
const handleClear = () => {
|
|
16902
18065
|
emit3([]);
|
|
16903
|
-
if (rules && rules.length > 0) setRuleError(
|
|
18066
|
+
if (rules && rules.length > 0) setRuleError(runRules2(multi ? [] : "", rules));
|
|
16904
18067
|
triggerRef.current?.focus();
|
|
16905
18068
|
};
|
|
16906
18069
|
const handleRemoveChip = (targets) => {
|
|
16907
18070
|
const remove = new Set(targets);
|
|
16908
18071
|
const next = selected.filter((v) => !remove.has(v));
|
|
16909
18072
|
emit3(next);
|
|
16910
|
-
if (rules && rules.length > 0) setRuleError(
|
|
18073
|
+
if (rules && rules.length > 0) setRuleError(runRules2(next, rules));
|
|
16911
18074
|
triggerRef.current?.focus();
|
|
16912
18075
|
};
|
|
16913
18076
|
const handleSelect = (nextValue, index, extend = false) => {
|
|
@@ -17227,7 +18390,9 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
17227
18390
|
chip.removable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17228
18391
|
TriggerRemoveButton,
|
|
17229
18392
|
{
|
|
17230
|
-
ariaLabel:
|
|
18393
|
+
ariaLabel: t.deselect(
|
|
18394
|
+
isHtmlLabel(chip.label) ? extractText(chip.label) : chip.label
|
|
18395
|
+
),
|
|
17231
18396
|
onRemove: () => handleRemoveChip(chip.values)
|
|
17232
18397
|
}
|
|
17233
18398
|
)
|
|
@@ -17239,7 +18404,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
17239
18404
|
)
|
|
17240
18405
|
) : /* @__PURE__ */ jsxRuntime.jsx(TriggerLabel, { label: triggerText }),
|
|
17241
18406
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex shrink-0 items-center gap-[8px]", children: [
|
|
17242
|
-
showClear && /* @__PURE__ */ jsxRuntime.jsx(TriggerRemoveButton, { ariaLabel:
|
|
18407
|
+
showClear && /* @__PURE__ */ jsxRuntime.jsx(TriggerRemoveButton, { ariaLabel: t.clear, onRemove: handleClear }),
|
|
17243
18408
|
showTriggerSpinner ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "inline-flex shrink-0", "data-select-trigger-spinner": true, children: /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { indeterminate: true, type: "neutral", size: 12 }) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
17244
18409
|
SIcon,
|
|
17245
18410
|
{
|
|
@@ -17319,7 +18484,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
17319
18484
|
value: search,
|
|
17320
18485
|
onValueChange: handleSearchChange,
|
|
17321
18486
|
onKeyDown: handleKeyDown,
|
|
17322
|
-
placeholder:
|
|
18487
|
+
placeholder: t.searchPlaceholder,
|
|
17323
18488
|
clearable: true,
|
|
17324
18489
|
"aria-controls": listboxId,
|
|
17325
18490
|
"aria-activedescendant": focusedIndex >= 0 ? activeOptionId : void 0
|
|
@@ -17363,7 +18528,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
17363
18528
|
}
|
|
17364
18529
|
) : loading2 ? null : (
|
|
17365
18530
|
// 첫 페이지를 받는 중에는 "없다"고 단정하지 않는다 — 아래 로딩 표시가 대신 나온다.
|
|
17366
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-[12px] py-[12px] text-left text-[12px] leading-[20px] text-[color:var(--cmp-listBoxItem-content-disabled)]", children:
|
|
18531
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-[12px] py-[12px] text-left text-[12px] leading-[20px] text-[color:var(--cmp-listBoxItem-content-disabled)]", children: t.empty })
|
|
17367
18532
|
),
|
|
17368
18533
|
loading2 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17369
18534
|
"div",
|
|
@@ -17372,7 +18537,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
17372
18537
|
className: "flex items-center justify-center gap-[8px] px-[12px] py-[12px] text-[12px] leading-[20px] text-[color:var(--cmp-listBoxItem-content-disabled)]",
|
|
17373
18538
|
children: [
|
|
17374
18539
|
/* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { indeterminate: true, type: "neutral", size: 16 }),
|
|
17375
|
-
|
|
18540
|
+
t.loading
|
|
17376
18541
|
]
|
|
17377
18542
|
}
|
|
17378
18543
|
)
|
|
@@ -17787,12 +18952,7 @@ var NO_KEYS = /* @__PURE__ */ new Set();
|
|
|
17787
18952
|
var DEFAULT_ROW_HEIGHT = 44;
|
|
17788
18953
|
var DENSE_ROW_HEIGHT = 32;
|
|
17789
18954
|
var SELECTABLE_COLUMN_WIDTH = 48;
|
|
17790
|
-
var
|
|
17791
|
-
{ label: "10\uAC1C\uC529 \uBCF4\uAE30", value: 10 },
|
|
17792
|
-
{ label: "25\uAC1C\uC529 \uBCF4\uAE30", value: 25 },
|
|
17793
|
-
{ label: "50\uAC1C\uC529 \uBCF4\uAE30", value: 50 },
|
|
17794
|
-
{ label: "100\uAC1C\uC529 \uBCF4\uAE30", value: 100 }
|
|
17795
|
-
];
|
|
18955
|
+
var DEFAULT_ROWS_PER_PAGE_COUNTS = [10, 25, 50, 100];
|
|
17796
18956
|
var cellValue = (col, row) => {
|
|
17797
18957
|
const raw = col.field == null ? void 0 : typeof col.field === "function" ? col.field(row) : row[col.field];
|
|
17798
18958
|
return col.format ? col.format(raw, row) : raw;
|
|
@@ -17832,7 +18992,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17832
18992
|
rowKey = "id",
|
|
17833
18993
|
selectable = false,
|
|
17834
18994
|
rowSelectLabel,
|
|
17835
|
-
selectAllLabel
|
|
18995
|
+
selectAllLabel: selectAllLabelProp,
|
|
17836
18996
|
dragSelectable = false,
|
|
17837
18997
|
contextMenuItems,
|
|
17838
18998
|
onContextMenuItemClick,
|
|
@@ -17849,7 +19009,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17849
19009
|
stickyColumn,
|
|
17850
19010
|
radius = "default",
|
|
17851
19011
|
bordered = true,
|
|
17852
|
-
emptyLabel
|
|
19012
|
+
emptyLabel: emptyLabelProp,
|
|
17853
19013
|
emptySlot,
|
|
17854
19014
|
loading: loading2 = false,
|
|
17855
19015
|
dense = false,
|
|
@@ -17859,7 +19019,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17859
19019
|
onPageChange,
|
|
17860
19020
|
internalPagination = false,
|
|
17861
19021
|
showRowsPerPageSelect = false,
|
|
17862
|
-
rowsPerPageOption
|
|
19022
|
+
rowsPerPageOption: rowsPerPageOptionProp,
|
|
17863
19023
|
onRowsPerPageChange,
|
|
17864
19024
|
virtualScroll = false,
|
|
17865
19025
|
rowHeight,
|
|
@@ -17881,6 +19041,13 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17881
19041
|
}, ref) {
|
|
17882
19042
|
const autoId = react.useId();
|
|
17883
19043
|
const resolvedTableId = tableId ?? autoId;
|
|
19044
|
+
const t = useLocale().messages.table;
|
|
19045
|
+
const selectAllLabel = selectAllLabelProp ?? t.selectAll;
|
|
19046
|
+
const emptyLabel = emptyLabelProp ?? t.empty;
|
|
19047
|
+
const rowsPerPageOption = react.useMemo(
|
|
19048
|
+
() => rowsPerPageOptionProp ?? DEFAULT_ROWS_PER_PAGE_COUNTS.map((count) => ({ label: t.rowsPerPage(count), value: count })),
|
|
19049
|
+
[rowsPerPageOptionProp, t]
|
|
19050
|
+
);
|
|
17884
19051
|
const [innerDense, setInnerDense] = react.useState(dense);
|
|
17885
19052
|
react.useEffect(() => {
|
|
17886
19053
|
setInnerDense(dense);
|
|
@@ -18692,7 +19859,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
18692
19859
|
name: "pageEdit",
|
|
18693
19860
|
size: 12,
|
|
18694
19861
|
color: "var(--sys-color-link-accent)",
|
|
18695
|
-
label:
|
|
19862
|
+
label: t.editable,
|
|
18696
19863
|
className: "shrink-0"
|
|
18697
19864
|
}
|
|
18698
19865
|
),
|
|
@@ -18702,7 +19869,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
18702
19869
|
name: "pageMove",
|
|
18703
19870
|
size: 12,
|
|
18704
19871
|
color: "var(--sys-color-link-accent)",
|
|
18705
|
-
label:
|
|
19872
|
+
label: t.opensInNewScreen,
|
|
18706
19873
|
className: "shrink-0"
|
|
18707
19874
|
}
|
|
18708
19875
|
),
|
|
@@ -18726,7 +19893,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
18726
19893
|
size: "xxs",
|
|
18727
19894
|
intent: sortDir ? "action" : "default",
|
|
18728
19895
|
icon: sortDir === "asc" ? "arrowUp" : sortDir === "desc" ? "arrowDown" : "updown",
|
|
18729
|
-
ariaLabel:
|
|
19896
|
+
ariaLabel: t.sortBy(col.label),
|
|
18730
19897
|
onClick: () => toggleSort(col)
|
|
18731
19898
|
}
|
|
18732
19899
|
) })
|
|
@@ -18876,7 +20043,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
18876
20043
|
value: isSel || !isRowIndeterminate?.(row) ? isSel : null,
|
|
18877
20044
|
disabled: !canSelectRow(row),
|
|
18878
20045
|
onValueChange: () => toggleRow(row, rowOffset + ri),
|
|
18879
|
-
ariaLabel: rowSelectLabel?.(row) ??
|
|
20046
|
+
ariaLabel: rowSelectLabel?.(row) ?? t.selectRow
|
|
18880
20047
|
}
|
|
18881
20048
|
) })
|
|
18882
20049
|
}
|
|
@@ -19029,7 +20196,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
19029
20196
|
icon: innerDense ? "row" : "rowDense",
|
|
19030
20197
|
iconRotate: 90,
|
|
19031
20198
|
iconColor: "var(--sys-color-fg-quaternary)",
|
|
19032
|
-
label: innerDense ?
|
|
20199
|
+
label: innerDense ? t.denseOff : t.denseOn,
|
|
19033
20200
|
onClick: () => changeDense(!innerDense)
|
|
19034
20201
|
}
|
|
19035
20202
|
),
|
|
@@ -19136,6 +20303,8 @@ var STableBar = /* @__PURE__ */ react.forwardRef(function STableBar2({ title, to
|
|
|
19136
20303
|
const hasTitle = title != null;
|
|
19137
20304
|
const hasLeading = hasTitle || hasCount;
|
|
19138
20305
|
const titleId = react.useId();
|
|
20306
|
+
const { messages, formatNumber } = useLocale();
|
|
20307
|
+
const t = messages.tableBar;
|
|
19139
20308
|
const isToolbar = Boolean(actions || rightActions);
|
|
19140
20309
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19141
20310
|
"div",
|
|
@@ -19161,9 +20330,9 @@ var STableBar = /* @__PURE__ */ react.forwardRef(function STableBar2({ title, to
|
|
|
19161
20330
|
),
|
|
19162
20331
|
hasCount && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--cmp-table-content-gap)]", children: [
|
|
19163
20332
|
hasTotal && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "typo-table-accent whitespace-nowrap text-[var(--sys-color-fg-primary)]", children: [
|
|
19164
|
-
|
|
19165
|
-
/* @__PURE__ */ jsxRuntime.jsx("b", { style: { color: totalColor(total) }, children: total
|
|
19166
|
-
|
|
20333
|
+
t.totalBefore,
|
|
20334
|
+
/* @__PURE__ */ jsxRuntime.jsx("b", { style: { color: totalColor(total) }, children: formatNumber(total) }),
|
|
20335
|
+
t.totalAfter
|
|
19167
20336
|
] }),
|
|
19168
20337
|
hasTotal && hasSelected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19169
20338
|
"span",
|
|
@@ -19174,8 +20343,9 @@ var STableBar = /* @__PURE__ */ react.forwardRef(function STableBar2({ title, to
|
|
|
19174
20343
|
}
|
|
19175
20344
|
),
|
|
19176
20345
|
hasSelected && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "typo-table-body whitespace-nowrap text-[var(--sys-color-fg-primary)]", children: [
|
|
19177
|
-
|
|
19178
|
-
"
|
|
20346
|
+
t.selectedBefore,
|
|
20347
|
+
/* @__PURE__ */ jsxRuntime.jsx("b", { style: { color: selectedColor(selected) }, children: formatNumber(selected) }),
|
|
20348
|
+
t.selectedAfter
|
|
19179
20349
|
] })
|
|
19180
20350
|
] }),
|
|
19181
20351
|
actions && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--cmp-table-bar-section-gap)] has-[>div:empty]:hidden", children: [
|
|
@@ -19588,12 +20758,15 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19588
20758
|
width,
|
|
19589
20759
|
disabled = false,
|
|
19590
20760
|
readOnly = false,
|
|
19591
|
-
placeholder
|
|
20761
|
+
placeholder: placeholderProp,
|
|
19592
20762
|
onBlur,
|
|
19593
20763
|
className,
|
|
19594
20764
|
style,
|
|
19595
20765
|
...rest
|
|
19596
20766
|
}, ref) {
|
|
20767
|
+
const runRules2 = useRunRules();
|
|
20768
|
+
const { common: tc, input: ti } = useLocale().messages;
|
|
20769
|
+
const placeholder = placeholderProp ?? ti.placeholder;
|
|
19597
20770
|
const [visible, setVisible] = react.useState(false);
|
|
19598
20771
|
const [ruleError, setRuleError] = react.useState("");
|
|
19599
20772
|
const controlId = useFieldControlId(rest.id);
|
|
@@ -19604,7 +20777,7 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19604
20777
|
useFormField({
|
|
19605
20778
|
name: rest.name,
|
|
19606
20779
|
validate: () => {
|
|
19607
|
-
const msg =
|
|
20780
|
+
const msg = runRules2(value, rules);
|
|
19608
20781
|
setRuleError(msg);
|
|
19609
20782
|
return msg === "";
|
|
19610
20783
|
},
|
|
@@ -19669,11 +20842,11 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19669
20842
|
onChange: (e) => {
|
|
19670
20843
|
onChange?.(e);
|
|
19671
20844
|
onValueChange?.(e.target.value);
|
|
19672
|
-
if (ruleError !== "") setRuleError(
|
|
20845
|
+
if (ruleError !== "") setRuleError(runRules2(e.target.value, rules));
|
|
19673
20846
|
},
|
|
19674
20847
|
onBlur: (e) => {
|
|
19675
20848
|
onBlur?.(e);
|
|
19676
|
-
if (rules && rules.length > 0) setRuleError(
|
|
20849
|
+
if (rules && rules.length > 0) setRuleError(runRules2(e.target.value, rules));
|
|
19677
20850
|
},
|
|
19678
20851
|
className: cn(
|
|
19679
20852
|
"h-full min-w-0 flex-1 border-0 bg-transparent p-0 outline-none placeholder:text-[color:var(--sys-color-field-text-placeholder)] disabled:cursor-not-allowed",
|
|
@@ -19703,7 +20876,7 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19703
20876
|
{
|
|
19704
20877
|
icon: "close",
|
|
19705
20878
|
size: "xxs",
|
|
19706
|
-
ariaLabel:
|
|
20879
|
+
ariaLabel: tc.clear,
|
|
19707
20880
|
className: "flex-shrink-0",
|
|
19708
20881
|
onClick: () => onValueChange?.("")
|
|
19709
20882
|
}
|
|
@@ -19713,7 +20886,7 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19713
20886
|
{
|
|
19714
20887
|
icon: visible ? "visibilityOn" : "visibilityOff",
|
|
19715
20888
|
size: "xxs",
|
|
19716
|
-
ariaLabel:
|
|
20889
|
+
ariaLabel: ti.showPassword,
|
|
19717
20890
|
disabled: disabled || readOnly,
|
|
19718
20891
|
className: "flex-shrink-0",
|
|
19719
20892
|
onClick: () => setVisible((v) => !v)
|
|
@@ -19754,15 +20927,15 @@ var formatInputWithCommas = (value) => {
|
|
|
19754
20927
|
const formattedInt = addCommas(intPart === "" ? "0" : intPart);
|
|
19755
20928
|
return `${isNeg ? "-" : ""}${formattedInt}${hasDecimal ? `.${decPart}` : ""}`;
|
|
19756
20929
|
};
|
|
19757
|
-
var getRangeError = (value, min, max) => {
|
|
20930
|
+
var getRangeError = (value, min, max, t) => {
|
|
19758
20931
|
if (value === null) return "";
|
|
19759
20932
|
const belowMin = value < min;
|
|
19760
20933
|
const aboveMax = value > max;
|
|
19761
20934
|
if (!belowMin && !aboveMax) return "";
|
|
19762
20935
|
if (Number.isFinite(min) && Number.isFinite(max)) {
|
|
19763
|
-
return
|
|
20936
|
+
return t.rangeBetween(formatWithCommas(min), formatWithCommas(max));
|
|
19764
20937
|
}
|
|
19765
|
-
return belowMin ?
|
|
20938
|
+
return belowMin ? t.atLeast(formatWithCommas(min)) : t.atMost(formatWithCommas(max));
|
|
19766
20939
|
};
|
|
19767
20940
|
var getDecimalLimit = (allowDecimal, maxDecimalLength) => {
|
|
19768
20941
|
if (!allowDecimal || maxDecimalLength === void 0 || !Number.isFinite(maxDecimalLength)) {
|
|
@@ -19806,7 +20979,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19806
20979
|
onFocus,
|
|
19807
20980
|
onBlur,
|
|
19808
20981
|
name,
|
|
19809
|
-
placeholder
|
|
20982
|
+
placeholder: placeholderProp,
|
|
19810
20983
|
disabled = false,
|
|
19811
20984
|
readOnly = false,
|
|
19812
20985
|
rules,
|
|
@@ -19830,6 +21003,9 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19830
21003
|
className,
|
|
19831
21004
|
style
|
|
19832
21005
|
}, ref) {
|
|
21006
|
+
const runRules2 = useRunRules();
|
|
21007
|
+
const { input: ti, numberInput: t } = useLocale().messages;
|
|
21008
|
+
const placeholder = placeholderProp ?? ti.placeholder;
|
|
19833
21009
|
const p = PAD2[size];
|
|
19834
21010
|
const padX = `var(--cmp-numberInput-${size}-paddingX)`;
|
|
19835
21011
|
const decimalLimit = getDecimalLimit(allowDecimal, maxDecimalLength);
|
|
@@ -19853,9 +21029,9 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19853
21029
|
useFormField({
|
|
19854
21030
|
name,
|
|
19855
21031
|
validate: () => {
|
|
19856
|
-
const msg =
|
|
21032
|
+
const msg = runRules2(numValue, rules);
|
|
19857
21033
|
setRuleError(msg);
|
|
19858
|
-
const range = clampOnBlur ? "" : getRangeError(numValue, min, max);
|
|
21034
|
+
const range = clampOnBlur ? "" : getRangeError(numValue, min, max, t);
|
|
19859
21035
|
setRangeError(range);
|
|
19860
21036
|
return msg === "" && range === "";
|
|
19861
21037
|
},
|
|
@@ -19958,7 +21134,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19958
21134
|
type: "button",
|
|
19959
21135
|
tabIndex: -1,
|
|
19960
21136
|
disabled: off,
|
|
19961
|
-
"aria-label": dir === "inc" ?
|
|
21137
|
+
"aria-label": dir === "inc" ? t.increase : t.decrease,
|
|
19962
21138
|
onClick: dir === "inc" ? increment : decrement,
|
|
19963
21139
|
className: cn(
|
|
19964
21140
|
"flex flex-shrink-0 items-center justify-center border border-solid border-transparent transition-colors",
|
|
@@ -20050,8 +21226,8 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
20050
21226
|
const clamped = !clampOnBlur || n === null ? n : Math.min(Math.max(n, min), max);
|
|
20051
21227
|
if (clamped !== n) emit3(clamped);
|
|
20052
21228
|
else setDisplay(n === null ? "" : formatInputWithCommas(cleaned));
|
|
20053
|
-
if (rules && rules.length > 0) setRuleError(
|
|
20054
|
-
setRangeError(clampOnBlur ? "" : getRangeError(clamped, min, max));
|
|
21229
|
+
if (rules && rules.length > 0) setRuleError(runRules2(clamped, rules));
|
|
21230
|
+
setRangeError(clampOnBlur ? "" : getRangeError(clamped, min, max, t));
|
|
20055
21231
|
onBlur?.(e);
|
|
20056
21232
|
},
|
|
20057
21233
|
className: cn(
|
|
@@ -20229,6 +21405,7 @@ function SCalendar({
|
|
|
20229
21405
|
className,
|
|
20230
21406
|
style
|
|
20231
21407
|
}) {
|
|
21408
|
+
const t = useLocale().messages.date;
|
|
20232
21409
|
const today = todayStr();
|
|
20233
21410
|
const base = value || today;
|
|
20234
21411
|
const [y, setY] = react.useState(() => Number(base.split("-")[0]));
|
|
@@ -20297,7 +21474,7 @@ function SCalendar({
|
|
|
20297
21474
|
{
|
|
20298
21475
|
icon: "chevronLeft",
|
|
20299
21476
|
size: "xxs",
|
|
20300
|
-
ariaLabel:
|
|
21477
|
+
ariaLabel: t.prevYear,
|
|
20301
21478
|
onClick: () => view(y - 1, m)
|
|
20302
21479
|
}
|
|
20303
21480
|
),
|
|
@@ -20307,7 +21484,7 @@ function SCalendar({
|
|
|
20307
21484
|
{
|
|
20308
21485
|
icon: "chevronRight",
|
|
20309
21486
|
size: "xxs",
|
|
20310
|
-
ariaLabel:
|
|
21487
|
+
ariaLabel: t.nextYear,
|
|
20311
21488
|
onClick: () => view(y + 1, m)
|
|
20312
21489
|
}
|
|
20313
21490
|
)
|
|
@@ -20319,23 +21496,20 @@ function SCalendar({
|
|
|
20319
21496
|
{
|
|
20320
21497
|
icon: "chevronLeft",
|
|
20321
21498
|
size: "xxs",
|
|
20322
|
-
ariaLabel:
|
|
21499
|
+
ariaLabel: t.prevMonth,
|
|
20323
21500
|
onClick: () => {
|
|
20324
21501
|
const n = calcYearMonth(y, m, "prev");
|
|
20325
21502
|
view(n.year, n.month);
|
|
20326
21503
|
}
|
|
20327
21504
|
}
|
|
20328
21505
|
),
|
|
20329
|
-
/* @__PURE__ */ jsxRuntime.
|
|
20330
|
-
m,
|
|
20331
|
-
"\uC6D4"
|
|
20332
|
-
] }),
|
|
21506
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex w-full min-w-[40px] items-center justify-center text-center typo-field-md-medium", children: t.monthLabel(m) }),
|
|
20333
21507
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20334
21508
|
SGhostButton,
|
|
20335
21509
|
{
|
|
20336
21510
|
icon: "chevronRight",
|
|
20337
21511
|
size: "xxs",
|
|
20338
|
-
ariaLabel:
|
|
21512
|
+
ariaLabel: t.nextMonth,
|
|
20339
21513
|
onClick: () => {
|
|
20340
21514
|
const n = calcYearMonth(y, m, "next");
|
|
20341
21515
|
view(n.year, n.month);
|
|
@@ -20344,7 +21518,7 @@ function SCalendar({
|
|
|
20344
21518
|
)
|
|
20345
21519
|
] })
|
|
20346
21520
|
] }),
|
|
20347
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-7", children:
|
|
21521
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-7", children: t.weekdays.map((label) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20348
21522
|
"span",
|
|
20349
21523
|
{
|
|
20350
21524
|
className: "flex h-[20px] items-center justify-center text-[12px] font-normal text-[color:var(--cmp-datepicker-calendar-week-color)]",
|
|
@@ -20436,11 +21610,6 @@ var modeListItemClass = (selected, disabled) => cn(
|
|
|
20436
21610
|
!disabled && !selected && "typo-field-sm-medium cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)] text-[color:var(--cmp-datepicker-mode-item-content-default)] hover:bg-[var(--cmp-datepicker-mode-item-bg-hover)] hover:text-[color:var(--cmp-datepicker-mode-item-content-hover)]",
|
|
20437
21611
|
!disabled && selected && "typo-field-sm-bold cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)] text-[color:var(--cmp-datepicker-mode-item-content-selected)]"
|
|
20438
21612
|
);
|
|
20439
|
-
var MODE_NOUN = {
|
|
20440
|
-
date: "\uB0A0\uC9DC",
|
|
20441
|
-
month: "\uC6D4",
|
|
20442
|
-
year: "\uC5F0\uB3C4"
|
|
20443
|
-
};
|
|
20444
21613
|
var YEAR_LIST_EDGE_BUFFER = 24;
|
|
20445
21614
|
var YEAR_LIST_EXPAND_SIZE = 80;
|
|
20446
21615
|
var MONTHS = Array.from({ length: 12 }, (_, i) => i + 1);
|
|
@@ -20594,6 +21763,7 @@ function SDatePickerYearListbox({
|
|
|
20594
21763
|
);
|
|
20595
21764
|
}
|
|
20596
21765
|
function MonthWheel({ year, value, selectable, onCommit }) {
|
|
21766
|
+
const t = useLocale().messages.date;
|
|
20597
21767
|
const listRef = react.useRef(null);
|
|
20598
21768
|
const initialValueRef = react.useRef(value);
|
|
20599
21769
|
react.useLayoutEffect(() => {
|
|
@@ -20614,7 +21784,7 @@ function MonthWheel({ year, value, selectable, onCommit }) {
|
|
|
20614
21784
|
children: MONTHS.map((month) => {
|
|
20615
21785
|
const selected = month === value;
|
|
20616
21786
|
const disabled = isMonthDisabled(year, month, selectable);
|
|
20617
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
21787
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20618
21788
|
"button",
|
|
20619
21789
|
{
|
|
20620
21790
|
type: "button",
|
|
@@ -20623,10 +21793,7 @@ function MonthWheel({ year, value, selectable, onCommit }) {
|
|
|
20623
21793
|
disabled,
|
|
20624
21794
|
className: modeListItemClass(selected, disabled),
|
|
20625
21795
|
onClick: () => !disabled && onCommit(month),
|
|
20626
|
-
children:
|
|
20627
|
-
month,
|
|
20628
|
-
"\uC6D4"
|
|
20629
|
-
]
|
|
21796
|
+
children: t.monthLabel(month)
|
|
20630
21797
|
},
|
|
20631
21798
|
month
|
|
20632
21799
|
);
|
|
@@ -20723,6 +21890,8 @@ function SDatePicker({
|
|
|
20723
21890
|
className,
|
|
20724
21891
|
style
|
|
20725
21892
|
}) {
|
|
21893
|
+
const runRules2 = useRunRules();
|
|
21894
|
+
const t = useLocale().messages.date;
|
|
20726
21895
|
const portalContainer = usePortalContainer();
|
|
20727
21896
|
const [open, setOpen] = react.useState(false);
|
|
20728
21897
|
const triggerId = useFieldControlId();
|
|
@@ -20731,11 +21900,16 @@ function SDatePicker({
|
|
|
20731
21900
|
const [ruleError, setRuleError] = react.useState("");
|
|
20732
21901
|
const hasValue = value != null && value !== "";
|
|
20733
21902
|
const weekday = showWeekday && mode === "date";
|
|
21903
|
+
const clearLabel = {
|
|
21904
|
+
date: t.clearDate,
|
|
21905
|
+
month: t.clearMonth,
|
|
21906
|
+
year: t.clearYear
|
|
21907
|
+
};
|
|
20734
21908
|
const resolvedPlaceholder = placeholder ?? (mode === "year" ? "YYYY" : mode === "month" ? "YYYY-MM" : "YYYY-MM-DD");
|
|
20735
21909
|
useFormField({
|
|
20736
21910
|
name,
|
|
20737
21911
|
validate: () => {
|
|
20738
|
-
const msg =
|
|
21912
|
+
const msg = runRules2(value, rules);
|
|
20739
21913
|
setRuleError(msg);
|
|
20740
21914
|
return msg === "";
|
|
20741
21915
|
},
|
|
@@ -20769,7 +21943,7 @@ function SDatePicker({
|
|
|
20769
21943
|
typo: "typo-field-sm-default",
|
|
20770
21944
|
radius: "var(--cmp-datepicker-sm-radius)"
|
|
20771
21945
|
};
|
|
20772
|
-
const weekdayW = weekday ? weekdaySuffixWidth(baseDims.fontSize) : 0;
|
|
21946
|
+
const weekdayW = weekday ? weekdaySuffixWidth(baseDims.fontSize, t) : 0;
|
|
20773
21947
|
const dims = {
|
|
20774
21948
|
...baseDims,
|
|
20775
21949
|
minW: baseDims.minW + weekdayW,
|
|
@@ -20778,16 +21952,16 @@ function SDatePicker({
|
|
|
20778
21952
|
};
|
|
20779
21953
|
const select = (date) => {
|
|
20780
21954
|
onValueChange?.(date);
|
|
20781
|
-
if (rules && rules.length > 0) setRuleError(
|
|
21955
|
+
if (rules && rules.length > 0) setRuleError(runRules2(date, rules));
|
|
20782
21956
|
setOpen(false);
|
|
20783
21957
|
};
|
|
20784
21958
|
const clear = () => {
|
|
20785
21959
|
onValueChange?.(null);
|
|
20786
|
-
if (rules && rules.length > 0) setRuleError(
|
|
21960
|
+
if (rules && rules.length > 0) setRuleError(runRules2(null, rules));
|
|
20787
21961
|
};
|
|
20788
21962
|
const selectListboxValue = (nextValue) => {
|
|
20789
21963
|
onValueChange?.(nextValue);
|
|
20790
|
-
if (rules && rules.length > 0) setRuleError(
|
|
21964
|
+
if (rules && rules.length > 0) setRuleError(runRules2(nextValue, rules));
|
|
20791
21965
|
};
|
|
20792
21966
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20793
21967
|
SField,
|
|
@@ -20858,7 +22032,7 @@ function SDatePicker({
|
|
|
20858
22032
|
minWidth: dims.minW,
|
|
20859
22033
|
color: disabled ? "var(--cmp-datepicker-text-disabled)" : hasValue ? "var(--cmp-datepicker-text-default)" : "var(--cmp-field-hint-color)"
|
|
20860
22034
|
},
|
|
20861
|
-
children: hasValue ? weekday ? withWeekday(value) : value : resolvedPlaceholder
|
|
22035
|
+
children: hasValue ? weekday ? withWeekday(value, t) : value : resolvedPlaceholder
|
|
20862
22036
|
}
|
|
20863
22037
|
),
|
|
20864
22038
|
clearable && hasValue && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20866,7 +22040,7 @@ function SDatePicker({
|
|
|
20866
22040
|
{
|
|
20867
22041
|
icon: "close",
|
|
20868
22042
|
size: "xxs",
|
|
20869
|
-
ariaLabel:
|
|
22043
|
+
ariaLabel: clearLabel[mode],
|
|
20870
22044
|
onClick: (event) => {
|
|
20871
22045
|
event.stopPropagation();
|
|
20872
22046
|
clear();
|
|
@@ -20935,6 +22109,7 @@ function RangeCalendar({
|
|
|
20935
22109
|
onPendingStartChange,
|
|
20936
22110
|
onViewChange
|
|
20937
22111
|
}) {
|
|
22112
|
+
const t = useLocale().messages.date;
|
|
20938
22113
|
const today = todayStr();
|
|
20939
22114
|
const initial = splitDateTime(value?.[0]);
|
|
20940
22115
|
const base = initial.date || today;
|
|
@@ -21005,8 +22180,8 @@ function RangeCalendar({
|
|
|
21005
22180
|
const RANGE_BG = "var(--cmp-datepicker-calendar-range-bg)";
|
|
21006
22181
|
const pad = (v) => String(Number(v) || 0).padStart(2, "0");
|
|
21007
22182
|
const emit3 = (dateStart, dateEnd, time) => {
|
|
21008
|
-
const
|
|
21009
|
-
const range = showTimePicker ? [`${dateStart} ${pad(
|
|
22183
|
+
const t2 = time ?? { sH, sM, eH, eM };
|
|
22184
|
+
const range = showTimePicker ? [`${dateStart} ${pad(t2.sH)}:${pad(t2.sM)}`, `${dateEnd} ${pad(t2.eH)}:${pad(t2.eM)}`] : [dateStart, dateEnd];
|
|
21010
22185
|
lastEmitted.current = JSON.stringify(range);
|
|
21011
22186
|
onSelect(range);
|
|
21012
22187
|
};
|
|
@@ -21061,7 +22236,7 @@ function RangeCalendar({
|
|
|
21061
22236
|
{
|
|
21062
22237
|
icon: "chevronLeft",
|
|
21063
22238
|
size: "xxs",
|
|
21064
|
-
ariaLabel:
|
|
22239
|
+
ariaLabel: t.prevMonth,
|
|
21065
22240
|
onClick: goPrevMonth,
|
|
21066
22241
|
className: cn(!isLeft && "invisible pointer-events-none")
|
|
21067
22242
|
}
|
|
@@ -21076,13 +22251,13 @@ function RangeCalendar({
|
|
|
21076
22251
|
{
|
|
21077
22252
|
icon: "chevronRight",
|
|
21078
22253
|
size: "xxs",
|
|
21079
|
-
ariaLabel:
|
|
22254
|
+
ariaLabel: t.nextMonth,
|
|
21080
22255
|
onClick: goNextMonth,
|
|
21081
22256
|
className: cn(isLeft && "invisible pointer-events-none")
|
|
21082
22257
|
}
|
|
21083
22258
|
)
|
|
21084
22259
|
] }),
|
|
21085
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: GRID_COLS, children:
|
|
22260
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: GRID_COLS, children: t.weekdays.map((l) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21086
22261
|
"span",
|
|
21087
22262
|
{
|
|
21088
22263
|
className: "flex h-[20px] items-center justify-center text-[12px] font-normal text-[color:var(--cmp-datepicker-calendar-week-color)]",
|
|
@@ -21147,11 +22322,11 @@ function RangeCalendar({
|
|
|
21147
22322
|
children: [
|
|
21148
22323
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-[var(--cmp-datepicker-calendar-time-date-gap)]", children: [
|
|
21149
22324
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LABEL, children: num(yy, false) }),
|
|
21150
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children:
|
|
22325
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children: t.unitYear }),
|
|
21151
22326
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LABEL, children: num(mm, true) }),
|
|
21152
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children:
|
|
22327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children: t.unitMonth }),
|
|
21153
22328
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LABEL, children: num(dd, true) }),
|
|
21154
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children:
|
|
22329
|
+
t.unitDay && /* @__PURE__ */ jsxRuntime.jsx("span", { className: UNIT, children: t.unitDay })
|
|
21155
22330
|
] }),
|
|
21156
22331
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-[var(--cmp-datepicker-calendar-time-unit-gap)]", children: [
|
|
21157
22332
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21160,7 +22335,7 @@ function RangeCalendar({
|
|
|
21160
22335
|
type: "text",
|
|
21161
22336
|
inputMode: "numeric",
|
|
21162
22337
|
maxLength: 2,
|
|
21163
|
-
"aria-label":
|
|
22338
|
+
"aria-label": t.hourAria(suffix),
|
|
21164
22339
|
disabled: !active,
|
|
21165
22340
|
value: active ? hour : "",
|
|
21166
22341
|
placeholder: "--",
|
|
@@ -21176,7 +22351,7 @@ function RangeCalendar({
|
|
|
21176
22351
|
type: "text",
|
|
21177
22352
|
inputMode: "numeric",
|
|
21178
22353
|
maxLength: 2,
|
|
21179
|
-
"aria-label":
|
|
22354
|
+
"aria-label": t.minuteAria(suffix),
|
|
21180
22355
|
disabled: !active,
|
|
21181
22356
|
value: active ? minute : "",
|
|
21182
22357
|
placeholder: "--",
|
|
@@ -21204,9 +22379,17 @@ function RangeCalendar({
|
|
|
21204
22379
|
children: [
|
|
21205
22380
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center justify-center", children: [
|
|
21206
22381
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-[var(--cmp-datepicker-calendar-gap)] typo-field-md-medium", children: [
|
|
21207
|
-
/* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "chevronLeft", size: "xxs", ariaLabel:
|
|
22382
|
+
/* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "chevronLeft", size: "xxs", ariaLabel: t.prevYear, onClick: goPrevYear }),
|
|
21208
22383
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-[40px] items-center justify-center text-center", children: y }),
|
|
21209
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22384
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22385
|
+
SGhostButton,
|
|
22386
|
+
{
|
|
22387
|
+
icon: "chevronRight",
|
|
22388
|
+
size: "xxs",
|
|
22389
|
+
ariaLabel: t.nextYear,
|
|
22390
|
+
onClick: goNextYear
|
|
22391
|
+
}
|
|
22392
|
+
)
|
|
21210
22393
|
] }),
|
|
21211
22394
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21212
22395
|
"button",
|
|
@@ -21214,7 +22397,7 @@ function RangeCalendar({
|
|
|
21214
22397
|
type: "button",
|
|
21215
22398
|
onClick: goToday,
|
|
21216
22399
|
className: "absolute right-0 h-[24px] min-w-[37px] cursor-pointer bg-transparent text-center text-[12px] font-medium leading-[24px] text-[color:var(--cmp-datepicker-calendar-day-default-text)] hover:underline",
|
|
21217
|
-
children:
|
|
22400
|
+
children: t.today
|
|
21218
22401
|
}
|
|
21219
22402
|
)
|
|
21220
22403
|
] }),
|
|
@@ -21235,8 +22418,8 @@ function RangeCalendar({
|
|
|
21235
22418
|
showTimePicker && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21236
22419
|
/* @__PURE__ */ jsxRuntime.jsx(SDivider, {}),
|
|
21237
22420
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-[var(--cmp-datepicker-calendar-time-gap)]", children: [
|
|
21238
|
-
renderTimeSection("start", start,
|
|
21239
|
-
renderTimeSection("end", end,
|
|
22421
|
+
renderTimeSection("start", start, t.rangeFrom),
|
|
22422
|
+
renderTimeSection("end", end, t.rangeTo)
|
|
21240
22423
|
] })
|
|
21241
22424
|
] })
|
|
21242
22425
|
]
|
|
@@ -21276,6 +22459,8 @@ function SDateRangePicker({
|
|
|
21276
22459
|
className,
|
|
21277
22460
|
style
|
|
21278
22461
|
}) {
|
|
22462
|
+
const runRules2 = useRunRules();
|
|
22463
|
+
const t = useLocale().messages.date;
|
|
21279
22464
|
const portalContainer = usePortalContainer();
|
|
21280
22465
|
const [open, setOpen] = react.useState(false);
|
|
21281
22466
|
const triggerId = useFieldControlId();
|
|
@@ -21286,12 +22471,12 @@ function SDateRangePicker({
|
|
|
21286
22471
|
const hasDisplay = pendingStart != null || hasValue;
|
|
21287
22472
|
const rawStart = pendingStart ?? (hasValue ? value[0] : "");
|
|
21288
22473
|
const rawEnd = pendingStart ? "" : hasValue ? value[1] : "";
|
|
21289
|
-
const startText = showWeekday && rawStart ? withWeekday(rawStart) : rawStart;
|
|
21290
|
-
const endText = showWeekday && rawEnd ? withWeekday(rawEnd) : rawEnd;
|
|
22474
|
+
const startText = showWeekday && rawStart ? withWeekday(rawStart, t) : rawStart;
|
|
22475
|
+
const endText = showWeekday && rawEnd ? withWeekday(rawEnd, t) : rawEnd;
|
|
21291
22476
|
useFormField({
|
|
21292
22477
|
name,
|
|
21293
22478
|
validate: () => {
|
|
21294
|
-
const msg =
|
|
22479
|
+
const msg = runRules2(value, rules);
|
|
21295
22480
|
setRuleError(msg);
|
|
21296
22481
|
return msg === "";
|
|
21297
22482
|
},
|
|
@@ -21324,7 +22509,7 @@ function SDateRangePicker({
|
|
|
21324
22509
|
typo: "typo-field-sm-default",
|
|
21325
22510
|
radius: "var(--cmp-datepicker-sm-radius)"
|
|
21326
22511
|
};
|
|
21327
|
-
const weekdayW = showWeekday ? weekdaySuffixWidth(baseDims.fontSize) * 2 : 0;
|
|
22512
|
+
const weekdayW = showWeekday ? weekdaySuffixWidth(baseDims.fontSize, t) * 2 : 0;
|
|
21328
22513
|
const dims = {
|
|
21329
22514
|
...baseDims,
|
|
21330
22515
|
minW: baseDims.minW + weekdayW,
|
|
@@ -21334,13 +22519,13 @@ function SDateRangePicker({
|
|
|
21334
22519
|
const select = (r3) => {
|
|
21335
22520
|
setPendingStart(null);
|
|
21336
22521
|
onValueChange?.(r3);
|
|
21337
|
-
if (rules && rules.length > 0) setRuleError(
|
|
22522
|
+
if (rules && rules.length > 0) setRuleError(runRules2(r3, rules));
|
|
21338
22523
|
if (!showTimePicker) setOpen(false);
|
|
21339
22524
|
};
|
|
21340
22525
|
const clear = () => {
|
|
21341
22526
|
setPendingStart(null);
|
|
21342
22527
|
onValueChange?.(null);
|
|
21343
|
-
if (rules && rules.length > 0) setRuleError(
|
|
22528
|
+
if (rules && rules.length > 0) setRuleError(runRules2(null, rules));
|
|
21344
22529
|
};
|
|
21345
22530
|
const resolvedPlaceholder = showTimePicker && placeholder === "YYYY-MM-DD ~ YYYY-MM-DD" ? "YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm" : placeholder;
|
|
21346
22531
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21435,7 +22620,7 @@ function SDateRangePicker({
|
|
|
21435
22620
|
{
|
|
21436
22621
|
icon: "close",
|
|
21437
22622
|
size: "xxs",
|
|
21438
|
-
ariaLabel:
|
|
22623
|
+
ariaLabel: t.clearPeriod,
|
|
21439
22624
|
onClick: (event) => {
|
|
21440
22625
|
event.stopPropagation();
|
|
21441
22626
|
clear();
|
|
@@ -21503,6 +22688,7 @@ var SChipImpl = /* @__PURE__ */ react.forwardRef(function SChip({
|
|
|
21503
22688
|
className,
|
|
21504
22689
|
style
|
|
21505
22690
|
}, ref) {
|
|
22691
|
+
const runRules2 = useRunRules();
|
|
21506
22692
|
const [editing, setEditing] = react.useState(false);
|
|
21507
22693
|
const [error, setError] = react.useState(errorProp);
|
|
21508
22694
|
const inputRef = react.useRef(null);
|
|
@@ -21543,7 +22729,7 @@ var SChipImpl = /* @__PURE__ */ react.forwardRef(function SChip({
|
|
|
21543
22729
|
const changed = next !== draftRef.current;
|
|
21544
22730
|
setEditing(false);
|
|
21545
22731
|
if (changed) onValueChange?.(next);
|
|
21546
|
-
if (rules && rules.length > 0) setError(
|
|
22732
|
+
if (rules && rules.length > 0) setError(runRules2(next, rules) !== "");
|
|
21547
22733
|
onBlur?.();
|
|
21548
22734
|
};
|
|
21549
22735
|
const cancel = () => {
|
|
@@ -21674,6 +22860,7 @@ function SFilePicker({
|
|
|
21674
22860
|
className,
|
|
21675
22861
|
style
|
|
21676
22862
|
}) {
|
|
22863
|
+
const runRules2 = useRunRules();
|
|
21677
22864
|
const autoId = react.useId();
|
|
21678
22865
|
const resolvedName = name ?? autoId;
|
|
21679
22866
|
const triggerId = `${autoId}-trigger`;
|
|
@@ -21689,7 +22876,7 @@ function SFilePicker({
|
|
|
21689
22876
|
useFormField({
|
|
21690
22877
|
name,
|
|
21691
22878
|
validate: () => {
|
|
21692
|
-
const msg =
|
|
22879
|
+
const msg = runRules2(files, rules);
|
|
21693
22880
|
setRuleError(msg);
|
|
21694
22881
|
return msg === "";
|
|
21695
22882
|
},
|
|
@@ -21721,7 +22908,7 @@ function SFilePicker({
|
|
|
21721
22908
|
}
|
|
21722
22909
|
const merged = [...existing, ...accepted];
|
|
21723
22910
|
onValueChange?.(merged);
|
|
21724
|
-
if (rules?.length) setRuleError(
|
|
22911
|
+
if (rules?.length) setRuleError(runRules2(merged, rules));
|
|
21725
22912
|
} else {
|
|
21726
22913
|
const { accepted, rejected, reason } = validate(arr);
|
|
21727
22914
|
if (reason) {
|
|
@@ -21729,7 +22916,7 @@ function SFilePicker({
|
|
|
21729
22916
|
return;
|
|
21730
22917
|
}
|
|
21731
22918
|
onValueChange?.(accepted[0]);
|
|
21732
|
-
if (rules?.length) setRuleError(
|
|
22919
|
+
if (rules?.length) setRuleError(runRules2(accepted[0], rules));
|
|
21733
22920
|
}
|
|
21734
22921
|
};
|
|
21735
22922
|
const clear = (e) => {
|
|
@@ -21889,6 +23076,7 @@ function SKeyValueTable({
|
|
|
21889
23076
|
className,
|
|
21890
23077
|
style
|
|
21891
23078
|
}) {
|
|
23079
|
+
const tc = useLocale().messages.common;
|
|
21892
23080
|
if (fields.length === 0) return null;
|
|
21893
23081
|
const emit3 = (name, value) => onChange?.({
|
|
21894
23082
|
name,
|
|
@@ -22066,7 +23254,7 @@ function SKeyValueTable({
|
|
|
22066
23254
|
{
|
|
22067
23255
|
className: "flex flex-shrink-0 items-center justify-center border-l border-solid border-[color:var(--cmp-table-border-color)] px-[var(--cmp-table-keyValue-search-paddingX)]",
|
|
22068
23256
|
style: { background: "var(--cmp-table-keyValue-search-bg)" },
|
|
22069
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SButton, { color: "neutral", outline: true, size: "md", label:
|
|
23257
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SButton, { color: "neutral", outline: true, size: "md", label: tc.search, onClick: () => onSearch?.() })
|
|
22070
23258
|
}
|
|
22071
23259
|
)
|
|
22072
23260
|
] });
|
|
@@ -22360,6 +23548,7 @@ function ChartRotatedCategoryLabels({
|
|
|
22360
23548
|
);
|
|
22361
23549
|
}
|
|
22362
23550
|
var ChartFrame = /* @__PURE__ */ react.forwardRef(function ChartFrame2({ title, unit, legend, legendPosition = "top", children, className, style, ...props }, ref) {
|
|
23551
|
+
const t = useLocale().messages.chart;
|
|
22363
23552
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22364
23553
|
"div",
|
|
22365
23554
|
{
|
|
@@ -22375,10 +23564,7 @@ var ChartFrame = /* @__PURE__ */ react.forwardRef(function ChartFrame2({ title,
|
|
|
22375
23564
|
(title || unit) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-(--cmp-chart-gap)", children: [
|
|
22376
23565
|
title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-md-medium text-(--cmp-chart-title-color)", children: title }),
|
|
22377
23566
|
unit && // ml-auto — title 유무와 관계없이 항상 오른쪽 끝에 붙는다.
|
|
22378
|
-
/* @__PURE__ */ jsxRuntime.
|
|
22379
|
-
"\uB2E8\uC704 : ",
|
|
22380
|
-
unit
|
|
22381
|
-
] })
|
|
23567
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto whitespace-nowrap typo-body-sm-default text-(--cmp-chart-unit-color)", children: t.unit(unit) })
|
|
22382
23568
|
] }),
|
|
22383
23569
|
legend && legendPosition === "top" && legend,
|
|
22384
23570
|
children,
|
|
@@ -22722,6 +23908,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
22722
23908
|
className,
|
|
22723
23909
|
style
|
|
22724
23910
|
}, ref) {
|
|
23911
|
+
const t = useLocale().messages.chart;
|
|
22725
23912
|
const vertical = direction === "vertical";
|
|
22726
23913
|
const rotateLabels = rotateCategoryLabels && vertical;
|
|
22727
23914
|
const { ref: plotRef, size } = useElementSize();
|
|
@@ -23099,7 +24286,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
23099
24286
|
width: size.width,
|
|
23100
24287
|
height: size.height,
|
|
23101
24288
|
role: "img",
|
|
23102
|
-
"aria-label":
|
|
24289
|
+
"aria-label": t.barSummary(categories.length, series.length, !!stacked),
|
|
23103
24290
|
children: [
|
|
23104
24291
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23105
24292
|
"text",
|
|
@@ -23349,6 +24536,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
23349
24536
|
className,
|
|
23350
24537
|
style
|
|
23351
24538
|
}, ref) {
|
|
24539
|
+
const t = useLocale().messages.chart;
|
|
23352
24540
|
const smooth = curve === "smooth";
|
|
23353
24541
|
const { ref: plotRef, size } = useElementSize();
|
|
23354
24542
|
const { ref: axisTextRef, size: axisText } = useElementSize(rotateCategoryLabels);
|
|
@@ -23675,7 +24863,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
23675
24863
|
height: size.height,
|
|
23676
24864
|
overflow: "visible",
|
|
23677
24865
|
role: "img",
|
|
23678
|
-
"aria-label":
|
|
24866
|
+
"aria-label": t.lineSummary(categories.length, series.length, !!stacked),
|
|
23679
24867
|
children: [
|
|
23680
24868
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23681
24869
|
"text",
|
|
@@ -23859,6 +25047,7 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
23859
25047
|
innerRatio,
|
|
23860
25048
|
kind
|
|
23861
25049
|
}, ref) {
|
|
25050
|
+
const t = useLocale().messages.chart;
|
|
23862
25051
|
const { ref: plotRef, size } = useElementSize();
|
|
23863
25052
|
const [hovered, setHovered] = react.useState(null);
|
|
23864
25053
|
const arcs = react.useMemo(() => {
|
|
@@ -23937,7 +25126,7 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
23937
25126
|
height: diameter,
|
|
23938
25127
|
overflow: "visible",
|
|
23939
25128
|
role: "img",
|
|
23940
|
-
"aria-label":
|
|
25129
|
+
"aria-label": t.radialSummary(arcs.length, t[kind]),
|
|
23941
25130
|
onMouseLeave: () => setHovered(null),
|
|
23942
25131
|
children: [
|
|
23943
25132
|
arcs.length === 0 ? (
|
|
@@ -24051,7 +25240,7 @@ var SPieChart = /* @__PURE__ */ react.forwardRef(function SPieChart2({
|
|
|
24051
25240
|
legendPosition,
|
|
24052
25241
|
showTooltip,
|
|
24053
25242
|
innerRatio: 0,
|
|
24054
|
-
kind: "
|
|
25243
|
+
kind: "pie"
|
|
24055
25244
|
}
|
|
24056
25245
|
);
|
|
24057
25246
|
});
|
|
@@ -24076,7 +25265,7 @@ var SDonutChart = /* @__PURE__ */ react.forwardRef(function SDonutChart2({
|
|
|
24076
25265
|
legendVariant,
|
|
24077
25266
|
showTooltip,
|
|
24078
25267
|
innerRatio: DONUT_INNER_RATIO,
|
|
24079
|
-
kind: "
|
|
25268
|
+
kind: "donut"
|
|
24080
25269
|
}
|
|
24081
25270
|
);
|
|
24082
25271
|
});
|
|
@@ -24536,7 +25725,9 @@ var SSkeleton = /* @__PURE__ */ react.forwardRef(function SSkeleton2({
|
|
|
24536
25725
|
}
|
|
24537
25726
|
);
|
|
24538
25727
|
});
|
|
24539
|
-
var STimelineImpl = /* @__PURE__ */ react.forwardRef(function STimeline({ groups, emptyText
|
|
25728
|
+
var STimelineImpl = /* @__PURE__ */ react.forwardRef(function STimeline({ groups, emptyText: emptyTextProp, className, ...rest }, ref) {
|
|
25729
|
+
const t = useLocale().messages.timeline;
|
|
25730
|
+
const emptyText = emptyTextProp === void 0 ? t.empty : emptyTextProp;
|
|
24540
25731
|
const filled = groups.filter((group) => group.entries.length > 0);
|
|
24541
25732
|
if (filled.length === 0) {
|
|
24542
25733
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25421,14 +26612,14 @@ var SEDITOR_HEADING_LABELS = {
|
|
|
25421
26612
|
var SEDITOR_FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 36, 48, 60, 72];
|
|
25422
26613
|
var SEDITOR_DEFAULT_FONT_SIZE = 12;
|
|
25423
26614
|
var SEDITOR_DEFAULT_COLORS = [
|
|
25424
|
-
{ label: "\uAE30\uBCF8", color: "var(--color-fg-primary)" },
|
|
25425
|
-
{ label: "\uBCF4\uC870", color: "var(--color-fg-secondary)" },
|
|
25426
|
-
{ label: "\uD750\uB9BC", color: "var(--color-fg-tertiary)" },
|
|
25427
|
-
{ label: "\uAC15\uC870", color: "var(--color-fg-accent)" },
|
|
25428
|
-
{ label: "\uBE0C\uB79C\uB4DC", color: "var(--color-fg-brand)" },
|
|
25429
|
-
{ label: "\uC131\uACF5", color: "var(--color-fg-success)" },
|
|
25430
|
-
{ label: "\uC8FC\uC758", color: "var(--color-fg-warning)" },
|
|
25431
|
-
{ label: "\uC704\uD5D8", color: "var(--color-fg-danger)" }
|
|
26615
|
+
{ key: "colorDefault", label: "\uAE30\uBCF8", color: "var(--color-fg-primary)" },
|
|
26616
|
+
{ key: "colorSecondary", label: "\uBCF4\uC870", color: "var(--color-fg-secondary)" },
|
|
26617
|
+
{ key: "colorMuted", label: "\uD750\uB9BC", color: "var(--color-fg-tertiary)" },
|
|
26618
|
+
{ key: "colorAccent", label: "\uAC15\uC870", color: "var(--color-fg-accent)" },
|
|
26619
|
+
{ key: "colorBrand", label: "\uBE0C\uB79C\uB4DC", color: "var(--color-fg-brand)" },
|
|
26620
|
+
{ key: "colorSuccess", label: "\uC131\uACF5", color: "var(--color-fg-success)" },
|
|
26621
|
+
{ key: "colorWarning", label: "\uC8FC\uC758", color: "var(--color-fg-warning)" },
|
|
26622
|
+
{ key: "colorDanger", label: "\uC704\uD5D8", color: "var(--color-fg-danger)" }
|
|
25432
26623
|
];
|
|
25433
26624
|
var TASK_LIST_CLASS = "sd-editor-task-list";
|
|
25434
26625
|
var TASK_ITEM_CLASS = "sd-editor-task-item";
|
|
@@ -25569,7 +26760,6 @@ var scrollMenuClass = cn(
|
|
|
25569
26760
|
FLOATING_SLIDE_ANIM,
|
|
25570
26761
|
SCROLLBAR_CLASS
|
|
25571
26762
|
);
|
|
25572
|
-
var FONT_SIZE_DEFAULT_LABEL = "\uAE30\uBCF8";
|
|
25573
26763
|
var FONT_SIZE_MENU_MAX_HEIGHT = "min(280px, var(--radix-dropdown-menu-content-available-height))";
|
|
25574
26764
|
var swatchClass = cn(
|
|
25575
26765
|
"flex h-[24px] w-[24px] cursor-pointer items-center justify-center rounded-[4px] outline-none",
|
|
@@ -25637,6 +26827,7 @@ var TableSizePicker = ({
|
|
|
25637
26827
|
disabled,
|
|
25638
26828
|
onPick
|
|
25639
26829
|
}) => {
|
|
26830
|
+
const t = useLocale().messages.editor;
|
|
25640
26831
|
const [size, setSize] = react.useState({ rows: 1, cols: 1 });
|
|
25641
26832
|
const gridRef = react.useRef(null);
|
|
25642
26833
|
react.useEffect(() => {
|
|
@@ -25655,7 +26846,7 @@ var TableSizePicker = ({
|
|
|
25655
26846
|
{
|
|
25656
26847
|
ref: gridRef,
|
|
25657
26848
|
role: "grid",
|
|
25658
|
-
"aria-label":
|
|
26849
|
+
"aria-label": t.tableSize,
|
|
25659
26850
|
"aria-disabled": disabled || void 0,
|
|
25660
26851
|
tabIndex: disabled ? -1 : 0,
|
|
25661
26852
|
className: cn("flex flex-col outline-none", disabled && "pointer-events-none opacity-40"),
|
|
@@ -25687,7 +26878,7 @@ var TableSizePicker = ({
|
|
|
25687
26878
|
{
|
|
25688
26879
|
type: "button",
|
|
25689
26880
|
role: "gridcell",
|
|
25690
|
-
"aria-label":
|
|
26881
|
+
"aria-label": t.tableCell(r3 + 1, c + 1),
|
|
25691
26882
|
"aria-selected": on,
|
|
25692
26883
|
tabIndex: -1,
|
|
25693
26884
|
className: "box-border cursor-pointer rounded-[3px] border border-solid p-0 outline-none",
|
|
@@ -25706,17 +26897,12 @@ var TableSizePicker = ({
|
|
|
25706
26897
|
}) }, r3))
|
|
25707
26898
|
}
|
|
25708
26899
|
),
|
|
25709
|
-
/* @__PURE__ */ jsxRuntime.
|
|
26900
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25710
26901
|
"div",
|
|
25711
26902
|
{
|
|
25712
26903
|
"aria-live": "polite",
|
|
25713
26904
|
className: "mt-[6px] text-center text-[12px] leading-[20px] text-[color:var(--sys-color-fg-secondary)]",
|
|
25714
|
-
children:
|
|
25715
|
-
size.rows,
|
|
25716
|
-
"\uD589 \xD7 ",
|
|
25717
|
-
size.cols,
|
|
25718
|
-
"\uC5F4"
|
|
25719
|
-
]
|
|
26905
|
+
children: t.tableSizeText(size.rows, size.cols)
|
|
25720
26906
|
}
|
|
25721
26907
|
)
|
|
25722
26908
|
] });
|
|
@@ -25740,27 +26926,30 @@ var LinkEditor = ({
|
|
|
25740
26926
|
onApply,
|
|
25741
26927
|
onRemove,
|
|
25742
26928
|
hasLink
|
|
25743
|
-
}) =>
|
|
25744
|
-
|
|
25745
|
-
|
|
25746
|
-
|
|
25747
|
-
|
|
25748
|
-
|
|
25749
|
-
|
|
25750
|
-
|
|
25751
|
-
|
|
25752
|
-
|
|
25753
|
-
|
|
25754
|
-
|
|
25755
|
-
|
|
25756
|
-
|
|
26929
|
+
}) => {
|
|
26930
|
+
const t = useLocale().messages.editor;
|
|
26931
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-[8px]", children: [
|
|
26932
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26933
|
+
SInput,
|
|
26934
|
+
{
|
|
26935
|
+
value: href,
|
|
26936
|
+
onValueChange: onHrefChange,
|
|
26937
|
+
type: "url",
|
|
26938
|
+
placeholder: "https://",
|
|
26939
|
+
width: "md",
|
|
26940
|
+
"aria-label": t.linkUrl,
|
|
26941
|
+
onKeyDown: (e) => {
|
|
26942
|
+
if (e.key === "Enter") {
|
|
26943
|
+
e.preventDefault();
|
|
26944
|
+
onApply();
|
|
26945
|
+
}
|
|
25757
26946
|
}
|
|
25758
26947
|
}
|
|
25759
|
-
|
|
25760
|
-
|
|
25761
|
-
|
|
25762
|
-
|
|
25763
|
-
|
|
26948
|
+
),
|
|
26949
|
+
/* @__PURE__ */ jsxRuntime.jsx(SButton, { size: "sm", label: t.apply, onClick: onApply }),
|
|
26950
|
+
hasLink && /* @__PURE__ */ jsxRuntime.jsx(SButton, { size: "sm", color: "neutral", outline: true, label: t.remove, onClick: onRemove })
|
|
26951
|
+
] });
|
|
26952
|
+
};
|
|
25764
26953
|
var TOOLBAR_BAR_CLASS = "sticky top-0 z-[1] flex flex-wrap items-center gap-[2px] border-b border-solid bg-inherit px-[8px] py-[4px]";
|
|
25765
26954
|
var TOOLBAR_BAR_STYLE = { borderBottomColor: "var(--sys-color-border-default)" };
|
|
25766
26955
|
var BUBBLE_BAR_CLASS = cn(
|
|
@@ -25827,6 +27016,11 @@ function EditorToolbarBar({
|
|
|
25827
27016
|
disabled,
|
|
25828
27017
|
variant = "bar"
|
|
25829
27018
|
}) {
|
|
27019
|
+
const t = useLocale().messages.editor;
|
|
27020
|
+
const colorOptions = react.useMemo(
|
|
27021
|
+
() => SEDITOR_DEFAULT_COLORS.map((option) => ({ color: option.color, label: t[option.key] })),
|
|
27022
|
+
[t]
|
|
27023
|
+
);
|
|
25830
27024
|
const portalContainer = usePortalContainer();
|
|
25831
27025
|
const insideModal = useInsideModal();
|
|
25832
27026
|
const isMobile = useIsMobile();
|
|
@@ -25897,7 +27091,7 @@ function EditorToolbarBar({
|
|
|
25897
27091
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25898
27092
|
ToolbarButton,
|
|
25899
27093
|
{
|
|
25900
|
-
label:
|
|
27094
|
+
label: t.headingLevel,
|
|
25901
27095
|
active: state2.heading !== 0,
|
|
25902
27096
|
disabled: off,
|
|
25903
27097
|
className: "px-[4px]",
|
|
@@ -25913,7 +27107,7 @@ function EditorToolbarBar({
|
|
|
25913
27107
|
{
|
|
25914
27108
|
className: menuItemClass,
|
|
25915
27109
|
onSelect: () => chain()?.setParagraph().run(),
|
|
25916
|
-
children:
|
|
27110
|
+
children: t.headingBody
|
|
25917
27111
|
}
|
|
25918
27112
|
),
|
|
25919
27113
|
SEDITOR_HEADING_LEVELS.map((level) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25921,7 +27115,7 @@ function EditorToolbarBar({
|
|
|
25921
27115
|
{
|
|
25922
27116
|
className: menuItemClass,
|
|
25923
27117
|
onSelect: () => chain()?.setHeading({ level }).run(),
|
|
25924
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: HEADING_ITEM_CLASS[level], children:
|
|
27118
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: HEADING_ITEM_CLASS[level], children: t.heading(level) })
|
|
25925
27119
|
},
|
|
25926
27120
|
level
|
|
25927
27121
|
))
|
|
@@ -25929,8 +27123,8 @@ function EditorToolbarBar({
|
|
|
25929
27123
|
] }, item4);
|
|
25930
27124
|
case "fontSize":
|
|
25931
27125
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
25932
|
-
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label:
|
|
25933
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ??
|
|
27126
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: t.fontSize, disabled: off, className: "px-[6px]", children: [
|
|
27127
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ?? t.fontSizeDefaultLabel }),
|
|
25934
27128
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: 12 })
|
|
25935
27129
|
] }) }),
|
|
25936
27130
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -25945,9 +27139,9 @@ function EditorToolbarBar({
|
|
|
25945
27139
|
RDropdown5__namespace.Item,
|
|
25946
27140
|
{
|
|
25947
27141
|
className: cn(menuItemClass, activeFontSize === null && menuItemSelectedClass),
|
|
25948
|
-
title:
|
|
27142
|
+
title: t.fontSizeDefault(SEDITOR_DEFAULT_FONT_SIZE),
|
|
25949
27143
|
onSelect: () => chain()?.unsetFontSize().run(),
|
|
25950
|
-
children:
|
|
27144
|
+
children: t.fontSizeDefaultLabel
|
|
25951
27145
|
}
|
|
25952
27146
|
),
|
|
25953
27147
|
SEDITOR_FONT_SIZES.map((size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25970,7 +27164,7 @@ function EditorToolbarBar({
|
|
|
25970
27164
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25971
27165
|
ToolbarButton,
|
|
25972
27166
|
{
|
|
25973
|
-
label:
|
|
27167
|
+
label: t.bold,
|
|
25974
27168
|
active: state2.bold,
|
|
25975
27169
|
"aria-pressed": state2.bold,
|
|
25976
27170
|
disabled: off,
|
|
@@ -25983,7 +27177,7 @@ function EditorToolbarBar({
|
|
|
25983
27177
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25984
27178
|
ToolbarButton,
|
|
25985
27179
|
{
|
|
25986
|
-
label:
|
|
27180
|
+
label: t.italic,
|
|
25987
27181
|
active: state2.italic,
|
|
25988
27182
|
"aria-pressed": state2.italic,
|
|
25989
27183
|
disabled: off,
|
|
@@ -25996,7 +27190,7 @@ function EditorToolbarBar({
|
|
|
25996
27190
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25997
27191
|
ToolbarButton,
|
|
25998
27192
|
{
|
|
25999
|
-
label:
|
|
27193
|
+
label: t.underline,
|
|
26000
27194
|
active: state2.underline,
|
|
26001
27195
|
"aria-pressed": state2.underline,
|
|
26002
27196
|
disabled: off,
|
|
@@ -26009,7 +27203,7 @@ function EditorToolbarBar({
|
|
|
26009
27203
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26010
27204
|
ToolbarButton,
|
|
26011
27205
|
{
|
|
26012
|
-
label:
|
|
27206
|
+
label: t.strike,
|
|
26013
27207
|
active: state2.strike,
|
|
26014
27208
|
"aria-pressed": state2.strike,
|
|
26015
27209
|
disabled: off,
|
|
@@ -26022,7 +27216,7 @@ function EditorToolbarBar({
|
|
|
26022
27216
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26023
27217
|
ToolbarButton,
|
|
26024
27218
|
{
|
|
26025
|
-
label:
|
|
27219
|
+
label: t.inlineCode,
|
|
26026
27220
|
active: state2.code,
|
|
26027
27221
|
"aria-pressed": state2.code,
|
|
26028
27222
|
disabled: off,
|
|
@@ -26036,7 +27230,7 @@ function EditorToolbarBar({
|
|
|
26036
27230
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26037
27231
|
ToolbarButton,
|
|
26038
27232
|
{
|
|
26039
|
-
label:
|
|
27233
|
+
label: t.textColor,
|
|
26040
27234
|
disabled: off,
|
|
26041
27235
|
onClick: () => setMobileView("color"),
|
|
26042
27236
|
children: /* @__PURE__ */ jsxRuntime.jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }) })
|
|
@@ -26044,14 +27238,14 @@ function EditorToolbarBar({
|
|
|
26044
27238
|
item4
|
|
26045
27239
|
);
|
|
26046
27240
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
26047
|
-
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label:
|
|
27241
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: t.textColor, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
|
|
26048
27242
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26049
27243
|
ColorPalette,
|
|
26050
27244
|
{
|
|
26051
27245
|
asMenu: true,
|
|
26052
|
-
colors:
|
|
27246
|
+
colors: colorOptions,
|
|
26053
27247
|
columns: 4,
|
|
26054
|
-
clearLabel:
|
|
27248
|
+
clearLabel: t.clearColor,
|
|
26055
27249
|
onPick: applyColor,
|
|
26056
27250
|
onClear: clearColor
|
|
26057
27251
|
}
|
|
@@ -26061,7 +27255,7 @@ function EditorToolbarBar({
|
|
|
26061
27255
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26062
27256
|
ToolbarButton,
|
|
26063
27257
|
{
|
|
26064
|
-
label:
|
|
27258
|
+
label: t.alignLeft,
|
|
26065
27259
|
active: state2.alignLeft,
|
|
26066
27260
|
"aria-pressed": state2.alignLeft,
|
|
26067
27261
|
disabled: off,
|
|
@@ -26074,7 +27268,7 @@ function EditorToolbarBar({
|
|
|
26074
27268
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26075
27269
|
ToolbarButton,
|
|
26076
27270
|
{
|
|
26077
|
-
label:
|
|
27271
|
+
label: t.alignCenter,
|
|
26078
27272
|
active: state2.alignCenter,
|
|
26079
27273
|
"aria-pressed": state2.alignCenter,
|
|
26080
27274
|
disabled: off,
|
|
@@ -26087,7 +27281,7 @@ function EditorToolbarBar({
|
|
|
26087
27281
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26088
27282
|
ToolbarButton,
|
|
26089
27283
|
{
|
|
26090
|
-
label:
|
|
27284
|
+
label: t.alignRight,
|
|
26091
27285
|
active: state2.alignRight,
|
|
26092
27286
|
"aria-pressed": state2.alignRight,
|
|
26093
27287
|
disabled: off,
|
|
@@ -26100,7 +27294,7 @@ function EditorToolbarBar({
|
|
|
26100
27294
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26101
27295
|
ToolbarButton,
|
|
26102
27296
|
{
|
|
26103
|
-
label:
|
|
27297
|
+
label: t.alignJustify,
|
|
26104
27298
|
active: state2.alignJustify,
|
|
26105
27299
|
"aria-pressed": state2.alignJustify,
|
|
26106
27300
|
disabled: off,
|
|
@@ -26113,7 +27307,7 @@ function EditorToolbarBar({
|
|
|
26113
27307
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26114
27308
|
ToolbarButton,
|
|
26115
27309
|
{
|
|
26116
|
-
label:
|
|
27310
|
+
label: t.bulletList,
|
|
26117
27311
|
active: state2.bulletList,
|
|
26118
27312
|
"aria-pressed": state2.bulletList,
|
|
26119
27313
|
disabled: off,
|
|
@@ -26126,7 +27320,7 @@ function EditorToolbarBar({
|
|
|
26126
27320
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26127
27321
|
ToolbarButton,
|
|
26128
27322
|
{
|
|
26129
|
-
label:
|
|
27323
|
+
label: t.orderedList,
|
|
26130
27324
|
active: state2.orderedList,
|
|
26131
27325
|
"aria-pressed": state2.orderedList,
|
|
26132
27326
|
disabled: off,
|
|
@@ -26139,7 +27333,7 @@ function EditorToolbarBar({
|
|
|
26139
27333
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26140
27334
|
ToolbarButton,
|
|
26141
27335
|
{
|
|
26142
|
-
label:
|
|
27336
|
+
label: t.taskList,
|
|
26143
27337
|
active: state2.taskList,
|
|
26144
27338
|
"aria-pressed": state2.taskList,
|
|
26145
27339
|
disabled: off,
|
|
@@ -26152,7 +27346,7 @@ function EditorToolbarBar({
|
|
|
26152
27346
|
const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
|
|
26153
27347
|
const listActive = state2.bulletList || state2.orderedList || state2.taskList;
|
|
26154
27348
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
26155
|
-
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label:
|
|
27349
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: t.list, active: listActive, disabled: off, className: "px-[4px]", children: [
|
|
26156
27350
|
/* @__PURE__ */ jsxRuntime.jsx(ListIcon, { size: ICON_SIZE }),
|
|
26157
27351
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
26158
27352
|
] }) }),
|
|
@@ -26164,7 +27358,7 @@ function EditorToolbarBar({
|
|
|
26164
27358
|
onSelect: () => chain()?.toggleBulletList().run(),
|
|
26165
27359
|
children: [
|
|
26166
27360
|
/* @__PURE__ */ jsxRuntime.jsx(IconBulletList, { size: 16, className: "mr-[6px]" }),
|
|
26167
|
-
|
|
27361
|
+
t.bulletList
|
|
26168
27362
|
]
|
|
26169
27363
|
}
|
|
26170
27364
|
),
|
|
@@ -26175,7 +27369,7 @@ function EditorToolbarBar({
|
|
|
26175
27369
|
onSelect: () => chain()?.toggleOrderedList().run(),
|
|
26176
27370
|
children: [
|
|
26177
27371
|
/* @__PURE__ */ jsxRuntime.jsx(IconOrderedList, { size: 16, className: "mr-[6px]" }),
|
|
26178
|
-
|
|
27372
|
+
t.orderedList
|
|
26179
27373
|
]
|
|
26180
27374
|
}
|
|
26181
27375
|
),
|
|
@@ -26186,7 +27380,7 @@ function EditorToolbarBar({
|
|
|
26186
27380
|
onSelect: () => chain()?.toggleTaskList().run(),
|
|
26187
27381
|
children: [
|
|
26188
27382
|
/* @__PURE__ */ jsxRuntime.jsx(IconTaskList, { size: 16, className: "mr-[6px]" }),
|
|
26189
|
-
|
|
27383
|
+
t.taskList
|
|
26190
27384
|
]
|
|
26191
27385
|
}
|
|
26192
27386
|
)
|
|
@@ -26197,7 +27391,7 @@ function EditorToolbarBar({
|
|
|
26197
27391
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26198
27392
|
ToolbarButton,
|
|
26199
27393
|
{
|
|
26200
|
-
label:
|
|
27394
|
+
label: t.blockquote,
|
|
26201
27395
|
active: state2.blockquote,
|
|
26202
27396
|
"aria-pressed": state2.blockquote,
|
|
26203
27397
|
disabled: off,
|
|
@@ -26210,7 +27404,7 @@ function EditorToolbarBar({
|
|
|
26210
27404
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26211
27405
|
ToolbarButton,
|
|
26212
27406
|
{
|
|
26213
|
-
label:
|
|
27407
|
+
label: t.codeBlock,
|
|
26214
27408
|
active: state2.codeBlock,
|
|
26215
27409
|
"aria-pressed": state2.codeBlock,
|
|
26216
27410
|
disabled: off,
|
|
@@ -26223,7 +27417,7 @@ function EditorToolbarBar({
|
|
|
26223
27417
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26224
27418
|
ToolbarButton,
|
|
26225
27419
|
{
|
|
26226
|
-
label:
|
|
27420
|
+
label: t.divider,
|
|
26227
27421
|
disabled: off,
|
|
26228
27422
|
onClick: () => chain()?.setHorizontalRule().run(),
|
|
26229
27423
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconHorizontalRule, { size: ICON_SIZE })
|
|
@@ -26235,7 +27429,7 @@ function EditorToolbarBar({
|
|
|
26235
27429
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26236
27430
|
ToolbarButton,
|
|
26237
27431
|
{
|
|
26238
|
-
label:
|
|
27432
|
+
label: t.link,
|
|
26239
27433
|
active: state2.link,
|
|
26240
27434
|
disabled: off,
|
|
26241
27435
|
onClick: () => setMobileView("link"),
|
|
@@ -26244,7 +27438,7 @@ function EditorToolbarBar({
|
|
|
26244
27438
|
item4
|
|
26245
27439
|
);
|
|
26246
27440
|
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: linkOpen, onOpenChange: setLinkOpen, children: [
|
|
26247
|
-
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label:
|
|
27441
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: t.link, active: state2.link, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE }) }) }),
|
|
26248
27442
|
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26249
27443
|
RPopover13__namespace.Content,
|
|
26250
27444
|
{
|
|
@@ -26271,13 +27465,13 @@ function EditorToolbarBar({
|
|
|
26271
27465
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26272
27466
|
ToolbarButton,
|
|
26273
27467
|
{
|
|
26274
|
-
label:
|
|
27468
|
+
label: t.insertImage,
|
|
26275
27469
|
disabled: off || uploading,
|
|
26276
27470
|
className: "px-[6px]",
|
|
26277
27471
|
onClick: () => fileInputRef.current?.click(),
|
|
26278
27472
|
children: [
|
|
26279
27473
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "image", size: ICON_SIZE }),
|
|
26280
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children:
|
|
27474
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: t.image })
|
|
26281
27475
|
]
|
|
26282
27476
|
},
|
|
26283
27477
|
item4
|
|
@@ -26290,10 +27484,19 @@ function EditorToolbarBar({
|
|
|
26290
27484
|
onOpenChange: setTableOpen,
|
|
26291
27485
|
modal: !insideModal,
|
|
26292
27486
|
children: [
|
|
26293
|
-
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26294
|
-
|
|
26295
|
-
|
|
26296
|
-
|
|
27487
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27488
|
+
ToolbarButton,
|
|
27489
|
+
{
|
|
27490
|
+
label: t.table,
|
|
27491
|
+
active: state2.inTable,
|
|
27492
|
+
disabled: off,
|
|
27493
|
+
className: "px-[6px]",
|
|
27494
|
+
children: [
|
|
27495
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconTable, { size: ICON_SIZE }),
|
|
27496
|
+
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
27497
|
+
]
|
|
27498
|
+
}
|
|
27499
|
+
) }),
|
|
26297
27500
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
26298
27501
|
!state2.inTable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26299
27502
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -26311,7 +27514,7 @@ function EditorToolbarBar({
|
|
|
26311
27514
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26312
27515
|
TableMenuItem,
|
|
26313
27516
|
{
|
|
26314
|
-
label:
|
|
27517
|
+
label: t.addRowAbove,
|
|
26315
27518
|
disabled: !state2.inTable,
|
|
26316
27519
|
onSelect: () => chain()?.addRowBefore().run()
|
|
26317
27520
|
}
|
|
@@ -26319,7 +27522,7 @@ function EditorToolbarBar({
|
|
|
26319
27522
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26320
27523
|
TableMenuItem,
|
|
26321
27524
|
{
|
|
26322
|
-
label:
|
|
27525
|
+
label: t.addRowBelow,
|
|
26323
27526
|
disabled: !state2.inTable,
|
|
26324
27527
|
onSelect: () => chain()?.addRowAfter().run()
|
|
26325
27528
|
}
|
|
@@ -26327,7 +27530,7 @@ function EditorToolbarBar({
|
|
|
26327
27530
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26328
27531
|
TableMenuItem,
|
|
26329
27532
|
{
|
|
26330
|
-
label:
|
|
27533
|
+
label: t.addColLeft,
|
|
26331
27534
|
disabled: !state2.inTable,
|
|
26332
27535
|
onSelect: () => chain()?.addColumnBefore().run()
|
|
26333
27536
|
}
|
|
@@ -26335,7 +27538,7 @@ function EditorToolbarBar({
|
|
|
26335
27538
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26336
27539
|
TableMenuItem,
|
|
26337
27540
|
{
|
|
26338
|
-
label:
|
|
27541
|
+
label: t.addColRight,
|
|
26339
27542
|
disabled: !state2.inTable,
|
|
26340
27543
|
onSelect: () => chain()?.addColumnAfter().run()
|
|
26341
27544
|
}
|
|
@@ -26344,7 +27547,7 @@ function EditorToolbarBar({
|
|
|
26344
27547
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26345
27548
|
TableMenuItem,
|
|
26346
27549
|
{
|
|
26347
|
-
label:
|
|
27550
|
+
label: t.mergeCells,
|
|
26348
27551
|
disabled: !state2.canMergeCells,
|
|
26349
27552
|
onSelect: () => chain()?.mergeCells().run()
|
|
26350
27553
|
}
|
|
@@ -26352,7 +27555,7 @@ function EditorToolbarBar({
|
|
|
26352
27555
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26353
27556
|
TableMenuItem,
|
|
26354
27557
|
{
|
|
26355
|
-
label:
|
|
27558
|
+
label: t.splitCell,
|
|
26356
27559
|
disabled: !state2.canSplitCell,
|
|
26357
27560
|
onSelect: () => chain()?.splitCell().run()
|
|
26358
27561
|
}
|
|
@@ -26360,7 +27563,7 @@ function EditorToolbarBar({
|
|
|
26360
27563
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26361
27564
|
TableMenuItem,
|
|
26362
27565
|
{
|
|
26363
|
-
label:
|
|
27566
|
+
label: t.toggleHeaderRow,
|
|
26364
27567
|
disabled: !state2.inTable,
|
|
26365
27568
|
onSelect: () => chain()?.toggleHeaderRow().run()
|
|
26366
27569
|
}
|
|
@@ -26368,7 +27571,7 @@ function EditorToolbarBar({
|
|
|
26368
27571
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26369
27572
|
TableMenuItem,
|
|
26370
27573
|
{
|
|
26371
|
-
label:
|
|
27574
|
+
label: t.toggleHeaderCol,
|
|
26372
27575
|
disabled: !state2.inTable,
|
|
26373
27576
|
onSelect: () => chain()?.toggleHeaderColumn().run()
|
|
26374
27577
|
}
|
|
@@ -26377,7 +27580,7 @@ function EditorToolbarBar({
|
|
|
26377
27580
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26378
27581
|
TableMenuItem,
|
|
26379
27582
|
{
|
|
26380
|
-
label:
|
|
27583
|
+
label: t.deleteRow,
|
|
26381
27584
|
disabled: !state2.inTable,
|
|
26382
27585
|
onSelect: () => chain()?.deleteRow().run()
|
|
26383
27586
|
}
|
|
@@ -26385,7 +27588,7 @@ function EditorToolbarBar({
|
|
|
26385
27588
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26386
27589
|
TableMenuItem,
|
|
26387
27590
|
{
|
|
26388
|
-
label:
|
|
27591
|
+
label: t.deleteCol,
|
|
26389
27592
|
disabled: !state2.inTable,
|
|
26390
27593
|
onSelect: () => chain()?.deleteColumn().run()
|
|
26391
27594
|
}
|
|
@@ -26393,7 +27596,7 @@ function EditorToolbarBar({
|
|
|
26393
27596
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26394
27597
|
TableMenuItem,
|
|
26395
27598
|
{
|
|
26396
|
-
label:
|
|
27599
|
+
label: t.deleteTable,
|
|
26397
27600
|
disabled: !state2.inTable,
|
|
26398
27601
|
onSelect: () => chain()?.deleteTable().run()
|
|
26399
27602
|
}
|
|
@@ -26407,7 +27610,7 @@ function EditorToolbarBar({
|
|
|
26407
27610
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26408
27611
|
ToolbarButton,
|
|
26409
27612
|
{
|
|
26410
|
-
label:
|
|
27613
|
+
label: t.undo,
|
|
26411
27614
|
disabled: off || !state2.canUndo,
|
|
26412
27615
|
onClick: () => chain()?.undo().run(),
|
|
26413
27616
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconUndo, { size: ICON_SIZE })
|
|
@@ -26418,7 +27621,7 @@ function EditorToolbarBar({
|
|
|
26418
27621
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26419
27622
|
ToolbarButton,
|
|
26420
27623
|
{
|
|
26421
|
-
label:
|
|
27624
|
+
label: t.redo,
|
|
26422
27625
|
disabled: off || !state2.canRedo,
|
|
26423
27626
|
onClick: () => chain()?.redo().run(),
|
|
26424
27627
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconRedo, { size: ICON_SIZE })
|
|
@@ -26431,21 +27634,21 @@ function EditorToolbarBar({
|
|
|
26431
27634
|
};
|
|
26432
27635
|
const shell = {
|
|
26433
27636
|
"role": "toolbar",
|
|
26434
|
-
"aria-label":
|
|
27637
|
+
"aria-label": t.toolbarLabel,
|
|
26435
27638
|
"aria-disabled": disabled || void 0,
|
|
26436
27639
|
"className": variant === "bubble" ? BUBBLE_BAR_CLASS : TOOLBAR_BAR_CLASS,
|
|
26437
27640
|
"style": variant === "bubble" ? void 0 : TOOLBAR_BAR_STYLE
|
|
26438
27641
|
};
|
|
26439
27642
|
if (mobileView !== "main") {
|
|
26440
27643
|
const editing = {
|
|
26441
|
-
color: { icon: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }), label:
|
|
26442
|
-
link: { icon: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE }), label:
|
|
27644
|
+
color: { icon: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }), label: t.textColor },
|
|
27645
|
+
link: { icon: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE }), label: t.link }
|
|
26443
27646
|
}[mobileView];
|
|
26444
27647
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...shell, children: [
|
|
26445
27648
|
/* @__PURE__ */ jsxRuntime.jsx("div", { role: "group", className: "flex items-center gap-[2px]", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26446
27649
|
ToolbarButton,
|
|
26447
27650
|
{
|
|
26448
|
-
label:
|
|
27651
|
+
label: t.closeEditing(editing.label),
|
|
26449
27652
|
className: "px-[4px]",
|
|
26450
27653
|
onClick: () => setMobileView("main"),
|
|
26451
27654
|
children: [
|
|
@@ -26467,9 +27670,9 @@ function EditorToolbarBar({
|
|
|
26467
27670
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
26468
27671
|
ColorPalette,
|
|
26469
27672
|
{
|
|
26470
|
-
colors:
|
|
27673
|
+
colors: colorOptions,
|
|
26471
27674
|
columns: 4,
|
|
26472
|
-
clearLabel:
|
|
27675
|
+
clearLabel: t.clearColor,
|
|
26473
27676
|
onPick: applyColor,
|
|
26474
27677
|
onClear: clearColor
|
|
26475
27678
|
}
|
|
@@ -26766,7 +27969,7 @@ var SEditor = /* @__PURE__ */ react.forwardRef(function SEditor2({
|
|
|
26766
27969
|
value,
|
|
26767
27970
|
defaultValue,
|
|
26768
27971
|
onValueChange,
|
|
26769
|
-
placeholder
|
|
27972
|
+
placeholder: placeholderProp,
|
|
26770
27973
|
minHeight = 200,
|
|
26771
27974
|
maxHeight,
|
|
26772
27975
|
simple = false,
|
|
@@ -26799,6 +28002,9 @@ var SEditor = /* @__PURE__ */ react.forwardRef(function SEditor2({
|
|
|
26799
28002
|
className,
|
|
26800
28003
|
style
|
|
26801
28004
|
}, ref) {
|
|
28005
|
+
const runRules2 = useRunRules();
|
|
28006
|
+
const t = useLocale().messages.editor;
|
|
28007
|
+
const placeholder = placeholderProp ?? t.placeholder;
|
|
26802
28008
|
const [ruleError, setRuleError] = react.useState("");
|
|
26803
28009
|
const [selfFocused, setSelfFocused] = react.useState(false);
|
|
26804
28010
|
const controlId = useFieldControlId();
|
|
@@ -26809,7 +28015,7 @@ var SEditor = /* @__PURE__ */ react.forwardRef(function SEditor2({
|
|
|
26809
28015
|
const editable = !disabled && !readOnly;
|
|
26810
28016
|
const handleInput = (html) => {
|
|
26811
28017
|
onValueChange?.(html);
|
|
26812
|
-
if (ruleError !== "") setRuleError(
|
|
28018
|
+
if (ruleError !== "") setRuleError(runRules2(html, rules));
|
|
26813
28019
|
};
|
|
26814
28020
|
const handleFocusChange = (next) => {
|
|
26815
28021
|
setSelfFocused(next);
|
|
@@ -26818,7 +28024,7 @@ var SEditor = /* @__PURE__ */ react.forwardRef(function SEditor2({
|
|
|
26818
28024
|
return;
|
|
26819
28025
|
}
|
|
26820
28026
|
onBlur?.();
|
|
26821
|
-
if (rules && rules.length > 0) setRuleError(
|
|
28027
|
+
if (rules && rules.length > 0) setRuleError(runRules2(htmlRef.current, rules));
|
|
26822
28028
|
};
|
|
26823
28029
|
const handleReady = () => {
|
|
26824
28030
|
if (!pendingFocusRef.current) return;
|
|
@@ -26828,7 +28034,7 @@ var SEditor = /* @__PURE__ */ react.forwardRef(function SEditor2({
|
|
|
26828
28034
|
useFormField({
|
|
26829
28035
|
name,
|
|
26830
28036
|
validate: () => {
|
|
26831
|
-
const msg =
|
|
28037
|
+
const msg = runRules2(htmlRef.current, rules);
|
|
26832
28038
|
setRuleError(msg);
|
|
26833
28039
|
return msg === "";
|
|
26834
28040
|
},
|
|
@@ -27002,6 +28208,8 @@ var SSlider = /* @__PURE__ */ react.forwardRef(function SSlider2({
|
|
|
27002
28208
|
className,
|
|
27003
28209
|
style
|
|
27004
28210
|
}, ref) {
|
|
28211
|
+
const runRules2 = useRunRules();
|
|
28212
|
+
const t = useLocale().messages.slider;
|
|
27005
28213
|
const isRange = Array.isArray(value);
|
|
27006
28214
|
const values = isRange ? value : [value ?? min];
|
|
27007
28215
|
const toOut = (v) => isRange ? [v[0], v[1]] : v[0];
|
|
@@ -27009,7 +28217,7 @@ var SSlider = /* @__PURE__ */ react.forwardRef(function SSlider2({
|
|
|
27009
28217
|
useFormField({
|
|
27010
28218
|
name,
|
|
27011
28219
|
validate: () => {
|
|
27012
|
-
const msg =
|
|
28220
|
+
const msg = runRules2(value, rules);
|
|
27013
28221
|
setRuleError(msg);
|
|
27014
28222
|
return msg === "";
|
|
27015
28223
|
},
|
|
@@ -27105,13 +28313,13 @@ var SSlider = /* @__PURE__ */ react.forwardRef(function SSlider2({
|
|
|
27105
28313
|
if (!interactive) return;
|
|
27106
28314
|
const next = toOut(v);
|
|
27107
28315
|
onValueChange?.(next);
|
|
27108
|
-
if (ruleError !== "") setRuleError(
|
|
28316
|
+
if (ruleError !== "") setRuleError(runRules2(next, rules));
|
|
27109
28317
|
},
|
|
27110
28318
|
onValueCommit: (v) => {
|
|
27111
28319
|
if (!interactive) return;
|
|
27112
28320
|
const next = toOut(v);
|
|
27113
28321
|
onValueCommit?.(next);
|
|
27114
|
-
if (rules && rules.length > 0) setRuleError(
|
|
28322
|
+
if (rules && rules.length > 0) setRuleError(runRules2(next, rules));
|
|
27115
28323
|
},
|
|
27116
28324
|
onPointerDown: () => interactive && setDragging(true),
|
|
27117
28325
|
onPointerUp: () => setDragging(false),
|
|
@@ -27160,7 +28368,7 @@ var SSlider = /* @__PURE__ */ react.forwardRef(function SSlider2({
|
|
|
27160
28368
|
RSlider__namespace.Thumb,
|
|
27161
28369
|
{
|
|
27162
28370
|
id: i === 0 ? thumbId : void 0,
|
|
27163
|
-
"aria-label": isRange ? `${label ?? ""} ${i === 0 ?
|
|
28371
|
+
"aria-label": isRange ? `${label ?? ""} ${i === 0 ? t.minValue : t.maxValue}`.trim() : label,
|
|
27164
28372
|
"aria-valuetext": formatValue(v),
|
|
27165
28373
|
"aria-readonly": readOnly || void 0,
|
|
27166
28374
|
onFocus: () => setFocusIndex(i),
|
|
@@ -27286,28 +28494,41 @@ var CHIPFILTER = {
|
|
|
27286
28494
|
itemTextSelected: "var(--cmp-chipFilter-item-text-selected)"
|
|
27287
28495
|
};
|
|
27288
28496
|
var DEFAULT_CUSTOM_MAX_RANGE = 90;
|
|
27289
|
-
var
|
|
27290
|
-
|
|
27291
|
-
|
|
27292
|
-
|
|
27293
|
-
|
|
27294
|
-
|
|
27295
|
-
|
|
27296
|
-
|
|
27297
|
-
|
|
27298
|
-
|
|
27299
|
-
|
|
27300
|
-
|
|
27301
|
-
|
|
27302
|
-
|
|
27303
|
-
|
|
27304
|
-
|
|
27305
|
-
|
|
27306
|
-
|
|
27307
|
-
|
|
27308
|
-
|
|
27309
|
-
|
|
27310
|
-
|
|
28497
|
+
var defaultPresetCache = /* @__PURE__ */ new WeakMap();
|
|
28498
|
+
var STRUCTURE_MESSAGES = resolveMessages(DEFAULT_LOCALE);
|
|
28499
|
+
var getDefaultPresets = (m) => {
|
|
28500
|
+
const cached = defaultPresetCache.get(m.chipFilter);
|
|
28501
|
+
if (cached) return cached;
|
|
28502
|
+
const t = m.chipFilter;
|
|
28503
|
+
const created = {
|
|
28504
|
+
period: [
|
|
28505
|
+
{ value: "day", label: t.periodDay },
|
|
28506
|
+
{ value: "month", label: t.periodMonth },
|
|
28507
|
+
{ value: "quarter", label: t.periodQuarter },
|
|
28508
|
+
{ value: "half", label: t.periodHalf },
|
|
28509
|
+
{ value: "year", label: t.periodYear },
|
|
28510
|
+
{ value: "custom", label: t.custom, custom: true }
|
|
28511
|
+
],
|
|
28512
|
+
/** presets 를 지정하지 않은 datepicker-range 필드가 쓰는 기본 프리셋 목록.
|
|
28513
|
+
* 프리셋 라디오 자체를 없애고 캘린더 하나만 두려면 presets: [] 를 명시한다 */
|
|
28514
|
+
range: [
|
|
28515
|
+
{ value: "today", label: t.today, resolve: () => todayIso() },
|
|
28516
|
+
{
|
|
28517
|
+
value: "last7",
|
|
28518
|
+
label: t.last7,
|
|
28519
|
+
resolve: () => [rangeStartIso(todayIso(), 7), todayIso()]
|
|
28520
|
+
},
|
|
28521
|
+
{
|
|
28522
|
+
value: "last30",
|
|
28523
|
+
label: t.last30,
|
|
28524
|
+
resolve: () => [rangeStartIso(todayIso(), 30), todayIso()]
|
|
28525
|
+
},
|
|
28526
|
+
{ value: "custom", label: t.custom, custom: true }
|
|
28527
|
+
]
|
|
28528
|
+
};
|
|
28529
|
+
defaultPresetCache.set(m.chipFilter, created);
|
|
28530
|
+
return created;
|
|
28531
|
+
};
|
|
27311
28532
|
var isKeywordValue = (value) => typeof value === "object" && value != null && !Array.isArray(value) && "keywords" in value;
|
|
27312
28533
|
var isPeriodValue = (value) => typeof value === "object" && value != null && !Array.isArray(value) && "unit" in value;
|
|
27313
28534
|
var keywordEntries = (value) => {
|
|
@@ -27399,18 +28620,20 @@ var addDaysIso = (iso, n) => {
|
|
|
27399
28620
|
};
|
|
27400
28621
|
var rangeStartIso = (today, days) => addDaysIso(today, -(days - 1));
|
|
27401
28622
|
var isInlineDateField = (field) => field.type === "datepicker-range" && field.radioButton === true && (field.presets?.length ?? 0) > 0;
|
|
27402
|
-
var getFieldPresets = (field) => {
|
|
27403
|
-
if (field.type === "datepicker-statistics") return field.presets ??
|
|
27404
|
-
return field.presets ??
|
|
28623
|
+
var getFieldPresets = (field, m) => {
|
|
28624
|
+
if (field.type === "datepicker-statistics") return field.presets ?? getDefaultPresets(m).period;
|
|
28625
|
+
return field.presets ?? getDefaultPresets(m).range;
|
|
27405
28626
|
};
|
|
27406
|
-
var getEffectiveMaxRange = (field) => {
|
|
28627
|
+
var getEffectiveMaxRange = (field, m) => {
|
|
27407
28628
|
if (field.maxRange !== void 0) return field.maxRange;
|
|
27408
|
-
const hasCustomPreset = getFieldPresets(field).some((preset) => preset.custom);
|
|
28629
|
+
const hasCustomPreset = getFieldPresets(field, m).some((preset) => preset.custom);
|
|
27409
28630
|
return hasCustomPreset ? DEFAULT_CUSTOM_MAX_RANGE : void 0;
|
|
27410
28631
|
};
|
|
27411
|
-
var getPresetLabel = (preset, maxRange) => {
|
|
27412
|
-
|
|
27413
|
-
|
|
28632
|
+
var getPresetLabel = (preset, maxRange, m) => {
|
|
28633
|
+
const t = m.chipFilter;
|
|
28634
|
+
if (!preset.custom || !maxRange || preset.label.toLowerCase().includes(t.maxWord.toLowerCase()))
|
|
28635
|
+
return preset.label;
|
|
28636
|
+
return `${preset.label} (${t.maxRangeHint(maxRange)})`;
|
|
27414
28637
|
};
|
|
27415
28638
|
var getDefaultPeriodInputValue = (unit, maxRange) => {
|
|
27416
28639
|
const today = todayIso();
|
|
@@ -27447,7 +28670,7 @@ var resolveFieldDefault = (field) => {
|
|
|
27447
28670
|
if (field.type === "datepicker-day") return todayIso();
|
|
27448
28671
|
if (field.type === "select" || field.type === "select-depth") return leafOptions(field)[0]?.value;
|
|
27449
28672
|
if (field.type === "datepicker-statistics") {
|
|
27450
|
-
const presets = getFieldPresets(field).filter((preset) => !preset.custom);
|
|
28673
|
+
const presets = getFieldPresets(field, STRUCTURE_MESSAGES).filter((preset) => !preset.custom);
|
|
27451
28674
|
const unit = presets.some((preset) => preset.value === "day") ? "day" : presets[0]?.value;
|
|
27452
28675
|
return unit ? createPeriodValue(unit) : void 0;
|
|
27453
28676
|
}
|
|
@@ -27495,20 +28718,16 @@ var isGroupSatisfied = (group, values) => {
|
|
|
27495
28718
|
if (group.rule.type === "requireAny") return keys.some((k) => !isEmptyValue(values[k]));
|
|
27496
28719
|
return true;
|
|
27497
28720
|
};
|
|
27498
|
-
var
|
|
27499
|
-
const
|
|
27500
|
-
if (
|
|
27501
|
-
return (code - 44032) % 28 === 0 ? vowel : consonant;
|
|
27502
|
-
};
|
|
27503
|
-
var defaultGroupTooltipMessage = (rule, fields) => {
|
|
27504
|
-
if (rule.type === "requireAll") return "\uD56D\uBAA9\uC744 \uBAA8\uB450 \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.";
|
|
28721
|
+
var defaultGroupTooltipMessage = (rule, fields, m) => {
|
|
28722
|
+
const t = m.chipFilter;
|
|
28723
|
+
if (rule.type === "requireAll") return t.requireAll;
|
|
27505
28724
|
if (rule.type === "requireAny") {
|
|
27506
28725
|
const name = rule.dataGroupName;
|
|
27507
|
-
if (!name) return
|
|
27508
|
-
return
|
|
28726
|
+
if (!name) return t.requireAnyDefault;
|
|
28727
|
+
return t.requireAnyNamed(name);
|
|
27509
28728
|
}
|
|
27510
|
-
const label = fields.find((f) => f.key === rule.key)?.label ??
|
|
27511
|
-
return
|
|
28729
|
+
const label = fields.find((f) => f.key === rule.key)?.label ?? t.fieldFallback;
|
|
28730
|
+
return t.requireField(label);
|
|
27512
28731
|
};
|
|
27513
28732
|
var toDateRange = (value) => Array.isArray(value) ? [value[0], value[1]] : [value, value];
|
|
27514
28733
|
var sameDateValue = (a, b) => {
|
|
@@ -27527,20 +28746,24 @@ var matchPresetId = (presets, value) => {
|
|
|
27527
28746
|
return presets.find((preset) => preset.custom)?.value ?? null;
|
|
27528
28747
|
};
|
|
27529
28748
|
var optionLabel = (field, value) => leafOptions(field).find((option) => option.value === value)?.label ?? String(value);
|
|
27530
|
-
var formatValueList = (labels) => {
|
|
28749
|
+
var formatValueList = (labels, m) => {
|
|
27531
28750
|
if (labels.length <= 1) return labels[0] ?? "";
|
|
27532
|
-
return
|
|
28751
|
+
return m.chipFilter.valueListMore(labels[0], labels.length - 1);
|
|
27533
28752
|
};
|
|
27534
|
-
var displayValue = (field, value) => {
|
|
28753
|
+
var displayValue = (field, value, m) => {
|
|
28754
|
+
const t = m.chipFilter;
|
|
27535
28755
|
if (isEmptyValue(value)) return "";
|
|
27536
28756
|
if (isMultiSelectType(field.type)) {
|
|
27537
28757
|
const optionsField = field;
|
|
27538
28758
|
const values = toArrayValue(value);
|
|
27539
28759
|
const selectableValues = selectableLeafValues(optionsField);
|
|
27540
28760
|
if (selectableValues.length > 1 && selectableValues.every((selectableValue) => values.includes(selectableValue))) {
|
|
27541
|
-
return
|
|
28761
|
+
return m.common.all;
|
|
27542
28762
|
}
|
|
27543
|
-
return formatValueList(
|
|
28763
|
+
return formatValueList(
|
|
28764
|
+
values.map((v) => optionLabel(optionsField, v)),
|
|
28765
|
+
m
|
|
28766
|
+
);
|
|
27544
28767
|
}
|
|
27545
28768
|
if (field.type === "select" || field.type === "select-depth") {
|
|
27546
28769
|
return optionLabel(field, value);
|
|
@@ -27551,23 +28774,24 @@ var displayValue = (field, value) => {
|
|
|
27551
28774
|
}
|
|
27552
28775
|
if (field.type === "datepicker-statistics") {
|
|
27553
28776
|
if (!isPeriodValue(value)) {
|
|
27554
|
-
const preset2 = getFieldPresets(field).find((p) => p.value === value);
|
|
28777
|
+
const preset2 = getFieldPresets(field, m).find((p) => p.value === value);
|
|
27555
28778
|
return preset2?.label ?? String(value);
|
|
27556
28779
|
}
|
|
27557
|
-
const preset = getFieldPresets(field).find((p) => p.value === value.unit);
|
|
28780
|
+
const preset = getFieldPresets(field, m).find((p) => p.value === value.unit);
|
|
27558
28781
|
const label = preset?.label ?? value.unit;
|
|
27559
|
-
if (value.unit === "quarter") return `${label}(${value.value ?? 1}
|
|
27560
|
-
if (value.unit === "half")
|
|
28782
|
+
if (value.unit === "quarter") return `${label}(${t.quarter(Number(value.value ?? 1))})`;
|
|
28783
|
+
if (value.unit === "half")
|
|
28784
|
+
return `${label}(${value.value === "second" ? t.secondHalf : t.firstHalf})`;
|
|
27561
28785
|
if (Array.isArray(value.value)) return `${value.value[0]} ~ ${value.value[1]}`;
|
|
27562
28786
|
return value.value != null && value.value !== "" ? String(value.value) : label;
|
|
27563
28787
|
}
|
|
27564
|
-
if (field.type === "keyword") return formatValueList(keywordEntries(value));
|
|
28788
|
+
if (field.type === "keyword") return formatValueList(keywordEntries(value), m);
|
|
27565
28789
|
return String(value);
|
|
27566
28790
|
};
|
|
27567
|
-
var chipDisplayValue = (field, value) => {
|
|
27568
|
-
const text = displayValue(field, value);
|
|
28791
|
+
var chipDisplayValue = (field, value, m) => {
|
|
28792
|
+
const text = displayValue(field, value, m);
|
|
27569
28793
|
if (field.type !== "datepicker-range" || isEmptyValue(value)) return text;
|
|
27570
|
-
const presets = getFieldPresets(field);
|
|
28794
|
+
const presets = getFieldPresets(field, m);
|
|
27571
28795
|
if (presets.length === 0) return text;
|
|
27572
28796
|
const preset = presets.find((p) => p.value === matchPresetId(presets, value));
|
|
27573
28797
|
return preset && !preset.custom ? `${preset.label}(${text})` : text;
|
|
@@ -27586,6 +28810,8 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27586
28810
|
className,
|
|
27587
28811
|
style
|
|
27588
28812
|
}, ref) {
|
|
28813
|
+
const messages = useLocale().messages;
|
|
28814
|
+
const t = messages.chipFilter;
|
|
27589
28815
|
const fields = react.useMemo(() => groups.flatMap((group) => group.fields), [groups]);
|
|
27590
28816
|
const values = normalizeValues(value);
|
|
27591
28817
|
const portalContainer = usePortalContainer();
|
|
@@ -27732,7 +28958,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27732
28958
|
if (currentOpenField?.type === "keyword") {
|
|
27733
28959
|
return { width: CHIPFILTER_LISTBOX_WIDTH };
|
|
27734
28960
|
}
|
|
27735
|
-
if ((currentOpenField?.type === "datepicker-range" || currentOpenField?.type === "datepicker-statistics") && getFieldPresets(currentOpenField).length > 0) {
|
|
28961
|
+
if ((currentOpenField?.type === "datepicker-range" || currentOpenField?.type === "datepicker-statistics") && getFieldPresets(currentOpenField, STRUCTURE_MESSAGES).length > 0) {
|
|
27736
28962
|
return { width: CHIPFILTER_DATE_PRESET_LISTBOX_WIDTH };
|
|
27737
28963
|
}
|
|
27738
28964
|
return { width: CHIPFILTER_LISTBOX_WIDTH };
|
|
@@ -27839,7 +29065,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27839
29065
|
const flushRun = () => {
|
|
27840
29066
|
if (runBuffer.length === 0) return;
|
|
27841
29067
|
const group = runGroupIndex != null ? groups[runGroupIndex] : void 0;
|
|
27842
|
-
const message = group?.rule ? group.tooltipMessage ?? defaultGroupTooltipMessage(group.rule, group.fields) : void 0;
|
|
29068
|
+
const message = group?.rule ? group.tooltipMessage ?? defaultGroupTooltipMessage(group.rule, group.fields, messages) : void 0;
|
|
27843
29069
|
if (message) {
|
|
27844
29070
|
nodes.push(
|
|
27845
29071
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -27904,7 +29130,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27904
29130
|
{
|
|
27905
29131
|
icon: "close",
|
|
27906
29132
|
size: "xxs",
|
|
27907
|
-
ariaLabel:
|
|
29133
|
+
ariaLabel: t.removeFilter(field.label),
|
|
27908
29134
|
className: "shrink-0",
|
|
27909
29135
|
onClick: handleClear
|
|
27910
29136
|
}
|
|
@@ -27913,7 +29139,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27913
29139
|
FilterChip,
|
|
27914
29140
|
{
|
|
27915
29141
|
field,
|
|
27916
|
-
valueText: chipDisplayValue(field, values[field.key]),
|
|
29142
|
+
valueText: chipDisplayValue(field, values[field.key], messages),
|
|
27917
29143
|
active: openKey === field.key,
|
|
27918
29144
|
applied: !isEmptyValue(values[field.key]),
|
|
27919
29145
|
disabled: disabled || field.disabled,
|
|
@@ -27965,7 +29191,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27965
29191
|
color: disabled || inactiveFields.length === 0 ? CHIPFILTER.addTextDisabled : CHIPFILTER.addText
|
|
27966
29192
|
}
|
|
27967
29193
|
),
|
|
27968
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
29194
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t.addFilter })
|
|
27969
29195
|
]
|
|
27970
29196
|
}
|
|
27971
29197
|
) }),
|
|
@@ -27981,7 +29207,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27981
29207
|
event.preventDefault();
|
|
27982
29208
|
},
|
|
27983
29209
|
className: cn("z-50 min-w-[180px]", FLOATING_SLIDE_ANIM),
|
|
27984
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(ListBox, { children: inactiveFields.length > 0 ? inactiveFields.map((field) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onClick: () => addField(field.key), children: field.label }, field.key)) : /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children:
|
|
29210
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ListBox, { children: inactiveFields.length > 0 ? inactiveFields.map((field) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onClick: () => addField(field.key), children: field.label }, field.key)) : /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children: t.noAddableFilter }) })
|
|
27985
29211
|
}
|
|
27986
29212
|
) })
|
|
27987
29213
|
] }),
|
|
@@ -27991,7 +29217,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27991
29217
|
size: "sm",
|
|
27992
29218
|
icon: "reset",
|
|
27993
29219
|
iconColor: "grey_80",
|
|
27994
|
-
label:
|
|
29220
|
+
label: t.resetSearch,
|
|
27995
29221
|
labelClassName: "text-grey-80",
|
|
27996
29222
|
disabled: disabled || !canReset,
|
|
27997
29223
|
onClick: reset,
|
|
@@ -28090,6 +29316,7 @@ function FilterChip({
|
|
|
28090
29316
|
onOpen,
|
|
28091
29317
|
onClear
|
|
28092
29318
|
}) {
|
|
29319
|
+
const t = useLocale().messages.chipFilter;
|
|
28093
29320
|
const border = disabled ? CHIPFILTER.chipDisabledBorder : warning ? CHIPFILTER.chipWarningBorder : applied ? active ? "var(--color-blue-strong)" : CHIPFILTER.chipAppliedBorder : active ? CHIPFILTER.chipActiveBorder : CHIPFILTER.chipDefaultBorder;
|
|
28094
29321
|
const background = disabled ? CHIPFILTER.chipDisabledBg : applied ? CHIPFILTER.chipAppliedBg : CHIPFILTER.chipDefaultBg;
|
|
28095
29322
|
const textColor = disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipDefaultText;
|
|
@@ -28181,7 +29408,7 @@ function FilterChip({
|
|
|
28181
29408
|
{
|
|
28182
29409
|
icon: "close",
|
|
28183
29410
|
size: "xxs",
|
|
28184
|
-
ariaLabel:
|
|
29411
|
+
ariaLabel: t.clearFilter(field.label),
|
|
28185
29412
|
className: "shrink-0 self-center",
|
|
28186
29413
|
onClick: onClear
|
|
28187
29414
|
}
|
|
@@ -28199,6 +29426,8 @@ function EditorPanel({
|
|
|
28199
29426
|
onDraftChange,
|
|
28200
29427
|
onClose
|
|
28201
29428
|
}) {
|
|
29429
|
+
const messages = useLocale().messages;
|
|
29430
|
+
const t = messages.chipFilter;
|
|
28202
29431
|
const wrapsInPaddedTop = field.type === "datepicker-day" || field.type === "datepicker-range" || field.type === "datepicker-statistics";
|
|
28203
29432
|
const isScrollableListField = isSelectType(field.type) || field.type === "keyword";
|
|
28204
29433
|
const isMulti = isMultiSelectType(field.type);
|
|
@@ -28243,7 +29472,7 @@ function EditorPanel({
|
|
|
28243
29472
|
STextLink,
|
|
28244
29473
|
{
|
|
28245
29474
|
size: "sm",
|
|
28246
|
-
label: allSelected ?
|
|
29475
|
+
label: allSelected ? t.selectNone : t.selectAll,
|
|
28247
29476
|
labelClassName: "font-bold",
|
|
28248
29477
|
disabled,
|
|
28249
29478
|
onClick: toggleSelectAll,
|
|
@@ -28266,7 +29495,7 @@ function EditorPanel({
|
|
|
28266
29495
|
STextLink,
|
|
28267
29496
|
{
|
|
28268
29497
|
size: "sm",
|
|
28269
|
-
label:
|
|
29498
|
+
label: messages.common.search,
|
|
28270
29499
|
labelClassName: "font-bold",
|
|
28271
29500
|
onClick: onClose,
|
|
28272
29501
|
style: { color: CHIPFILTER.chipAppliedValue }
|
|
@@ -28352,8 +29581,9 @@ function DatePresetEditor({
|
|
|
28352
29581
|
disabled,
|
|
28353
29582
|
onValueChange
|
|
28354
29583
|
}) {
|
|
28355
|
-
const
|
|
28356
|
-
const
|
|
29584
|
+
const messages = useLocale().messages;
|
|
29585
|
+
const presets = getFieldPresets(field, messages);
|
|
29586
|
+
const maxRange = getEffectiveMaxRange(field, messages);
|
|
28357
29587
|
const [selectedId, setSelectedId] = react.useState(() => matchPresetId(presets, value));
|
|
28358
29588
|
const syncedInitialValueRef = react.useRef(!isEmptyValue(value));
|
|
28359
29589
|
react.useEffect(() => {
|
|
@@ -28391,7 +29621,7 @@ function DatePresetEditor({
|
|
|
28391
29621
|
{
|
|
28392
29622
|
val: preset.value,
|
|
28393
29623
|
value: selectedId,
|
|
28394
|
-
label: getPresetLabel(preset, maxRange),
|
|
29624
|
+
label: getPresetLabel(preset, maxRange, messages),
|
|
28395
29625
|
disabled,
|
|
28396
29626
|
onValueChange: () => selectPreset(preset)
|
|
28397
29627
|
},
|
|
@@ -28415,8 +29645,10 @@ function PeriodPresetEditor({
|
|
|
28415
29645
|
disabled,
|
|
28416
29646
|
onValueChange
|
|
28417
29647
|
}) {
|
|
28418
|
-
const
|
|
28419
|
-
const
|
|
29648
|
+
const messages = useLocale().messages;
|
|
29649
|
+
const t = messages.chipFilter;
|
|
29650
|
+
const presets = getFieldPresets(field, messages);
|
|
29651
|
+
const maxRange = getEffectiveMaxRange(field, messages);
|
|
28420
29652
|
const firstUnit = presets.find((preset) => !preset.custom)?.value ?? "day";
|
|
28421
29653
|
const [selectedId, setSelectedId] = react.useState(() => matchPresetId(presets, value) ?? firstUnit);
|
|
28422
29654
|
const periodValue = isPeriodValue(value) ? value : createPeriodValue(selectedId ?? firstUnit, maxRange);
|
|
@@ -28469,10 +29701,10 @@ function PeriodPresetEditor({
|
|
|
28469
29701
|
onValueChange: updateInputValue,
|
|
28470
29702
|
disabled,
|
|
28471
29703
|
options: [
|
|
28472
|
-
{ value: 1, label:
|
|
28473
|
-
{ value: 2, label:
|
|
28474
|
-
{ value: 3, label:
|
|
28475
|
-
{ value: 4, label:
|
|
29704
|
+
{ value: 1, label: t.quarter(1) },
|
|
29705
|
+
{ value: 2, label: t.quarter(2) },
|
|
29706
|
+
{ value: 3, label: t.quarter(3) },
|
|
29707
|
+
{ value: 4, label: t.quarter(4) }
|
|
28476
29708
|
]
|
|
28477
29709
|
}
|
|
28478
29710
|
);
|
|
@@ -28485,8 +29717,8 @@ function PeriodPresetEditor({
|
|
|
28485
29717
|
onValueChange: updateInputValue,
|
|
28486
29718
|
disabled,
|
|
28487
29719
|
options: [
|
|
28488
|
-
{ value: "first", label:
|
|
28489
|
-
{ value: "second", label:
|
|
29720
|
+
{ value: "first", label: t.firstHalf },
|
|
29721
|
+
{ value: "second", label: t.secondHalf }
|
|
28490
29722
|
]
|
|
28491
29723
|
}
|
|
28492
29724
|
);
|
|
@@ -28523,7 +29755,7 @@ function PeriodPresetEditor({
|
|
|
28523
29755
|
{
|
|
28524
29756
|
val: preset.value,
|
|
28525
29757
|
value: selectedId,
|
|
28526
|
-
label: getPresetLabel(preset, maxRange),
|
|
29758
|
+
label: getPresetLabel(preset, maxRange, messages),
|
|
28527
29759
|
disabled,
|
|
28528
29760
|
onValueChange: () => selectPreset(preset)
|
|
28529
29761
|
},
|
|
@@ -28541,6 +29773,8 @@ function InlineDatePresetFilter({
|
|
|
28541
29773
|
onValueChange,
|
|
28542
29774
|
onClear
|
|
28543
29775
|
}) {
|
|
29776
|
+
const messages = useLocale().messages;
|
|
29777
|
+
const t = messages.chipFilter;
|
|
28544
29778
|
const presets = (field.presets ?? []).filter((preset) => !preset.custom);
|
|
28545
29779
|
const [selectedId, setSelectedId] = react.useState(() => matchPresetId(presets, value));
|
|
28546
29780
|
const syncedInitialValueRef = react.useRef(!isEmptyValue(value));
|
|
@@ -28573,7 +29807,7 @@ function InlineDatePresetFilter({
|
|
|
28573
29807
|
field.label,
|
|
28574
29808
|
":"
|
|
28575
29809
|
] }),
|
|
28576
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-bold", style: { color: badgeValueColor }, children: displayValue(field, value) })
|
|
29810
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-bold", style: { color: badgeValueColor }, children: displayValue(field, value, messages) })
|
|
28577
29811
|
] });
|
|
28578
29812
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-[8px]", children: [
|
|
28579
29813
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -28643,7 +29877,7 @@ function InlineDatePresetFilter({
|
|
|
28643
29877
|
{
|
|
28644
29878
|
icon: "close",
|
|
28645
29879
|
size: "xxs",
|
|
28646
|
-
ariaLabel:
|
|
29880
|
+
ariaLabel: t.clearFilter(field.label),
|
|
28647
29881
|
className: "shrink-0 self-center",
|
|
28648
29882
|
onClick: onClear
|
|
28649
29883
|
}
|
|
@@ -28653,14 +29887,14 @@ function InlineDatePresetFilter({
|
|
|
28653
29887
|
)
|
|
28654
29888
|
] });
|
|
28655
29889
|
}
|
|
28656
|
-
var
|
|
28657
|
-
{ value: "contains", label:
|
|
28658
|
-
{ value: "exact", label:
|
|
29890
|
+
var matchModeOptions = (t) => [
|
|
29891
|
+
{ value: "contains", label: t.keywordContains },
|
|
29892
|
+
{ value: "exact", label: t.keywordExact }
|
|
28659
29893
|
];
|
|
28660
|
-
var
|
|
29894
|
+
var excludeMatchModeOption = (t) => ({
|
|
28661
29895
|
value: "excludes",
|
|
28662
|
-
label:
|
|
28663
|
-
};
|
|
29896
|
+
label: t.keywordExcludes
|
|
29897
|
+
});
|
|
28664
29898
|
function KeywordEditor({
|
|
28665
29899
|
field,
|
|
28666
29900
|
value,
|
|
@@ -28669,6 +29903,7 @@ function KeywordEditor({
|
|
|
28669
29903
|
onValueCommit,
|
|
28670
29904
|
onDraftChange
|
|
28671
29905
|
}) {
|
|
29906
|
+
const t = useLocale().messages.chipFilter;
|
|
28672
29907
|
const entries4 = keywordEntries(value);
|
|
28673
29908
|
const [draftText, setDraftText] = react.useState("");
|
|
28674
29909
|
const [mode, setMode] = react.useState(
|
|
@@ -28741,7 +29976,7 @@ function KeywordEditor({
|
|
|
28741
29976
|
{
|
|
28742
29977
|
className: "shrink-0 whitespace-nowrap typo-body-sm-medium",
|
|
28743
29978
|
style: { color: CHIPFILTER.listboxLabel },
|
|
28744
|
-
children:
|
|
29979
|
+
children: t.keywordCondition
|
|
28745
29980
|
}
|
|
28746
29981
|
),
|
|
28747
29982
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -28749,7 +29984,7 @@ function KeywordEditor({
|
|
|
28749
29984
|
{
|
|
28750
29985
|
size: "xs",
|
|
28751
29986
|
style: { width: 150 },
|
|
28752
|
-
options: field.excludeMode ? [...
|
|
29987
|
+
options: field.excludeMode ? [...matchModeOptions(t), excludeMatchModeOption(t)] : matchModeOptions(t),
|
|
28753
29988
|
value: mode,
|
|
28754
29989
|
disabled,
|
|
28755
29990
|
onValueChange: (next) => changeMode(next)
|
|
@@ -28764,7 +29999,7 @@ function KeywordEditor({
|
|
|
28764
29999
|
ref: inputRef,
|
|
28765
30000
|
value: draftText,
|
|
28766
30001
|
disabled,
|
|
28767
|
-
placeholder: field.placeholder ?? (field.input === "csv" ?
|
|
30002
|
+
placeholder: field.placeholder ?? (field.input === "csv" ? t.keywordHintCsv : t.keywordHintEnter),
|
|
28768
30003
|
onChange: (event) => changeDraft(event.target.value),
|
|
28769
30004
|
onPaste,
|
|
28770
30005
|
onKeyDown,
|
|
@@ -28796,6 +30031,7 @@ function KeywordEntryRow({
|
|
|
28796
30031
|
disabled,
|
|
28797
30032
|
onRemove
|
|
28798
30033
|
}) {
|
|
30034
|
+
const t = useLocale().messages.chipFilter;
|
|
28799
30035
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28800
30036
|
"div",
|
|
28801
30037
|
{
|
|
@@ -28814,7 +30050,7 @@ function KeywordEntryRow({
|
|
|
28814
30050
|
{
|
|
28815
30051
|
icon: "close",
|
|
28816
30052
|
size: "xxs",
|
|
28817
|
-
ariaLabel:
|
|
30053
|
+
ariaLabel: t.removeItem(label),
|
|
28818
30054
|
className: "invisible shrink-0 group-hover:visible",
|
|
28819
30055
|
onClick: onRemove
|
|
28820
30056
|
}
|
|
@@ -28833,6 +30069,7 @@ function OptionList({
|
|
|
28833
30069
|
disabled,
|
|
28834
30070
|
onValueChange
|
|
28835
30071
|
}) {
|
|
30072
|
+
const messages = useLocale().messages;
|
|
28836
30073
|
const selected = multiple ? toArrayValue(value) : [];
|
|
28837
30074
|
const singleValue = !multiple && (typeof value === "string" || typeof value === "number") ? value : null;
|
|
28838
30075
|
const [search, setSearch] = react.useState("");
|
|
@@ -28864,7 +30101,7 @@ function OptionList({
|
|
|
28864
30101
|
allSelected ? selected.filter((v) => !leafValues.includes(v)) : [...selected, ...leafValues.filter((v) => !selected.includes(v))]
|
|
28865
30102
|
);
|
|
28866
30103
|
};
|
|
28867
|
-
if (flat.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children:
|
|
30104
|
+
if (flat.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children: messages.select.empty });
|
|
28868
30105
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
28869
30106
|
showSearch && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28870
30107
|
"div",
|
|
@@ -28879,7 +30116,7 @@ function OptionList({
|
|
|
28879
30116
|
value: search,
|
|
28880
30117
|
onValueChange: setSearch,
|
|
28881
30118
|
disabled,
|
|
28882
|
-
placeholder:
|
|
30119
|
+
placeholder: messages.common.search,
|
|
28883
30120
|
clearable: true,
|
|
28884
30121
|
width: "100%"
|
|
28885
30122
|
}
|
|
@@ -28897,7 +30134,7 @@ function OptionList({
|
|
|
28897
30134
|
"pb-[var(--cmp-chipFilter-listbox-list-paddingY)]"
|
|
28898
30135
|
),
|
|
28899
30136
|
children: [
|
|
28900
|
-
showSearch && filteredOptions.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children:
|
|
30137
|
+
showSearch && filteredOptions.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyItem, { children: messages.chipFilter.noSearchResults }),
|
|
28901
30138
|
filteredOptions.map((option, index) => {
|
|
28902
30139
|
const rowKey = `${option.value}-${index}`;
|
|
28903
30140
|
if (option.isGroup) {
|
|
@@ -29183,7 +30420,9 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
29183
30420
|
className,
|
|
29184
30421
|
style
|
|
29185
30422
|
}, ref) {
|
|
29186
|
-
const
|
|
30423
|
+
const runRules2 = useRunRules();
|
|
30424
|
+
const { input: ti, chipInput: t, select: selectT } = useLocale().messages;
|
|
30425
|
+
const placeholder = placeholderProp ?? (separators?.includes(",") ? t.placeholderWithComma : t.placeholder);
|
|
29187
30426
|
const autoId = react.useId();
|
|
29188
30427
|
const controlId = `${autoId}-input`;
|
|
29189
30428
|
const resolvedName = name ?? autoId;
|
|
@@ -29213,19 +30452,18 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
29213
30452
|
const duplicateMessage = react.useMemo(() => {
|
|
29214
30453
|
const seen = /* @__PURE__ */ new Set();
|
|
29215
30454
|
for (const v of values) {
|
|
29216
|
-
if (seen.has(v))
|
|
29217
|
-
return duplicateLabel ? `\uC774\uBBF8 \uC785\uB825\uB41C ${duplicateLabel}\uC785\uB2C8\uB2E4.` : "\uC911\uBCF5\uB41C \uAC12\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4.";
|
|
30455
|
+
if (seen.has(v)) return duplicateLabel ? t.duplicateNamed(duplicateLabel) : t.duplicate;
|
|
29218
30456
|
seen.add(v);
|
|
29219
30457
|
}
|
|
29220
30458
|
return "";
|
|
29221
|
-
}, [values, duplicateLabel]);
|
|
29222
|
-
const ruleMessage = react.useMemo(() =>
|
|
30459
|
+
}, [values, duplicateLabel, t]);
|
|
30460
|
+
const ruleMessage = react.useMemo(() => runRules2(values, rules), [runRules2, values, rules]);
|
|
29223
30461
|
const resolvedErrorMessage = duplicateMessage || ruleMessage || errorMessage;
|
|
29224
30462
|
const resolvedError = error || duplicateMessage !== "" || ruleMessage !== "";
|
|
29225
30463
|
const resolvedStatus = status ?? (resolvedError ? "error" : void 0);
|
|
29226
30464
|
useFormField({
|
|
29227
30465
|
name,
|
|
29228
|
-
validate: () =>
|
|
30466
|
+
validate: () => runRules2(values, rules) === "" && duplicateMessage === "",
|
|
29229
30467
|
resetValidation: () => {
|
|
29230
30468
|
}
|
|
29231
30469
|
});
|
|
@@ -29525,18 +30763,14 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
29525
30763
|
style: { width: 1, height: 12, backgroundColor: "var(--color-divider-default)" }
|
|
29526
30764
|
}
|
|
29527
30765
|
),
|
|
29528
|
-
showMaxCount && /* @__PURE__ */ jsxRuntime.
|
|
30766
|
+
showMaxCount && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29529
30767
|
"span",
|
|
29530
30768
|
{
|
|
29531
30769
|
className: cn(
|
|
29532
30770
|
"s-chip-input__max-count text-12",
|
|
29533
30771
|
isMax ? "text-(--sys-color-fg-warning)" : "text-(--cmp-chipInput-text-placeholder)"
|
|
29534
30772
|
),
|
|
29535
|
-
children:
|
|
29536
|
-
"\uCD5C\uB300 ",
|
|
29537
|
-
maxCount,
|
|
29538
|
-
"\uAC1C"
|
|
29539
|
-
]
|
|
30773
|
+
children: t.maxCount(maxCount)
|
|
29540
30774
|
}
|
|
29541
30775
|
),
|
|
29542
30776
|
showResetLink && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29545,7 +30779,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
29545
30779
|
className: "s-chip-input__reset",
|
|
29546
30780
|
icon: "reset",
|
|
29547
30781
|
iconColor: "var(--color-grey-65)",
|
|
29548
|
-
label:
|
|
30782
|
+
label: ti.clearInput,
|
|
29549
30783
|
underline: true,
|
|
29550
30784
|
disabled,
|
|
29551
30785
|
onClick: reset,
|
|
@@ -29576,7 +30810,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
29576
30810
|
className: "s-chip-input__suggestions flex w-full flex-col outline-none",
|
|
29577
30811
|
onMouseDown: (e) => e.preventDefault(),
|
|
29578
30812
|
children: [
|
|
29579
|
-
loading2 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "s-chip-input__suggestions-empty p-sd-12 text-center text-12 leading-sd-20 text-(--color-grey-65)", children:
|
|
30813
|
+
loading2 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "s-chip-input__suggestions-empty p-sd-12 text-center text-12 leading-sd-20 text-(--color-grey-65)", children: selectT.loading }),
|
|
29580
30814
|
!effectiveAutocomplete ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-sd-8 px-sd-12 py-sd-6", children: items.map((item4, i) => {
|
|
29581
30815
|
const selected = values.includes(item4);
|
|
29582
30816
|
const active = i === activeIndex && !selected;
|
|
@@ -29663,7 +30897,7 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
29663
30897
|
clearable = false,
|
|
29664
30898
|
autoFocus,
|
|
29665
30899
|
name,
|
|
29666
|
-
placeholder
|
|
30900
|
+
placeholder: placeholderProp,
|
|
29667
30901
|
disabled = false,
|
|
29668
30902
|
readOnly = false,
|
|
29669
30903
|
rules,
|
|
@@ -29691,6 +30925,9 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
29691
30925
|
className,
|
|
29692
30926
|
style
|
|
29693
30927
|
}, ref) {
|
|
30928
|
+
const runRules2 = useRunRules();
|
|
30929
|
+
const { common: tc, input: ti } = useLocale().messages;
|
|
30930
|
+
const placeholder = placeholderProp ?? ti.placeholder;
|
|
29694
30931
|
const f = FONT3[size];
|
|
29695
30932
|
const [ruleError, setRuleError] = react.useState("");
|
|
29696
30933
|
const controlId = useFieldControlId();
|
|
@@ -29698,7 +30935,7 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
29698
30935
|
useFormField({
|
|
29699
30936
|
name,
|
|
29700
30937
|
validate: () => {
|
|
29701
|
-
const msg =
|
|
30938
|
+
const msg = runRules2(value, rules);
|
|
29702
30939
|
setRuleError(msg);
|
|
29703
30940
|
return msg === "";
|
|
29704
30941
|
},
|
|
@@ -29764,11 +31001,11 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
29764
31001
|
autoFocus,
|
|
29765
31002
|
onChange: (e) => {
|
|
29766
31003
|
onValueChange?.(e.target.value);
|
|
29767
|
-
if (ruleError !== "") setRuleError(
|
|
31004
|
+
if (ruleError !== "") setRuleError(runRules2(e.target.value, rules));
|
|
29768
31005
|
},
|
|
29769
31006
|
onFocus: () => onFocus?.(),
|
|
29770
31007
|
onBlur: (e) => {
|
|
29771
|
-
if (rules && rules.length > 0) setRuleError(
|
|
31008
|
+
if (rules && rules.length > 0) setRuleError(runRules2(e.target.value, rules));
|
|
29772
31009
|
onBlur?.();
|
|
29773
31010
|
},
|
|
29774
31011
|
className: cn(
|
|
@@ -29792,10 +31029,10 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
29792
31029
|
{
|
|
29793
31030
|
icon: "close",
|
|
29794
31031
|
size: "xxs",
|
|
29795
|
-
ariaLabel:
|
|
31032
|
+
ariaLabel: tc.clear,
|
|
29796
31033
|
onClick: () => {
|
|
29797
31034
|
onValueChange?.("");
|
|
29798
|
-
setRuleError(
|
|
31035
|
+
setRuleError(runRules2("", rules));
|
|
29799
31036
|
}
|
|
29800
31037
|
}
|
|
29801
31038
|
)
|
|
@@ -29856,11 +31093,11 @@ function parseTimeValue(value) {
|
|
|
29856
31093
|
function formatTimeValue(hour, minute) {
|
|
29857
31094
|
return `${padTimePart(clampTimePart(hour, 0, 23))}:${padTimePart(clampTimePart(minute, 0, 59))}`;
|
|
29858
31095
|
}
|
|
29859
|
-
function formatTimeDisplay(value, type) {
|
|
31096
|
+
function formatTimeDisplay(value, type, t) {
|
|
29860
31097
|
if (value == null || value === "") return "";
|
|
29861
31098
|
const { hour, minute } = parseTimeValue(value);
|
|
29862
31099
|
if (type === "default") return formatTimeValue(hour, minute);
|
|
29863
|
-
const meridiem = hour >= 12 ?
|
|
31100
|
+
const meridiem = hour >= 12 ? t.pm : t.am;
|
|
29864
31101
|
const displayHour = hour % 12 === 0 ? 12 : hour % 12;
|
|
29865
31102
|
return `${meridiem} ${padTimePart(displayHour)}:${padTimePart(minute)}`;
|
|
29866
31103
|
}
|
|
@@ -29943,6 +31180,7 @@ function TimeListbox({
|
|
|
29943
31180
|
labelPrefix,
|
|
29944
31181
|
elevated = true
|
|
29945
31182
|
}) {
|
|
31183
|
+
const t = useLocale().messages.date;
|
|
29946
31184
|
const toState = (v) => v ? parseTimeValue(v) : null;
|
|
29947
31185
|
const [time, setTime] = react.useState(() => toState(value));
|
|
29948
31186
|
react.useEffect(() => {
|
|
@@ -29966,13 +31204,13 @@ function TimeListbox({
|
|
|
29966
31204
|
const hour = time?.hour;
|
|
29967
31205
|
const minute = time?.minute ?? 0;
|
|
29968
31206
|
const meridiem = hour === void 0 ? void 0 : hour >= 12 ? "PM" : "AM";
|
|
29969
|
-
const prefix = labelPrefix
|
|
31207
|
+
const prefix = labelPrefix ?? "";
|
|
29970
31208
|
const meridiemItems = ["AM", "PM"].map((item4) => {
|
|
29971
31209
|
const base = item4 === "AM" ? 0 : 12;
|
|
29972
31210
|
const range = HOURS_24.slice(base, base + 12);
|
|
29973
31211
|
return {
|
|
29974
31212
|
key: item4,
|
|
29975
|
-
label: item4 === "AM" ?
|
|
31213
|
+
label: item4 === "AM" ? t.am : t.pm,
|
|
29976
31214
|
selected: meridiem === item4,
|
|
29977
31215
|
disabled: range.every(hourBlocked),
|
|
29978
31216
|
onSelect: () => {
|
|
@@ -29986,14 +31224,14 @@ function TimeListbox({
|
|
|
29986
31224
|
const h = display % 12 + (meridiem === "PM" ? 12 : 0);
|
|
29987
31225
|
return {
|
|
29988
31226
|
key: String(display),
|
|
29989
|
-
label:
|
|
31227
|
+
label: t.hourItem(padTimePart(display)),
|
|
29990
31228
|
selected: hour === h,
|
|
29991
31229
|
disabled: hourBlocked(h),
|
|
29992
31230
|
onSelect: () => commit([h], { hour: h, minute }, "hour")
|
|
29993
31231
|
};
|
|
29994
31232
|
}) : HOURS_24.map((h) => ({
|
|
29995
31233
|
key: String(h),
|
|
29996
|
-
label:
|
|
31234
|
+
label: t.hourItem(padTimePart(h)),
|
|
29997
31235
|
selected: hour === h,
|
|
29998
31236
|
disabled: hourBlocked(h),
|
|
29999
31237
|
onSelect: () => commit([h], { hour: h, minute }, "hour")
|
|
@@ -30001,7 +31239,7 @@ function TimeListbox({
|
|
|
30001
31239
|
const minuteHour = hour ?? (meridiem === "PM" ? 12 : 0);
|
|
30002
31240
|
const minuteItems = minutes.map((m) => ({
|
|
30003
31241
|
key: String(m),
|
|
30004
|
-
label:
|
|
31242
|
+
label: t.minuteItem(padTimePart(m)),
|
|
30005
31243
|
selected: time != null && minute === m,
|
|
30006
31244
|
disabled: blocked(minuteHour, m),
|
|
30007
31245
|
onSelect: () => commit([minuteHour], { hour: minuteHour, minute: m }, "minute")
|
|
@@ -30023,12 +31261,12 @@ function TimeListbox({
|
|
|
30023
31261
|
style: { height: MODE_LIST_HEIGHT },
|
|
30024
31262
|
children: [
|
|
30025
31263
|
showMeridiem && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30026
|
-
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel:
|
|
31264
|
+
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel: t.meridiemAria(prefix), items: meridiemItems }),
|
|
30027
31265
|
divider
|
|
30028
31266
|
] }),
|
|
30029
|
-
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel:
|
|
31267
|
+
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel: t.hourAria(prefix), items: hourItems }),
|
|
30030
31268
|
divider,
|
|
30031
|
-
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel:
|
|
31269
|
+
/* @__PURE__ */ jsxRuntime.jsx(ListColumn, { ariaLabel: t.minuteAria(prefix), items: minuteItems })
|
|
30032
31270
|
]
|
|
30033
31271
|
}
|
|
30034
31272
|
);
|
|
@@ -30065,6 +31303,8 @@ function STimePicker({
|
|
|
30065
31303
|
className,
|
|
30066
31304
|
style
|
|
30067
31305
|
}) {
|
|
31306
|
+
const runRules2 = useRunRules();
|
|
31307
|
+
const t = useLocale().messages.date;
|
|
30068
31308
|
const portalContainer = usePortalContainer();
|
|
30069
31309
|
const [open, setOpen] = react.useState(false);
|
|
30070
31310
|
const triggerId = useFieldControlId();
|
|
@@ -30074,12 +31314,16 @@ function STimePicker({
|
|
|
30074
31314
|
const dims = TIMEPICKER_SIZE_CONFIG[size] ?? TIMEPICKER_SIZE_CONFIG.sm;
|
|
30075
31315
|
const normalized = value ? formatTimeValue(parseTimeValue(value).hour, parseTimeValue(value).minute) : null;
|
|
30076
31316
|
const effectiveShowMeridiem = showMeridiem ?? type === "midday";
|
|
30077
|
-
const displayText = formatTimeDisplay(
|
|
31317
|
+
const displayText = formatTimeDisplay(
|
|
31318
|
+
normalized,
|
|
31319
|
+
effectiveShowMeridiem ? "midday" : "default",
|
|
31320
|
+
t
|
|
31321
|
+
);
|
|
30078
31322
|
const hasValue = normalized != null && normalized !== "";
|
|
30079
31323
|
useFormField({
|
|
30080
31324
|
name,
|
|
30081
31325
|
validate: () => {
|
|
30082
|
-
const msg =
|
|
31326
|
+
const msg = runRules2(value, rules);
|
|
30083
31327
|
setRuleError(msg);
|
|
30084
31328
|
return msg === "";
|
|
30085
31329
|
},
|
|
@@ -30091,11 +31335,11 @@ function STimePicker({
|
|
|
30091
31335
|
if (disabled) return;
|
|
30092
31336
|
setOpen(next);
|
|
30093
31337
|
onOpenChange?.(next);
|
|
30094
|
-
if (!next && rules && rules.length > 0) setRuleError(
|
|
31338
|
+
if (!next && rules && rules.length > 0) setRuleError(runRules2(value, rules));
|
|
30095
31339
|
};
|
|
30096
31340
|
const commitValue = (next) => {
|
|
30097
31341
|
onValueChange?.(next);
|
|
30098
|
-
if (rules && rules.length > 0) setRuleError(
|
|
31342
|
+
if (rules && rules.length > 0) setRuleError(runRules2(next, rules));
|
|
30099
31343
|
};
|
|
30100
31344
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30101
31345
|
SField,
|
|
@@ -30174,7 +31418,7 @@ function STimePicker({
|
|
|
30174
31418
|
{
|
|
30175
31419
|
icon: "close",
|
|
30176
31420
|
size: "xs",
|
|
30177
|
-
ariaLabel:
|
|
31421
|
+
ariaLabel: t.clearTime,
|
|
30178
31422
|
onClick: (event) => {
|
|
30179
31423
|
event.stopPropagation();
|
|
30180
31424
|
commitValue(null);
|
|
@@ -30229,9 +31473,9 @@ function normalizeTimeRangeValue(value, rangeOrder = "strict") {
|
|
|
30229
31473
|
}
|
|
30230
31474
|
return normalized;
|
|
30231
31475
|
}
|
|
30232
|
-
function formatTimeRangeDisplay(value, type) {
|
|
31476
|
+
function formatTimeRangeDisplay(value, type, t) {
|
|
30233
31477
|
if (value == null || value[0] === "" || value[1] === "") return "";
|
|
30234
|
-
return `${formatTimeDisplay(value[0], type)} ~ ${formatTimeDisplay(value[1], type)}`;
|
|
31478
|
+
return `${formatTimeDisplay(value[0], type, t)} ~ ${formatTimeDisplay(value[1], type, t)}`;
|
|
30235
31479
|
}
|
|
30236
31480
|
var MIDDAY_FIELD_MIN_WIDTH = {
|
|
30237
31481
|
sm: 178,
|
|
@@ -30252,6 +31496,7 @@ function RangeTimeSelector({
|
|
|
30252
31496
|
rangeOrder,
|
|
30253
31497
|
onChange
|
|
30254
31498
|
}) {
|
|
31499
|
+
const t = useLocale().messages.date;
|
|
30255
31500
|
const range = value ?? ["00:00", "23:59"];
|
|
30256
31501
|
const strict = rangeOrder !== "allow-cross-day";
|
|
30257
31502
|
const change = (side, time) => {
|
|
@@ -30274,7 +31519,7 @@ function RangeTimeSelector({
|
|
|
30274
31519
|
value: side === "start" ? range[0] : range[1],
|
|
30275
31520
|
showMeridiem,
|
|
30276
31521
|
minuteStep,
|
|
30277
|
-
labelPrefix: side === "start" ?
|
|
31522
|
+
labelPrefix: side === "start" ? t.start : t.end,
|
|
30278
31523
|
elevated: false,
|
|
30279
31524
|
isDisabled: strict && side === "end" ? (minutes) => minutes < toMinutes(range[0]) : void 0,
|
|
30280
31525
|
onChange: (time) => change(side, time)
|
|
@@ -30295,9 +31540,9 @@ function RangeTimeSelector({
|
|
|
30295
31540
|
boxShadow: "var(--shadow-spread-sm), var(--shadow-spread-md)"
|
|
30296
31541
|
},
|
|
30297
31542
|
children: [
|
|
30298
|
-
renderPanel("start",
|
|
31543
|
+
renderPanel("start", t.startTime),
|
|
30299
31544
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "self-stretch w-px bg-[var(--sys-color-divider-default)]" }),
|
|
30300
|
-
renderPanel("end",
|
|
31545
|
+
renderPanel("end", t.endTime)
|
|
30301
31546
|
]
|
|
30302
31547
|
}
|
|
30303
31548
|
);
|
|
@@ -30335,6 +31580,8 @@ function STimeRangePicker({
|
|
|
30335
31580
|
className,
|
|
30336
31581
|
style
|
|
30337
31582
|
}) {
|
|
31583
|
+
const runRules2 = useRunRules();
|
|
31584
|
+
const t = useLocale().messages.date;
|
|
30338
31585
|
const portalContainer = usePortalContainer();
|
|
30339
31586
|
const [open, setOpen] = react.useState(false);
|
|
30340
31587
|
const triggerId = useFieldControlId();
|
|
@@ -30346,13 +31593,14 @@ function STimeRangePicker({
|
|
|
30346
31593
|
const effectiveShowMeridiem = showMeridiem ?? type === "midday";
|
|
30347
31594
|
const displayText = formatTimeRangeDisplay(
|
|
30348
31595
|
normalized,
|
|
30349
|
-
effectiveShowMeridiem ? "midday" : "default"
|
|
31596
|
+
effectiveShowMeridiem ? "midday" : "default",
|
|
31597
|
+
t
|
|
30350
31598
|
);
|
|
30351
31599
|
const hasValue = normalized != null && normalized[0] !== "" && normalized[1] !== "";
|
|
30352
31600
|
useFormField({
|
|
30353
31601
|
name,
|
|
30354
31602
|
validate: () => {
|
|
30355
|
-
const msg =
|
|
31603
|
+
const msg = runRules2(value, rules);
|
|
30356
31604
|
setRuleError(msg);
|
|
30357
31605
|
return msg === "";
|
|
30358
31606
|
},
|
|
@@ -30364,11 +31612,11 @@ function STimeRangePicker({
|
|
|
30364
31612
|
if (disabled) return;
|
|
30365
31613
|
setOpen(next);
|
|
30366
31614
|
onOpenChange?.(next);
|
|
30367
|
-
if (!next && rules && rules.length > 0) setRuleError(
|
|
31615
|
+
if (!next && rules && rules.length > 0) setRuleError(runRules2(value, rules));
|
|
30368
31616
|
};
|
|
30369
31617
|
const commitValue = (next) => {
|
|
30370
31618
|
onValueChange?.(next);
|
|
30371
|
-
if (rules && rules.length > 0) setRuleError(
|
|
31619
|
+
if (rules && rules.length > 0) setRuleError(runRules2(next, rules));
|
|
30372
31620
|
};
|
|
30373
31621
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30374
31622
|
SField,
|
|
@@ -30447,7 +31695,7 @@ function STimeRangePicker({
|
|
|
30447
31695
|
{
|
|
30448
31696
|
icon: "close",
|
|
30449
31697
|
size: "xs",
|
|
30450
|
-
ariaLabel:
|
|
31698
|
+
ariaLabel: t.clearTimeRange,
|
|
30451
31699
|
onClick: (event) => {
|
|
30452
31700
|
event.stopPropagation();
|
|
30453
31701
|
commitValue(null);
|
|
@@ -30606,6 +31854,7 @@ exports.SKELETON_TYPES = SKELETON_TYPES;
|
|
|
30606
31854
|
exports.SKELETON_TYPE_CONFIG = SKELETON_TYPE_CONFIG;
|
|
30607
31855
|
exports.SKeyValueTable = SKeyValueTable;
|
|
30608
31856
|
exports.SLAYOUT_MIN_WIDTH = SLAYOUT_MIN_WIDTH;
|
|
31857
|
+
exports.SLOCALES = SLOCALES;
|
|
30609
31858
|
exports.SLauncherListBox = SLauncherListBox;
|
|
30610
31859
|
exports.SLayout = SLayout;
|
|
30611
31860
|
exports.SLayoutContext = SLayoutContext;
|
|
@@ -30615,6 +31864,7 @@ exports.SList = SList2;
|
|
|
30615
31864
|
exports.SListItem = SListItem2;
|
|
30616
31865
|
exports.SLoadingContainer = SLoadingContainer;
|
|
30617
31866
|
exports.SLoadingModal = SLoadingModal;
|
|
31867
|
+
exports.SLocaleProvider = SLocaleProvider;
|
|
30618
31868
|
exports.SLoginCard = SLoginCard2;
|
|
30619
31869
|
exports.SLogo = SLogo;
|
|
30620
31870
|
exports.SMeatballButton = SMeatballButton2;
|
|
@@ -30684,7 +31934,9 @@ exports.isColorKey = isColorKey;
|
|
|
30684
31934
|
exports.isFieldWidthGrade = isFieldWidthGrade;
|
|
30685
31935
|
exports.loading = loading;
|
|
30686
31936
|
exports.normalizeExtension = normalizeExtension;
|
|
31937
|
+
exports.normalizeLocale = normalizeLocale;
|
|
30687
31938
|
exports.resolveColor = resolveColor;
|
|
31939
|
+
exports.useLocale = useLocale;
|
|
30688
31940
|
exports.useSLayout = useSLayout;
|
|
30689
31941
|
//# sourceMappingURL=index.cjs.map
|
|
30690
31942
|
//# sourceMappingURL=index.cjs.map
|