@godxjp/ui 12.1.0 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.d.ts +2 -2
- package/dist/app/index.js +4 -4
- package/dist/{app.prop-Cy6dJnU8.d.ts → app.prop-CVY8V4ss.d.ts} +1 -1
- package/dist/{checkbox-DPFcnsMZ.d.ts → checkbox-shzpQ_Xo.d.ts} +1 -1
- package/dist/{chunk-COD66MFF.js → chunk-2BR7KFCP.js} +1 -1
- package/dist/chunk-2H65B4JA.js +1 -0
- package/dist/{chunk-JSQOCVM6.js → chunk-2M57K2VW.js} +2 -2
- package/dist/{chunk-HTEL5DQI.js → chunk-3R3QVJCB.js} +1 -1
- package/dist/{chunk-FK2JDABO.js → chunk-55S5N667.js} +4 -2
- package/dist/{chunk-YGD4CCQC.js → chunk-5KK3KJ6L.js} +3 -3
- package/dist/chunk-76S3TQFH.js +109 -0
- package/dist/{chunk-6WSWK7TU.js → chunk-7HEFQDN5.js} +2 -2
- package/dist/{chunk-LCQFYL44.js → chunk-7MXIPSYM.js} +59 -5
- package/dist/{chunk-WBUUCU7R.js → chunk-AKFR72DQ.js} +4 -4
- package/dist/{chunk-IBK5D2Q6.js → chunk-B4K4BXEF.js} +3 -2
- package/dist/{chunk-VOHTRR5X.js → chunk-BNXPDUO4.js} +1 -1
- package/dist/chunk-C3PKEV6S.js +22 -0
- package/dist/{chunk-MMFIL33F.js → chunk-C6OEAQTO.js} +1 -1
- package/dist/{chunk-ASMTSQWA.js → chunk-DWYRIKVD.js} +11 -8
- package/dist/chunk-ES4Q3KGL.js +1 -0
- package/dist/{chunk-XVD5SLDL.js → chunk-FJBVDJGL.js} +56 -3
- package/dist/{chunk-FK5QEFVY.js → chunk-GDHDJAVB.js} +1 -1
- package/dist/{chunk-TXRYSMOD.js → chunk-H2TX3OPW.js} +1 -1
- package/dist/{chunk-EOTOCNT7.js → chunk-HCCID4YY.js} +1 -1
- package/dist/{chunk-2TYRT5XH.js → chunk-I2CYVA7B.js} +31 -18
- package/dist/{chunk-4MMIMZMK.js → chunk-IJ5ALJGA.js} +1 -1
- package/dist/{chunk-PO5ISUFA.js → chunk-IWAIIBSW.js} +4 -2
- package/dist/{chunk-UDEPO3UF.js → chunk-IZGLEPGW.js} +2 -2
- package/dist/{chunk-3ELRYXJK.js → chunk-JEIUEOTJ.js} +9 -3
- package/dist/{chunk-FTOG7D4T.js → chunk-KQ36FDEE.js} +1 -1
- package/dist/{chunk-WJNR3RAG.js → chunk-MTJHEQ46.js} +4 -4
- package/dist/{chunk-ZM4SMKEI.js → chunk-QATON677.js} +3 -20
- package/dist/{chunk-FOANNF6Z.js → chunk-QD3YG56T.js} +2 -2
- package/dist/{chunk-SIUIIIQW.js → chunk-SISAM4JZ.js} +3 -3
- package/dist/chunk-VU4GFGDG.js +12 -0
- package/dist/{chunk-MXEVP5S2.js → chunk-W2NWOWZ3.js} +5 -5
- package/dist/{chunk-7HF56YHC.js → chunk-X4J55OS5.js} +3 -3
- package/dist/{chunk-N6ELT7KB.js → chunk-XTVUYEJD.js} +30 -2
- package/dist/chunk-XUEDRPWF.js +177 -0
- package/dist/{chunk-2JCSS6B4.js → chunk-YVZPAN2W.js} +2 -2
- package/dist/{chunk-BCBK4FLV.js → chunk-ZFBIKJSJ.js} +2 -2
- package/dist/{chunk-L2MEN2VK.js → chunk-ZPHIXXTK.js} +2 -2
- package/dist/components/admin/index.d.ts +14 -15
- package/dist/components/admin/index.js +30 -28
- package/dist/components/data-display/badge.d.ts +1 -1
- package/dist/components/data-display/badge.js +4 -4
- package/dist/components/data-display/card.d.ts +2 -2
- package/dist/components/data-display/carousel.d.ts +12 -1
- package/dist/components/data-display/carousel.js +3 -3
- package/dist/components/data-display/index.d.ts +6 -6
- package/dist/components/data-display/index.js +9 -9
- package/dist/components/data-display/table.js +2 -2
- package/dist/components/data-entry/calendar.d.ts +6 -4
- package/dist/components/data-entry/calendar.js +2 -2
- package/dist/components/data-entry/cascader.d.ts +6 -4
- package/dist/components/data-entry/cascader.js +5 -5
- package/dist/components/data-entry/checkbox.d.ts +7 -5
- package/dist/components/data-entry/color-picker.d.ts +6 -4
- package/dist/components/data-entry/color-picker.js +5 -5
- package/dist/components/data-entry/command.js +2 -2
- package/dist/components/data-entry/date-picker.d.ts +6 -4
- package/dist/components/data-entry/date-picker.js +6 -6
- package/dist/components/data-entry/date-range-picker.d.ts +6 -4
- package/dist/components/data-entry/date-range-picker.js +6 -6
- package/dist/components/data-entry/index.d.ts +38 -9
- package/dist/components/data-entry/index.js +24 -22
- package/dist/components/data-entry/input.js +1 -1
- package/dist/components/data-entry/radio.d.ts +6 -4
- package/dist/components/data-entry/select.d.ts +6 -4
- package/dist/components/data-entry/select.js +6 -6
- package/dist/components/data-entry/slider.d.ts +6 -4
- package/dist/components/data-entry/switch.d.ts +6 -4
- package/dist/components/data-entry/textarea.js +2 -2
- package/dist/components/data-entry/time-input.js +2 -2
- package/dist/components/data-entry/time-picker.d.ts +6 -4
- package/dist/components/data-entry/time-picker.js +4 -4
- package/dist/components/data-entry/transfer.d.ts +7 -5
- package/dist/components/data-entry/transfer.js +5 -5
- package/dist/components/data-entry/tree-select.d.ts +6 -4
- package/dist/components/data-entry/tree-select.js +5 -5
- package/dist/components/data-entry/upload.d.ts +7 -5
- package/dist/components/data-entry/upload.js +8 -7
- package/dist/components/data-grid/index.js +9 -9
- package/dist/components/feedback/alert.d.ts +4 -4
- package/dist/components/feedback/alert.js +4 -4
- package/dist/components/feedback/dialog.d.ts +19 -5
- package/dist/components/feedback/dialog.js +5 -4
- package/dist/components/feedback/index.d.ts +17 -26
- package/dist/components/feedback/index.js +13 -12
- package/dist/components/feedback/sheet.d.ts +21 -2
- package/dist/components/feedback/sheet.js +2 -1
- package/dist/components/general/button.d.ts +3 -3
- package/dist/components/general/index.d.ts +3 -3
- package/dist/components/layout/index.d.ts +6 -6
- package/dist/components/layout/index.js +5 -4
- package/dist/components/navigation/index.d.ts +8 -8
- package/dist/components/navigation/index.js +9 -9
- package/dist/components/navigation/pagination.d.ts +4 -4
- package/dist/components/navigation/pagination.js +7 -7
- package/dist/components/navigation/steps.d.ts +5 -5
- package/dist/components/navigation/steps.js +4 -4
- package/dist/components/query/index.d.ts +4 -4
- package/dist/components/query/index.js +4 -4
- package/dist/components/ui/index.d.ts +15 -13
- package/dist/components/ui/index.js +27 -26
- package/dist/{data-display.prop-Cf2p9QC4.d.ts → data-display.prop-BOtnzI17.d.ts} +3 -3
- package/dist/{data-entry.prop-6J0o45se.d.ts → data-entry.prop-DL7kUcJh.d.ts} +32 -3
- package/dist/{data-table-B_q7j992.d.ts → data-table-DO-gU4wJ.d.ts} +3 -3
- package/dist/{data.prop-DMYMNl6L.d.ts → data.prop-D4uDw_SW.d.ts} +1 -1
- package/dist/{feedback.prop-Nc9Aa8SV.d.ts → feedback.prop-CtrL24E1.d.ts} +2 -2
- package/dist/{filter-bar-B07JSxME.d.ts → filter-bar-tEwfKthz.d.ts} +1 -1
- package/dist/{flex-DXtIALBh.d.ts → flex-88Ps6YCv.d.ts} +1 -1
- package/dist/form/index.d.ts +3 -3
- package/dist/form/index.js +2 -1
- package/dist/{form.prop-Bc6r6JJW.d.ts → form.prop-5cyL3bvT.d.ts} +1 -1
- package/dist/{general.prop-DoHDCRmL.d.ts → general.prop-1GgJkf4b.d.ts} +2 -2
- package/dist/i18n/index.d.ts +3 -1
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +14 -15
- package/dist/index.js +40 -38
- package/dist/{interaction.prop-DSFizzP6.d.ts → interaction.prop-R77MnAMZ.d.ts} +5 -1
- package/dist/{layout.prop-B1yQPUNZ.d.ts → layout.prop-ChLFNGJ6.d.ts} +2 -2
- package/dist/lib/datetime/index.js +1 -1
- package/dist/{navigation.prop-BKlxd-j7.d.ts → navigation.prop-CXDaVNaR.d.ts} +1 -1
- package/dist/{navigation.prop-Dumy196X.d.ts → navigation.prop-Cc_Iu87S.d.ts} +2 -2
- package/dist/props/components/index.d.ts +13 -13
- package/dist/props/index.d.ts +13 -13
- package/dist/props/index.js +1 -1
- package/dist/props/registry.d.ts +22 -2
- package/dist/props/registry.js +1 -1
- package/dist/props/vocabulary/index.d.ts +4 -4
- package/dist/{query.prop-Dog-EAfG.d.ts → query.prop-CyNxaCHe.d.ts} +2 -2
- package/dist/{search-input-BR4nAWiT.d.ts → search-input-CFUtVWQl.d.ts} +2 -2
- package/dist/{shared.prop-BsNSXeqD.d.ts → shared.prop-BvMSLFJ6.d.ts} +7 -1
- package/dist/styles/alert-layout.css +8 -8
- package/dist/styles/card-layout.css +301 -292
- package/dist/styles/control.css +8 -9
- package/dist/styles/data-display-layout.css +50 -5
- package/dist/styles/density.css +4 -0
- package/dist/styles/dialog-layout.css +35 -7
- package/dist/styles/form-layout.css +161 -0
- package/dist/styles/index.css +31 -3
- package/dist/styles/layout.css +1 -1
- package/dist/styles/navigation-layout.css +1 -1
- package/dist/styles/shell-layout.css +12 -12
- package/dist/tokens/components/card.css +1 -1
- package/dist/tokens/components/feedback.css +9 -1
- package/dist/tokens/foundation.css +74 -16
- package/dist/tokens/semantic/layout.css +29 -11
- package/package.json +1 -1
- package/dist/chunk-A6VFHPS6.js +0 -119
- package/dist/chunk-B3WX53JQ.js +0 -40
- package/dist/chunk-QSGW3ZWK.js +0 -45
- package/dist/chunk-WFUIE252.js +0 -61
- package/dist/styles/feedback-layout.css +0 -49
- package/dist/tooltip-Bf2KjRy8.d.ts +0 -14
- package/dist/use-toast-Dsw3yE2S.d.ts +0 -19
package/dist/app/index.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ import * as date_fns from 'date-fns';
|
|
|
5
5
|
import { Locale } from 'date-fns';
|
|
6
6
|
import { vi } from 'react-day-picker/locale';
|
|
7
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
-
import { a as AppProviderProp, A as AppContextValue } from '../app.prop-
|
|
8
|
+
import { a as AppProviderProp, A as AppContextValue } from '../app.prop-CVY8V4ss.js';
|
|
9
9
|
import { j as formatDate, a as FormatDateOptions } from '../format-date-ByyZoqI5.js';
|
|
10
10
|
export { F as FormatDateKind, b as FormatDatetimeOptions, d as detectFormatDateKind, f as formatAppDate, c as formatAppDateLong, e as formatAppDateTime, g as formatAppRelative, h as formatAppTime, i as formatCalendarDate, k as formatTimeOfDay, m as isFormatDateValue } from '../format-date-ByyZoqI5.js';
|
|
11
11
|
export { getDatetimeContext, isValidHhmm, normalizeHhmm, parseDateInput, syncDatetimeContext } from '../lib/datetime/index.js';
|
|
12
12
|
export { usePickerLocales, useTranslation } from '../i18n/index.js';
|
|
13
|
-
import '../shared.prop-
|
|
13
|
+
import '../shared.prop-BvMSLFJ6.js';
|
|
14
14
|
import 'react';
|
|
15
15
|
import '@date-fns/tz';
|
|
16
16
|
|
package/dist/app/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useAppContext } from '../chunk-
|
|
2
|
-
export { APP_LOCALES, APP_REQUEST_HEADER_LOCALE, APP_REQUEST_HEADER_TIMEZONE, APP_TIMEZONE_PRESET, APP_TIME_FORMAT_OPTIONS, AppProvider, DEFAULT_STORAGE_KEY, TIMEZONE_ALIASES, formatTimezoneDisplayLabel, getAllIanaTimezones, getAppRequestHeaders, getBrowserTimezone, getTimeFormatLabel, getTimezoneCityName, getTimezoneLabel, getTimezoneOffsetLabel, isValidIanaTimezone, readStoredPreferences, resetAppRequestHeaders, resetIanaTimezoneCacheForTests, resolveDefaultTimeFormat, resolveDefaultTimezone, resolveTimezoneForIntl, resolveTimezonePickerOptions, syncAppRequestHeaders, useAppContext, useAppDateFormat, useAppLocale, useAppTimeFormat, useAppTimezone, useOptionalAppContext, usePickerLocales, useTranslation, writeStoredPreferences } from '../chunk-
|
|
3
|
-
import { formatDate } from '../chunk-
|
|
4
|
-
export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, detectFormatDateKind, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, isAppDateFormat, isAppLocale, isAppTimeFormat, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resolveDefaultDateFormat, syncDatetimeContext } from '../chunk-
|
|
1
|
+
import { useAppContext } from '../chunk-H2TX3OPW.js';
|
|
2
|
+
export { APP_LOCALES, APP_REQUEST_HEADER_LOCALE, APP_REQUEST_HEADER_TIMEZONE, APP_TIMEZONE_PRESET, APP_TIME_FORMAT_OPTIONS, AppProvider, DEFAULT_STORAGE_KEY, TIMEZONE_ALIASES, formatTimezoneDisplayLabel, getAllIanaTimezones, getAppRequestHeaders, getBrowserTimezone, getTimeFormatLabel, getTimezoneCityName, getTimezoneLabel, getTimezoneOffsetLabel, isValidIanaTimezone, readStoredPreferences, resetAppRequestHeaders, resetIanaTimezoneCacheForTests, resolveDefaultTimeFormat, resolveDefaultTimezone, resolveTimezoneForIntl, resolveTimezonePickerOptions, syncAppRequestHeaders, useAppContext, useAppDateFormat, useAppLocale, useAppTimeFormat, useAppTimezone, useOptionalAppContext, usePickerLocales, useTranslation, writeStoredPreferences } from '../chunk-H2TX3OPW.js';
|
|
3
|
+
import { formatDate } from '../chunk-JEIUEOTJ.js';
|
|
4
|
+
export { APP_DATE_FORMATS, APP_DATE_FORMAT_OPTIONS, APP_LOCALE_CONFIG, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, APP_TIME_FORMATS, detectFormatDateKind, formatAppDate, formatAppDateLong, formatAppDateTime, formatAppRelative, formatAppTime, formatCalendarDate, formatDate, formatTimeOfDay, getDateFnsLocale, getDateFormatLabel, getDatePattern, getDateTimePattern, getDatetimeContext, getDayPickerLocale, getTimePattern, isAppDateFormat, isAppLocale, isAppTimeFormat, isFormatDateValue, isValidHhmm, normalizeHhmm, parseDateInput, resolveDefaultDateFormat, syncDatetimeContext } from '../chunk-JEIUEOTJ.js';
|
|
5
5
|
import { useMemo } from 'react';
|
|
6
6
|
|
|
7
7
|
function useFormatting() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Locale } from 'date-fns';
|
|
2
2
|
import { DayPickerProps } from 'react-day-picker';
|
|
3
3
|
import { h as AppLocale, l as AppTimezoneDefault, k as AppTimezone, j as AppTimeFormat, g as AppDateFormat, i as AppRequestHeaders } from './types-mvzYGrma.js';
|
|
4
|
-
import { C as ChildrenProp, a as ClassNameProp, c as DisabledProp, I as IdProp, N as NameProp, V as ValueProp, g as OnValueChangeProp } from './shared.prop-
|
|
4
|
+
import { C as ChildrenProp, a as ClassNameProp, c as DisabledProp, I as IdProp, N as NameProp, V as ValueProp, g as OnValueChangeProp } from './shared.prop-BvMSLFJ6.js';
|
|
5
5
|
|
|
6
6
|
/** App shell prop types — @see docs/COMPONENTS.md#app */
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
-
import { b as CheckboxGroupProp } from './data-entry.prop-
|
|
4
|
+
import { b as CheckboxGroupProp } from './data-entry.prop-DL7kUcJh.js';
|
|
5
5
|
|
|
6
6
|
declare function CheckboxGroup({ value: controlledValue, defaultValue, onValueChange, options, orientation, disabled, name, className, children, }: CheckboxGroupProp): react_jsx_runtime.JSX.Element;
|
|
7
7
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { SearchInput } from './chunk-BCBK4FLV.js';
|
|
2
1
|
import { reactNodeText } from './chunk-SMLKNECP.js';
|
|
2
|
+
import { SearchInput } from './chunk-ZFBIKJSJ.js';
|
|
3
3
|
import { Checkbox } from './chunk-BE6GJGKJ.js';
|
|
4
4
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
5
5
|
import { ScrollArea } from './chunk-3KPEZ5CF.js';
|
|
6
|
-
import { useTranslation } from './chunk-
|
|
6
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
7
7
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
import { ChevronRight, ChevronLeft } from 'lucide-react';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { normalizeTreeOptions, formatPathLabels, getNodeByPath, filterTreeOptions, pathsEqual, pathKey } from './chunk-SMLKNECP.js';
|
|
2
|
-
import { Command, CommandInput } from './chunk-
|
|
2
|
+
import { Command, CommandInput } from './chunk-3R3QVJCB.js';
|
|
3
3
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
4
4
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
|
|
5
5
|
import { ScrollArea, ScrollBar } from './chunk-3KPEZ5CF.js';
|
|
6
|
-
import {
|
|
6
|
+
import { controlOpenRingClass } from './chunk-B4K4BXEF.js';
|
|
7
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
7
8
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
8
9
|
import * as React from 'react';
|
|
9
10
|
import { Check, X, ChevronsUpDown, ChevronRight, Minus } from 'lucide-react';
|
|
@@ -234,6 +235,7 @@ function Cascader({
|
|
|
234
235
|
disabled,
|
|
235
236
|
className: cn(
|
|
236
237
|
"w-full justify-start font-normal",
|
|
238
|
+
controlOpenRingClass,
|
|
237
239
|
// Reserve trailing room for the clear + chevron overlay rendered below.
|
|
238
240
|
showClear ? "pe-14" : "pe-9",
|
|
239
241
|
!displayLabel && "text-muted-foreground"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Input } from './chunk-
|
|
1
|
+
import { Input } from './chunk-BNXPDUO4.js';
|
|
2
2
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
3
3
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
|
|
4
|
-
import { useTranslation, usePickerLocales } from './chunk-
|
|
5
|
-
import { normalizeHhmm, isValidHhmm } from './chunk-
|
|
4
|
+
import { useTranslation, usePickerLocales } from './chunk-H2TX3OPW.js';
|
|
5
|
+
import { normalizeHhmm, isValidHhmm } from './chunk-JEIUEOTJ.js';
|
|
6
6
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
7
7
|
import * as React from 'react';
|
|
8
8
|
import { Clock } from 'lucide-react';
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ResponsiveGrid } from './chunk-C3PKEV6S.js';
|
|
2
|
+
import { Label } from './chunk-7PWBC4BY.js';
|
|
3
|
+
import { cn } from './chunk-U7N2A7A3.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var FormLayoutContext = React.createContext(null);
|
|
8
|
+
function useFormLayout() {
|
|
9
|
+
return React.useContext(FormLayoutContext);
|
|
10
|
+
}
|
|
11
|
+
var Form = React.forwardRef(function Form2({
|
|
12
|
+
layout = "vertical",
|
|
13
|
+
labelWidth,
|
|
14
|
+
controlWidth,
|
|
15
|
+
labelAlign = "end",
|
|
16
|
+
collapseBelow = "md",
|
|
17
|
+
columns,
|
|
18
|
+
density,
|
|
19
|
+
className,
|
|
20
|
+
children,
|
|
21
|
+
...props
|
|
22
|
+
}, ref) {
|
|
23
|
+
const ctx = React.useMemo(
|
|
24
|
+
() => ({ layout, labelWidth, controlWidth, labelAlign, collapseBelow }),
|
|
25
|
+
[layout, labelWidth, controlWidth, labelAlign, collapseBelow]
|
|
26
|
+
);
|
|
27
|
+
const content = columns != null ? /* @__PURE__ */ jsx(ResponsiveGrid, { columns, children }) : children;
|
|
28
|
+
return /* @__PURE__ */ jsx(
|
|
29
|
+
"form",
|
|
30
|
+
{
|
|
31
|
+
ref,
|
|
32
|
+
"data-slot": "form",
|
|
33
|
+
"data-layout": layout,
|
|
34
|
+
className: cn("ui-form", density && `ui-density-${density}`, className),
|
|
35
|
+
...props,
|
|
36
|
+
children: /* @__PURE__ */ jsx(FormLayoutContext.Provider, { value: ctx, children: content })
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
var toCssLength = (v) => typeof v === "number" ? `${v}px` : v;
|
|
41
|
+
function FormField({
|
|
42
|
+
id,
|
|
43
|
+
label,
|
|
44
|
+
required,
|
|
45
|
+
helper,
|
|
46
|
+
error,
|
|
47
|
+
labelAddon,
|
|
48
|
+
layout: layoutProp,
|
|
49
|
+
labelWidth: labelWidthProp,
|
|
50
|
+
controlWidth: controlWidthProp,
|
|
51
|
+
colSpan,
|
|
52
|
+
className,
|
|
53
|
+
children
|
|
54
|
+
}) {
|
|
55
|
+
const form = useFormLayout();
|
|
56
|
+
const layout = layoutProp ?? form?.layout ?? "vertical";
|
|
57
|
+
const labelWidth = labelWidthProp ?? form?.labelWidth;
|
|
58
|
+
const controlWidth = controlWidthProp ?? form?.controlWidth;
|
|
59
|
+
const labelAlign = form?.labelAlign ?? "end";
|
|
60
|
+
const collapseBelow = form?.collapseBelow ?? "md";
|
|
61
|
+
const helperId = helper ? `${id}-helper` : void 0;
|
|
62
|
+
const errorId = error ? `${id}-error` : void 0;
|
|
63
|
+
if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production" && !React.isValidElement(children)) {
|
|
64
|
+
console.warn(
|
|
65
|
+
"FormField expects a single React element child to receive aria-describedby/aria-errormessage; the helper text and error message will not be associated with the control."
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
const childWithA11y = React.isValidElement(children) ? React.cloneElement(children, {
|
|
69
|
+
// Helper and error can coexist: helper stays on aria-describedby, the error on
|
|
70
|
+
// aria-errormessage (surfaced when aria-invalid is true).
|
|
71
|
+
"aria-describedby": helperId,
|
|
72
|
+
"aria-errormessage": errorId,
|
|
73
|
+
"aria-required": required ? true : void 0,
|
|
74
|
+
"aria-invalid": !!error || void 0
|
|
75
|
+
}) : children;
|
|
76
|
+
const style = {};
|
|
77
|
+
if (labelWidth != null)
|
|
78
|
+
style["--form-label-width"] = toCssLength(labelWidth);
|
|
79
|
+
if (controlWidth != null)
|
|
80
|
+
style["--form-control-width"] = toCssLength(controlWidth);
|
|
81
|
+
if (colSpan != null) style.gridColumn = `span ${colSpan}`;
|
|
82
|
+
return /* @__PURE__ */ jsxs(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
"data-slot": "form-field",
|
|
86
|
+
"data-layout": layout,
|
|
87
|
+
"data-collapse-below": String(collapseBelow),
|
|
88
|
+
"data-label-align": labelAlign,
|
|
89
|
+
style: Object.keys(style).length ? style : void 0,
|
|
90
|
+
className: cn("ui-form-field", className),
|
|
91
|
+
children: [
|
|
92
|
+
/* @__PURE__ */ jsxs("div", { "data-slot": "form-field-label", className: "ui-form-field-label", children: [
|
|
93
|
+
/* @__PURE__ */ jsxs(Label, { htmlFor: id, className: "ui-inline-xs", children: [
|
|
94
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
95
|
+
required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
|
|
96
|
+
] }),
|
|
97
|
+
labelAddon
|
|
98
|
+
] }),
|
|
99
|
+
/* @__PURE__ */ jsxs("div", { "data-slot": "form-field-control", className: "ui-form-field-control", children: [
|
|
100
|
+
childWithA11y,
|
|
101
|
+
helper ? /* @__PURE__ */ jsx("p", { id: helperId, className: "text-muted-foreground text-xs", children: helper }) : null,
|
|
102
|
+
error ? /* @__PURE__ */ jsx("p", { id: errorId, role: "alert", className: "text-destructive text-xs", children: error }) : null
|
|
103
|
+
] })
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { Form, FormField, useFormLayout };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-
|
|
1
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-I2CYVA7B.js';
|
|
2
2
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
3
|
-
import { useTranslation } from './chunk-
|
|
3
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
4
4
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { MoreHorizontal, ChevronLeft, ChevronRight } from 'lucide-react';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Input } from './chunk-
|
|
1
|
+
import { Input } from './chunk-BNXPDUO4.js';
|
|
2
|
+
import { overlayHeaderToneClass } from './chunk-VU4GFGDG.js';
|
|
2
3
|
import { buttonVariants, Button } from './chunk-M4PZNAMV.js';
|
|
3
4
|
import { Label } from './chunk-7PWBC4BY.js';
|
|
4
|
-
import { useTranslation } from './chunk-
|
|
5
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
5
6
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
6
7
|
import * as React from 'react';
|
|
7
8
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -67,8 +68,35 @@ var DialogContent = React.forwardRef(({ className, children, showClose, showClos
|
|
|
67
68
|
] });
|
|
68
69
|
});
|
|
69
70
|
DialogContent.displayName = "DialogContent";
|
|
70
|
-
var DialogHeader = ({
|
|
71
|
+
var DialogHeader = ({
|
|
72
|
+
className,
|
|
73
|
+
title,
|
|
74
|
+
subtitle,
|
|
75
|
+
extra,
|
|
76
|
+
tone = "default",
|
|
77
|
+
children,
|
|
78
|
+
...props
|
|
79
|
+
}) => {
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
"data-slot": "dialog-header",
|
|
84
|
+
"data-tone": tone,
|
|
85
|
+
className: cn(overlayHeaderToneClass[tone], className),
|
|
86
|
+
...props,
|
|
87
|
+
children: children ?? /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-[var(--space-3)] pe-[var(--space-8)]", children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-[var(--space-1)]", children: [
|
|
89
|
+
title != null && /* @__PURE__ */ jsx(DialogTitle, { children: title }),
|
|
90
|
+
subtitle != null && /* @__PURE__ */ jsx(DialogDescription, { children: subtitle })
|
|
91
|
+
] }),
|
|
92
|
+
extra != null && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-[var(--space-2)] whitespace-nowrap", children: extra })
|
|
93
|
+
] })
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
};
|
|
71
97
|
DialogHeader.displayName = "DialogHeader";
|
|
98
|
+
var DialogBody = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { "data-slot": "dialog-body", className, ...props });
|
|
99
|
+
DialogBody.displayName = "DialogBody";
|
|
72
100
|
var DialogFooter = ({ className, ...props }) => (
|
|
73
101
|
// Layout (right-aligned actions, mobile column-reverse) lives in feedback-layout.css
|
|
74
102
|
// [data-slot="dialog-footer"]. Destructive action goes far-left via `className="mr-auto"`.
|
|
@@ -136,7 +164,32 @@ var AlertDialogContent = React.forwardRef(({ className, children, showClose, sho
|
|
|
136
164
|
);
|
|
137
165
|
});
|
|
138
166
|
AlertDialogContent.displayName = "AlertDialogContent";
|
|
139
|
-
var AlertDialogHeader = ({
|
|
167
|
+
var AlertDialogHeader = ({
|
|
168
|
+
className,
|
|
169
|
+
title,
|
|
170
|
+
subtitle,
|
|
171
|
+
extra,
|
|
172
|
+
tone = "default",
|
|
173
|
+
children,
|
|
174
|
+
...props
|
|
175
|
+
}) => {
|
|
176
|
+
return /* @__PURE__ */ jsx(
|
|
177
|
+
"div",
|
|
178
|
+
{
|
|
179
|
+
"data-slot": "dialog-header",
|
|
180
|
+
"data-tone": tone,
|
|
181
|
+
className: cn(overlayHeaderToneClass[tone], className),
|
|
182
|
+
...props,
|
|
183
|
+
children: children ?? /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-[var(--space-3)] pe-[var(--space-8)]", children: [
|
|
184
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-[var(--space-1)]", children: [
|
|
185
|
+
title != null && /* @__PURE__ */ jsx(AlertDialogTitle, { children: title }),
|
|
186
|
+
subtitle != null && /* @__PURE__ */ jsx(AlertDialogDescription, { children: subtitle })
|
|
187
|
+
] }),
|
|
188
|
+
extra != null && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-[var(--space-2)] whitespace-nowrap", children: extra })
|
|
189
|
+
] })
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
};
|
|
140
193
|
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
141
194
|
var AlertDialogFooter = ({ className, ...props }) => (
|
|
142
195
|
// Layout lives in feedback-layout.css [data-slot="dialog-footer"] (right-aligned actions).
|
|
@@ -266,6 +319,7 @@ var Dialog = Object.assign(DialogRoot, {
|
|
|
266
319
|
Overlay: DialogOverlay,
|
|
267
320
|
Content: DialogContent,
|
|
268
321
|
Header: DialogHeader,
|
|
322
|
+
Body: DialogBody,
|
|
269
323
|
Footer: DialogFooter,
|
|
270
324
|
Title: DialogTitle,
|
|
271
325
|
Description: DialogDescription,
|
|
@@ -274,4 +328,4 @@ var Dialog = Object.assign(DialogRoot, {
|
|
|
274
328
|
Cancel: DialogCancel
|
|
275
329
|
});
|
|
276
330
|
|
|
277
|
-
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger };
|
|
331
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Dialog, DialogAction, DialogBody, DialogCancel, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Calendar } from './chunk-
|
|
2
|
-
import { Input } from './chunk-
|
|
1
|
+
import { Calendar } from './chunk-KQ36FDEE.js';
|
|
2
|
+
import { Input } from './chunk-BNXPDUO4.js';
|
|
3
3
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
4
4
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-DY5C44UP.js';
|
|
5
|
-
import { useTranslation, usePickerLocales } from './chunk-
|
|
6
|
-
import { toIsoDate, parseDateInput } from './chunk-
|
|
5
|
+
import { useTranslation, usePickerLocales } from './chunk-H2TX3OPW.js';
|
|
6
|
+
import { toIsoDate, parseDateInput } from './chunk-JEIUEOTJ.js';
|
|
7
7
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
import { CalendarIcon } from 'lucide-react';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/lib/control-styles.ts
|
|
2
2
|
var controlMultilineClass = "ui-control-multiline w-full rounded-lg border border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/25 disabled:cursor-not-allowed disabled:opacity-50";
|
|
3
|
-
var
|
|
3
|
+
var controlOpenRingClass = "data-[state=open]:border-ring data-[state=open]:ring-ring/50 data-[state=open]:ring-[3px]";
|
|
4
|
+
var controlTriggerClass = "ui-control flex w-full items-center justify-between gap-2 whitespace-nowrap rounded-lg border border-input bg-background shadow-sm transition-[color,box-shadow] focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/25 data-[state=open]:border-ring data-[state=open]:ring-ring/50 data-[state=open]:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1";
|
|
4
5
|
var controlIconClass = "size-[length:var(--control-height)] shrink-0";
|
|
5
6
|
var controlIconSmClass = "size-[calc(var(--control-height)-0.5rem)] shrink-0";
|
|
6
7
|
var controlIconLeadingClass = "size-[length:var(--control-icon-size)] shrink-0";
|
|
@@ -14,4 +15,4 @@ var toneDestructiveClass = "border-destructive/30 bg-destructive/10 text-destruc
|
|
|
14
15
|
var toneMutedClass = "border-border bg-muted text-muted-foreground";
|
|
15
16
|
var toneNeutralClass = "border-border bg-muted text-muted-foreground";
|
|
16
17
|
|
|
17
|
-
export { controlIconClass, controlIconLeadingClass, controlIconSmClass, controlMultilineClass, controlTriggerClass, tableCellPaddingClass, tableHeadHeightClass, tableRowHeightClass, toneDestructiveClass, toneInfoClass, toneMutedClass, toneNeutralClass, toneSuccessClass, toneWarningClass };
|
|
18
|
+
export { controlIconClass, controlIconLeadingClass, controlIconSmClass, controlMultilineClass, controlOpenRingClass, controlTriggerClass, tableCellPaddingClass, tableHeadHeightClass, tableRowHeightClass, toneDestructiveClass, toneInfoClass, toneMutedClass, toneNeutralClass, toneSuccessClass, toneWarningClass };
|
|
@@ -10,7 +10,7 @@ var Input = React.forwardRef(
|
|
|
10
10
|
"data-slot": "input",
|
|
11
11
|
ref,
|
|
12
12
|
className: cn(
|
|
13
|
-
"ui-control border-input bg-background w-full min-w-0 rounded-md border px-3 py-1 text-
|
|
13
|
+
"ui-control border-input bg-background w-full min-w-0 rounded-md border px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none",
|
|
14
14
|
"selection:bg-primary selection:text-primary-foreground",
|
|
15
15
|
"file:text-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium",
|
|
16
16
|
"placeholder:text-muted-foreground",
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/components/layout/responsive-grid.tsx
|
|
4
|
+
function resolveColumns(columns) {
|
|
5
|
+
if (typeof columns === "number") {
|
|
6
|
+
return {
|
|
7
|
+
"--responsive-grid-sm": Math.min(columns, 2),
|
|
8
|
+
"--responsive-grid-md": Math.min(columns, 3),
|
|
9
|
+
"--responsive-grid-lg": columns
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
"--responsive-grid-sm": columns.sm ?? 1,
|
|
14
|
+
"--responsive-grid-md": columns.md ?? columns.sm ?? 1,
|
|
15
|
+
"--responsive-grid-lg": columns.lg ?? columns.md ?? columns.sm ?? 1
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function ResponsiveGrid({ columns = 4, children }) {
|
|
19
|
+
return /* @__PURE__ */ jsx("div", { className: "ui-responsive-grid", style: resolveColumns(columns), children });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { ResponsiveGrid };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EmptyState } from './chunk-YD7V2HGZ.js';
|
|
2
|
-
import { Flex, densityClass } from './chunk-INIIF7F7.js';
|
|
3
2
|
import { Checkbox } from './chunk-BE6GJGKJ.js';
|
|
3
|
+
import { Flex, densityClass } from './chunk-INIIF7F7.js';
|
|
4
4
|
import { Button } from './chunk-M4PZNAMV.js';
|
|
5
|
-
import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-
|
|
6
|
-
import { tableCellPaddingClass, tableRowHeightClass, controlIconSmClass } from './chunk-
|
|
7
|
-
import { useTranslation } from './chunk-
|
|
5
|
+
import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-IJ5ALJGA.js';
|
|
6
|
+
import { tableCellPaddingClass, tableRowHeightClass, controlIconSmClass } from './chunk-B4K4BXEF.js';
|
|
7
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
8
8
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
9
9
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
10
10
|
import * as React from 'react';
|
|
@@ -22,10 +22,13 @@ Descriptions.Item = function DescriptionsItem({
|
|
|
22
22
|
children
|
|
23
23
|
}) {
|
|
24
24
|
const spanClass = span === 2 ? "sm:col-span-2" : span === 3 ? "sm:col-span-2 lg:col-span-3" : "";
|
|
25
|
-
return
|
|
26
|
-
|
|
27
|
-
/* @__PURE__ */
|
|
28
|
-
|
|
25
|
+
return (
|
|
26
|
+
// grid + the shared --field-label-gap so the label→value gap matches FormField / Form everywhere.
|
|
27
|
+
/* @__PURE__ */ jsxs("div", { className: cn("grid gap-[var(--field-label-gap)]", spanClass, className), children: [
|
|
28
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground text-xs", children: label }),
|
|
29
|
+
/* @__PURE__ */ jsx("dd", { className: cn("text-sm break-all", mono && "font-mono"), children })
|
|
30
|
+
] })
|
|
31
|
+
);
|
|
29
32
|
};
|
|
30
33
|
var DataTableContext = React.createContext(null);
|
|
31
34
|
function useDataTableContext() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { toast as sonnerToast } from 'sonner';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useTranslation } from './chunk-
|
|
1
|
+
import { useTranslation } from './chunk-H2TX3OPW.js';
|
|
2
2
|
import { cn } from './chunk-U7N2A7A3.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
@@ -18,16 +18,21 @@ var Carousel = React.forwardRef(({ className, opts, plugins, setApi, children, .
|
|
|
18
18
|
const [emblaRef, api] = useEmblaCarousel(opts, plugins);
|
|
19
19
|
const [canScrollPrev, setCanScrollPrev] = React.useState(false);
|
|
20
20
|
const [canScrollNext, setCanScrollNext] = React.useState(false);
|
|
21
|
+
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
|
22
|
+
const [scrollSnaps, setScrollSnaps] = React.useState([]);
|
|
21
23
|
const onSelect = React.useCallback(() => {
|
|
22
24
|
if (!api) return;
|
|
23
25
|
setCanScrollPrev(api.canScrollPrev());
|
|
24
26
|
setCanScrollNext(api.canScrollNext());
|
|
27
|
+
setSelectedIndex(api.selectedScrollSnap());
|
|
25
28
|
}, [api]);
|
|
26
29
|
React.useEffect(() => {
|
|
27
30
|
if (!api) return void 0;
|
|
28
31
|
onSelect();
|
|
32
|
+
setScrollSnaps(api.scrollSnapList());
|
|
29
33
|
setApi?.(api);
|
|
30
34
|
api.on("reInit", onSelect);
|
|
35
|
+
api.on("reInit", () => setScrollSnaps(api.scrollSnapList()));
|
|
31
36
|
api.on("select", onSelect);
|
|
32
37
|
return () => {
|
|
33
38
|
api.off("reInit", onSelect);
|
|
@@ -50,12 +55,23 @@ var Carousel = React.forwardRef(({ className, opts, plugins, setApi, children, .
|
|
|
50
55
|
() => ({
|
|
51
56
|
canScrollPrev,
|
|
52
57
|
canScrollNext,
|
|
58
|
+
selectedIndex,
|
|
59
|
+
scrollSnaps,
|
|
53
60
|
api,
|
|
54
61
|
scrollPrev,
|
|
55
62
|
scrollNext,
|
|
56
63
|
scrollTo
|
|
57
64
|
}),
|
|
58
|
-
[
|
|
65
|
+
[
|
|
66
|
+
canScrollPrev,
|
|
67
|
+
canScrollNext,
|
|
68
|
+
selectedIndex,
|
|
69
|
+
scrollSnaps,
|
|
70
|
+
api,
|
|
71
|
+
scrollPrev,
|
|
72
|
+
scrollNext,
|
|
73
|
+
scrollTo
|
|
74
|
+
]
|
|
59
75
|
);
|
|
60
76
|
return /* @__PURE__ */ jsx(CarouselContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
61
77
|
"div",
|
|
@@ -158,5 +174,42 @@ var CarouselNext = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
158
174
|
);
|
|
159
175
|
});
|
|
160
176
|
CarouselNext.displayName = "CarouselNext";
|
|
177
|
+
var CarouselDots = React.forwardRef(
|
|
178
|
+
({ className, ...props }, ref) => {
|
|
179
|
+
const { t } = useTranslation();
|
|
180
|
+
const { scrollSnaps, selectedIndex, scrollTo } = useCarousel();
|
|
181
|
+
if (scrollSnaps.length <= 1) return null;
|
|
182
|
+
return /* @__PURE__ */ jsx(
|
|
183
|
+
"div",
|
|
184
|
+
{
|
|
185
|
+
ref,
|
|
186
|
+
"data-slot": "carousel-dots",
|
|
187
|
+
className: cn("ui-carousel-dots", className),
|
|
188
|
+
role: "tablist",
|
|
189
|
+
"aria-label": t("dataDisplay.carousel.dotsLabel"),
|
|
190
|
+
...props,
|
|
191
|
+
children: scrollSnaps.map((_, index) => {
|
|
192
|
+
const active = index === selectedIndex;
|
|
193
|
+
return /* @__PURE__ */ jsx(
|
|
194
|
+
"button",
|
|
195
|
+
{
|
|
196
|
+
type: "button",
|
|
197
|
+
role: "tab",
|
|
198
|
+
"data-slot": "carousel-dot",
|
|
199
|
+
"data-active": active ? "" : void 0,
|
|
200
|
+
className: "ui-carousel-dot",
|
|
201
|
+
"aria-selected": active,
|
|
202
|
+
"aria-current": active ? "true" : void 0,
|
|
203
|
+
"aria-label": t("dataDisplay.carousel.goToSlide", { index: index + 1 }),
|
|
204
|
+
onClick: () => scrollTo(index)
|
|
205
|
+
},
|
|
206
|
+
index
|
|
207
|
+
);
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
CarouselDots.displayName = "CarouselDots";
|
|
161
214
|
|
|
162
|
-
export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
|
|
215
|
+
export { Carousel, CarouselContent, CarouselDots, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APP_TIME_FORMATS, isAppDateFormat, isAppTimeFormat, isAppLocale, translate, getDateFnsLocale, syncI18nLocale, syncDatetimeContext, disableLiveRelativeFormatting, enableLiveRelativeFormatting, getDayPickerLocale, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, resolveDefaultDateFormat } from './chunk-
|
|
1
|
+
import { APP_TIME_FORMATS, isAppDateFormat, isAppTimeFormat, isAppLocale, translate, getDateFnsLocale, syncI18nLocale, syncDatetimeContext, disableLiveRelativeFormatting, enableLiveRelativeFormatting, getDayPickerLocale, APP_REQUEST_HEADER_DATE_FORMAT, APP_REQUEST_HEADER_TIME_FORMAT, resolveDefaultDateFormat } from './chunk-JEIUEOTJ.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|