@kazee-ds/react 0.5.0 → 0.5.2
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/README.md +28 -0
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/types/Toast.d.ts +8 -2
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["AriaButton","_Fragment","Root","AriaToggleButton","AriaToggleButtonGroup","_Fragment","AriaSelect","Label","Button","Popover","_Fragment","AriaInput","Label","Label","AriaTextArea","AriaLabel","AriaCheckbox","_Fragment","AriaRadioGroup","Label","_Fragment","_Fragment","Text","FieldError","ListBox","ListBoxItem","AriaNumberField","_Fragment","Label","Button","Input","Text","FieldError","_Fragment","AriaTabs","_Fragment","Button","AriaDialog","_Fragment","Popover","Separator","Button","Button","AriaPopover","Dialog","Button","AriaTooltip","AriaComboBox","Label","Input","Button","Popover","ListBox","ListBoxItem","_Fragment","ToggleButtonGroup","ToggleButton","Button","Popover","Dialog","_Fragment","ToastQueue","I18nProvider","ToastRegion","ToastList","_Fragment","AriaToast","ToastContent","Text","Button"],"sources":["../src/Button.tsx","../src/ButtonGroup.tsx","../src/ToggleButton.tsx","../src/OverlayDirection.tsx","../src/ToggleButtonGroup.tsx","../src/icons.tsx","../src/field.tsx","../src/SelectionValidation.tsx","../src/selection-options.ts","../src/Select.tsx","../src/SelectGroup.tsx","../src/Input.tsx","../src/Textarea.tsx","../src/Label.tsx","../src/Checkbox.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/form-context.ts","../src/FieldComponent.tsx","../src/Form.tsx","../src/listbox-selection.ts","../src/Listbox.tsx","../src/NumberField.tsx","../src/Card.tsx","../src/Badge.tsx","../src/Skeleton.tsx","../src/Separator.tsx","../src/tabs-indicator.ts","../src/Tabs.tsx","../src/pagination-model.ts","../src/Pagination.tsx","../src/Table.tsx","../src/DataTable.tsx","../src/Alert.tsx","../src/Empty.tsx","../src/Breadcrumb.tsx","../src/useDisclosure.ts","../src/Sidebar.tsx","../src/chart-model.ts","../src/Chart.tsx","../src/Dialog.tsx","../src/overlay-model.ts","../src/DropdownMenu.tsx","../src/Popover.tsx","../src/Tooltip.tsx","../src/Spinner.tsx","../src/Combobox.tsx","../src/toggle-group-model.ts","../src/ToggleGroup.tsx","../src/date-range-model.ts","../src/DateRangePicker.tsx","../src/toast-model.ts","../src/Toast.tsx"],"sourcesContent":["import {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps,\n} from 'react-aria-components/Button';\nimport { useContext, type ReactNode } from 'react';\nimport { ProgressBarContext } from 'react-aria-components/ProgressBar';\n\nfunction PendingLabelAnchor() {\n const context = useContext(ProgressBarContext);\n const id = context && 'id' in context ? context.id : undefined;\n return id ? <span id={id} hidden aria-hidden=\"true\" /> : null;\n}\n\nexport type ButtonVariant =\n 'primary' | 'secondary' | 'danger' | 'outline' | 'tertiary' | 'ghost' | 'danger-soft' | 'ai';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\n/** The event passed to `onPress`: pointer type, modifier keys, and the target element. */\nexport type ButtonPressEvent = Parameters<NonNullable<AriaButtonProps['onPress']>>[0];\n\n/** Public flags supplied to the Button render function. */\nexport interface ButtonRenderProps {\n isPending: boolean;\n isDisabled: boolean;\n isHovered: boolean;\n isPressed: boolean;\n isFocused: boolean;\n isFocusVisible: boolean;\n}\n/**\n * The props the design system supports on `Button`. Anything not listed here is not part of the\n * public API, even if the underlying React Aria button would accept it.\n */\nexport interface ButtonProps {\n /** Label or content of the button. */\n children?: ReactNode | ((state: ButtonRenderProps) => ReactNode);\n /** Square icon button. Supply aria-label or aria-labelledby. */\n isIconOnly?: boolean;\n /** Blocks actions while retaining focus. Render a Spinner through children if desired. */\n isPending?: boolean;\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Disables the button. The button is not focusable and `onPress` is not called. */\n isDisabled?: boolean;\n /**\n * Called when the button is activated by mouse, touch, keyboard, or screen reader. Use this\n * instead of `onClick`.\n */\n onPress?: (event: ButtonPressEvent) => void;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Accessible name when the button has no visible text, such as an icon-only button. */\n 'aria-label'?: string;\n /** Id of an element that labels the button. */\n 'aria-labelledby'?: string;\n /** Id of an element that describes the button. */\n 'aria-describedby'?: string;\n /** Id of the button element. */\n id?: string;\n /** Focuses the button when it first renders. */\n autoFocus?: boolean;\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n isIconOnly = false,\n isPending = false,\n isDisabled = false,\n fullWidth = false,\n type = 'button',\n children,\n ...props\n}: ButtonProps) {\n const className = [\n 'button',\n `button--${variant}`,\n size !== 'md' && `button--${size}`,\n isIconOnly && 'button--icon-only',\n fullWidth && !isIconOnly && 'button--full-width',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <AriaButton\n {...props}\n type={isPending ? 'button' : type}\n className={className}\n isDisabled={isDisabled}\n isPending={isPending}\n >\n {(state) => (\n <>\n {typeof children === 'function'\n ? children({\n isPending: state.isPending,\n isDisabled: state.isDisabled,\n isHovered: state.isHovered,\n isPressed: state.isPressed,\n isFocused: state.isFocused,\n isFocusVisible: state.isFocusVisible,\n })\n : children}\n {isPending && <PendingLabelAnchor />}\n </>\n )}\n </AriaButton>\n );\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ReactElement,\n} from 'react';\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from './Button.js';\n\nexport interface ButtonGroupProps {\n label: string;\n children: ReactNode;\n variant?: ButtonVariant;\n size?: ButtonSize;\n isDisabled?: boolean;\n fullWidth?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}\nexport function ButtonGroupSeparator() {\n return <span className=\"button-group__separator\" aria-hidden=\"true\" />;\n}\nfunction Root({\n children,\n label,\n variant,\n size,\n isDisabled,\n fullWidth,\n orientation = 'horizontal',\n dir,\n}: ButtonGroupProps) {\n function defaults(nodes: ReactNode): ReactNode {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) return child;\n if (child.type === Fragment)\n return cloneElement(\n child as ReactElement<{ children: ReactNode }>,\n {},\n defaults((child.props as { children: ReactNode }).children),\n );\n if (child.type !== Button) return child;\n const button = child as ReactElement<ButtonProps>;\n return cloneElement(button, {\n variant: button.props.variant ?? variant,\n size: button.props.size ?? size,\n isDisabled: button.props.isDisabled ?? isDisabled,\n });\n });\n }\n return (\n <div\n role=\"group\"\n aria-label={label}\n dir={dir}\n data-orientation={orientation}\n className={`button-group${fullWidth ? ' button-group--full-width' : ''}`}\n >\n {defaults(children)}\n </div>\n );\n}\nexport const ButtonGroup = /* @__PURE__ */ Object.assign(Root, { Separator: ButtonGroupSeparator });\n","import { createContext, useContext, type ReactNode } from 'react';\nimport {\n ToggleButton as AriaToggleButton,\n type ToggleButtonRenderProps as AriaRenderProps,\n} from 'react-aria-components/ToggleButton';\nimport type { ButtonPressEvent, ButtonSize } from './Button.js';\n\nexport type ToggleButtonVariant = 'default' | 'ghost';\nexport type ToggleButtonRenderProps = Omit<AriaRenderProps, 'state'>;\nexport interface ToggleButtonProps {\n id?: string;\n children?: ReactNode | ((state: ToggleButtonRenderProps) => ReactNode);\n variant?: ToggleButtonVariant;\n size?: ButtonSize;\n isIconOnly?: boolean;\n isSelected?: boolean;\n defaultSelected?: boolean;\n isDisabled?: boolean;\n onChange?: (selected: boolean) => void;\n onPress?: (event: ButtonPressEvent) => void;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n autoFocus?: boolean;\n}\nexport const ToggleButtonSizeContext = createContext<ButtonSize>('md');\nexport function ToggleButton({\n children,\n variant = 'default',\n size,\n isIconOnly,\n ...props\n}: ToggleButtonProps) {\n const inheritedSize = useContext(ToggleButtonSizeContext);\n const resolvedSize = size ?? inheritedSize;\n return (\n <AriaToggleButton\n {...props}\n className={[\n 'button',\n 'toggle-button',\n `toggle-button--${variant}`,\n resolvedSize !== 'md' && `button--${resolvedSize}`,\n isIconOnly && 'button--icon-only',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {({ isSelected, isPressed, isHovered, isFocused, isFocusVisible, isDisabled }) =>\n typeof children === 'function'\n ? children({ isSelected, isPressed, isHovered, isFocused, isFocusVisible, isDisabled })\n : children\n }\n </AriaToggleButton>\n );\n}\n","import type { ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nexport function OverlayDirection({ dir, children }: { dir?: 'ltr' | 'rtl'; children: ReactNode }) {\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{children}</I18nProvider>\n ) : (\n children\n );\n}\n","import type { ReactNode } from 'react';\nimport { ToggleButtonGroup as AriaToggleButtonGroup } from 'react-aria-components/ToggleButtonGroup';\nimport type { ButtonSize } from './Button.js';\nimport { ToggleButtonSizeContext } from './ToggleButton.js';\nimport { ButtonGroupSeparator } from './ButtonGroup.js';\nimport { OverlayDirection } from './OverlayDirection.js';\n\ninterface Common {\n label: string;\n children: ReactNode;\n size?: ButtonSize;\n isDisabled?: boolean;\n isDetached?: boolean;\n fullWidth?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n}\nexport type ToggleButtonGroupProps = Common &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nconst keys = (value: string | string[] | null | undefined) =>\n Array.isArray(value) ? value : value ? [value] : [];\nfunction Root(props: ToggleButtonGroupProps) {\n return (\n <OverlayDirection dir={props.dir}>\n <ToggleButtonSizeContext.Provider value={props.size ?? 'md'}>\n <AriaToggleButtonGroup\n aria-label={props.label}\n dir={props.dir}\n className={[\n 'button-group',\n 'toggle-button-group',\n props.isDetached && 'button-group--detached',\n props.fullWidth && 'button-group--full-width',\n ]\n .filter(Boolean)\n .join(' ')}\n orientation={props.orientation ?? 'horizontal'}\n selectionMode={props.selectionMode ?? 'single'}\n selectedKeys={props.value === undefined ? undefined : keys(props.value)}\n defaultSelectedKeys={keys(props.defaultValue)}\n onSelectionChange={(selected) => {\n if (props.isDisabled) return;\n const next = Array.from(selected, String);\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else props.onChange?.(next[0] ?? null);\n }}\n isDisabled={props.isDisabled}\n disallowEmptySelection={props.disallowEmptySelection}\n >\n {props.children}\n </AriaToggleButtonGroup>\n </ToggleButtonSizeContext.Provider>\n </OverlayDirection>\n );\n}\nexport const ToggleButtonGroup = /* @__PURE__ */ Object.assign(Root, {\n Separator: ButtonGroupSeparator,\n});\n","interface IconProps {\n className?: string;\n}\n\nexport function ChevronIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n );\n}\n\nexport function CheckIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3.5 8.5l3 3 6-6.5\" />\n </svg>\n );\n}\n\nexport function CloseIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n );\n}\n","import { useId } from 'react';\n\nexport interface FieldFeedbackProps {\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n}\n\nexport function useFeedback({ description, errorMessage, isInvalid }: FieldFeedbackProps) {\n const id = useId();\n const descriptionId = `${id}-description`;\n const errorId = `${id}-error`;\n const showError = !!(isInvalid && errorMessage);\n return {\n describedBy:\n [description && descriptionId, showError && errorId].filter(Boolean).join(' ') || undefined,\n feedback: (\n <>\n {description && (\n <span id={descriptionId} className=\"input__description\">\n {description}\n </span>\n )}\n {showError && (\n <span id={errorId} className=\"input__error\">\n {errorMessage}\n </span>\n )}\n </>\n ),\n };\n}\n","import { useEffect, useRef } from 'react';\nexport function SelectionValidation({\n hasValue,\n required,\n disabled,\n onInvalid,\n onReset,\n onResetStart,\n}: {\n hasValue: boolean;\n required?: boolean;\n disabled?: boolean;\n onInvalid: () => void;\n onReset: (cancelled: boolean) => void;\n onResetStart: () => void;\n}) {\n const ref = useRef<HTMLInputElement>(null);\n useEffect(() => {\n const form = ref.current?.form;\n const reset = (event: Event) => {\n // Capture before headless controls react to reset; only commit after cancellation is known.\n onResetStart();\n // A new task is required: browser microtasks can run between capture and bubble listeners.\n setTimeout(() => onReset(event.defaultPrevented), 0);\n };\n form?.addEventListener('reset', reset, true);\n return () => form?.removeEventListener('reset', reset, true);\n }, [onReset, onResetStart]);\n return (\n <input\n ref={ref}\n className=\"selection__validation\"\n type=\"text\"\n tabIndex={-1}\n aria-hidden=\"true\"\n autoComplete=\"off\"\n required={required}\n disabled={disabled}\n value={hasValue ? 'selected' : ''}\n onChange={() => {}}\n onInvalid={(event) => {\n event.preventDefault();\n onInvalid();\n }}\n />\n );\n}\n","export interface SelectOption {\n id: string;\n label: string;\n description?: string;\n isDisabled?: boolean;\n}\nexport function selectionIds(value: unknown, options: SelectOption[], multiple: boolean): string[] {\n const requested = new Set(\n Array.isArray(value) ? value : typeof value === 'string' ? [value] : [],\n );\n const ids = [\n ...new Set(options.filter((o) => o.id !== '' && requested.has(o.id)).map((o) => o.id)),\n ];\n return multiple ? ids : ids.slice(0, 1);\n}\nexport function filterOptions(options: SelectOption[], query: string): SelectOption[] {\n const fold = (text: string) => text.normalize('NFD').replace(/\\p{M}/gu, '').toLowerCase();\n const search = fold(query.trim());\n return options.filter((o) => fold(`${o.label} ${o.description ?? ''}`).includes(search));\n}\n","import { useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport {\n Button,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n Select as AriaSelect,\n SelectValue,\n} from 'react-aria-components/Select';\nimport { CloseIcon, CheckIcon, ChevronIcon } from './icons.js';\nimport { useFeedback } from './field.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nexport type { SelectOption } from './selection-options.js';\nexport type SelectSize = 'sm' | 'md' | 'lg';\nexport type SelectVariant = 'primary' | 'secondary' | 'outline';\ninterface SelectCommonProps {\n /** Activates an option even when it is already selected (for linked editors). */\n onAction?: (value: string) => void;\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n /** Hide visually while retaining the accessible label. */\n hideLabel?: boolean;\n /** Defaults to true to preserve the existing full-width trigger. */\n fullWidth?: boolean;\n /** Decorative noninteractive icon before the value/input. */\n startContent?: ReactNode;\n placeholder?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n isClearable?: boolean;\n clearLabel?: string;\n onClear?: () => void;\n renderOption?: (option: SelectOption) => ReactNode;\n renderValue?: (selected: SelectOption[]) => ReactNode;\n}\nexport type SelectProps = SelectCommonProps &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nexport function Select(props: Extract<SelectProps, { selectionMode: 'multiple' }>): ReactNode;\nexport function Select(props: Exclude<SelectProps, { selectionMode: 'multiple' }>): ReactNode;\nexport function Select(props: SelectProps) {\n const {\n label,\n options,\n placeholder,\n isDisabled,\n isRequired,\n isClearable,\n clearLabel = 'Hapus pilihan',\n dir,\n } = props;\n const multiple = props.selectionMode === 'multiple';\n const [local, setLocal] = useState<unknown>(props.defaultValue);\n const [tried, setTried] = useState(false);\n const resetting = useRef(false);\n const trigger = useRef<HTMLButtonElement>(null);\n const ids = selectionIds(props.value !== undefined ? props.value : local, options, multiple);\n const selected = options.filter((o) => ids.includes(o.id));\n const invalid = props.isInvalid || (tried && isRequired && ids.length === 0);\n const { describedBy, feedback } = useFeedback({\n description: props.description,\n isInvalid: invalid,\n errorMessage:\n props.errorMessage ??\n (isRequired && ids.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n });\n function update(value: unknown) {\n if (isDisabled || resetting.current) return;\n const next = selectionIds(value, options, multiple);\n setLocal(multiple ? next : (next[0] ?? null));\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else if (next[0] !== undefined) props.onChange?.(next[0]);\n }\n function clear() {\n if (isDisabled || resetting.current) return;\n setLocal(multiple ? [] : null);\n if (props.selectionMode === 'multiple') props.onChange?.([]);\n props.onClear?.();\n trigger.current?.focus();\n }\n const select = (\n <AriaSelect<SelectOption, 'single' | 'multiple'>\n className={[\n 'select',\n `select--${props.size ?? 'md'}`,\n `select--${props.variant ?? 'primary'}`,\n props.hideLabel && 'select--label-hidden',\n props.fullWidth === false && 'select--fit',\n ]\n .filter(Boolean)\n .join(' ')}\n data-multiple={multiple || undefined}\n selectionMode={multiple ? 'multiple' : 'single'}\n value={multiple ? ids : (ids[0] ?? null)}\n onChange={update}\n placeholder={placeholder}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={!!invalid}\n validationBehavior=\"aria\"\n aria-describedby={describedBy}\n >\n <Label className=\"select__label\">\n {label}\n {isRequired && (\n <span className=\"selection__required\" aria-hidden=\"true\">\n {' '}\n *\n </span>\n )}\n </Label>\n <div className=\"select__control\" data-clearable={isClearable || undefined}>\n <Button ref={trigger} className=\"select__trigger\" aria-describedby={describedBy}>\n {props.startContent && (\n <span className=\"selection__leading\" aria-hidden=\"true\">\n {props.startContent}\n </span>\n )}\n <SelectValue className=\"select__value\">\n {() =>\n selected.length\n ? (props.renderValue?.(selected) ?? selected.map((o) => o.label).join(', '))\n : placeholder\n }\n </SelectValue>\n <ChevronIcon className=\"select__icon\" />\n </Button>\n {isClearable && (\n <button\n type=\"button\"\n className=\"selection__clear\"\n data-empty={ids.length === 0 || undefined}\n aria-hidden={ids.length === 0 || undefined}\n tabIndex={ids.length === 0 ? -1 : undefined}\n aria-label={clearLabel}\n disabled={isDisabled || ids.length === 0}\n onClick={clear}\n >\n <CloseIcon className=\"selection__close-icon\" />\n </button>\n )}\n </div>\n <Popover className=\"select__popover\">\n <ListBox className=\"select__list\">\n {options.map((option) => (\n <ListBoxItem\n onPress={props.onAction ? () => props.onAction!(option.id) : undefined}\n key={option.id}\n id={option.id}\n textValue={option.label}\n isDisabled={option.isDisabled}\n className=\"select__item\"\n >\n <span className=\"select__item-label\">\n {props.renderOption?.(option) ?? (\n <>\n {option.label}\n {option.description && (\n <span className=\"selection__description\">{option.description}</span>\n )}\n </>\n )}\n </span>\n <CheckIcon className=\"select__check\" />\n </ListBoxItem>\n ))}\n </ListBox>\n </Popover>\n {feedback}\n {props.name &&\n (multiple ? ids : [ids[0] ?? '']).map((id, i) => (\n <input key={i} type=\"hidden\" name={props.name} value={id} disabled={isDisabled} />\n ))}\n <SelectionValidation\n hasValue={ids.length > 0}\n required={isRequired}\n disabled={isDisabled}\n onInvalid={() => {\n setTried(true);\n trigger.current?.focus();\n }}\n onResetStart={() => {\n resetting.current = true;\n }}\n onReset={(cancelled) => {\n resetting.current = false;\n if (!cancelled) {\n setTried(false);\n if (props.value === undefined) setLocal(props.defaultValue);\n }\n }}\n />\n </AriaSelect>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{select}</I18nProvider>\n ) : (\n select\n );\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { Select, type SelectProps, type SelectSize, type SelectVariant } from './Select.js';\nexport interface SelectGroupProps {\n label: string;\n children: ReactNode;\n size?: SelectSize;\n variant?: SelectVariant;\n fullWidth?: boolean;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\n/** Joins direct Select children. Each child retains its own value and accessible label. */\nexport function SelectGroup({\n label,\n children,\n size,\n variant,\n fullWidth = true,\n isDisabled,\n dir,\n}: SelectGroupProps) {\n function defaults(nodes: ReactNode): ReactNode {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) return child;\n if (child.type === Fragment)\n return cloneElement(\n child as ReactElement<{ children: ReactNode }>,\n {},\n defaults((child.props as { children: ReactNode }).children),\n );\n if (child.type !== Select) return child;\n const select = child as ReactElement<SelectProps>;\n return cloneElement(select, {\n size: select.props.size ?? size,\n variant: select.props.variant ?? variant,\n hideLabel: select.props.hideLabel ?? true,\n fullWidth: select.props.fullWidth ?? fullWidth,\n isDisabled: !!isDisabled || select.props.isDisabled,\n dir: select.props.dir ?? dir,\n });\n });\n }\n return (\n <fieldset\n className={['select-group', !fullWidth && 'select-group--fit'].filter(Boolean).join(' ')}\n disabled={isDisabled}\n dir={dir}\n >\n <legend className=\"select-group__legend\">{label}</legend>\n <div className=\"select-group__controls\">{defaults(children)}</div>\n </fieldset>\n );\n}\n","import {\n FieldError,\n Input as AriaInput,\n Label,\n Text,\n TextField,\n} from 'react-aria-components/TextField';\nimport {\n forwardRef,\n useImperativeHandle,\n useRef,\n type FocusEventHandler,\n type KeyboardEventHandler,\n type ReactNode,\n} from 'react';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url';\nexport type InputVariant = 'primary' | 'secondary';\nexport type InputMode =\n 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\nexport type InputEnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';\n\n/** A labeled single-line string field. Numeric/date parsing is a separate contract. */\nexport interface InputProps {\n label: string;\n value?: string;\n defaultValue?: string;\n /** Receives the string value, not a DOM event. Clear with an empty string. */\n onChange?: (value: string) => void;\n description?: string;\n /** Shown only when isInvalid is true; the application owns validation. */\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n /** Fill the available width. Defaults to true to preserve the existing field layout. */\n fullWidth?: boolean;\n /** Leading/trailing content. Mark decorative icons aria-hidden; name interactive buttons. */\n prefix?: ReactNode;\n suffix?: ReactNode;\n name?: string;\n id?: string;\n autoComplete?: string;\n maxLength?: number;\n minLength?: number;\n pattern?: string;\n inputMode?: InputMode;\n enterKeyHint?: InputEnterKeyHint;\n autoFocus?: boolean;\n spellCheck?: boolean;\n form?: string;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n onKeyUp?: KeyboardEventHandler<HTMLInputElement>;\n dir?: 'ltr' | 'rtl';\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n label,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n placeholder,\n type = 'text',\n size = 'md',\n variant = 'primary',\n fullWidth = true,\n prefix,\n suffix,\n name,\n id,\n autoComplete,\n maxLength,\n minLength,\n pattern,\n inputMode,\n enterKeyHint,\n autoFocus,\n spellCheck,\n form,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n dir,\n }: InputProps,\n ref,\n) {\n const control = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => control.current!);\n const hasAdornment = prefix != null || suffix != null;\n /* eslint-disable jsx-a11y/no-autofocus -- This forwards the caller's explicit opt-in; autofocus is never enabled by default. */\n const input = (\n <AriaInput\n ref={control}\n className=\"input__control\"\n placeholder={placeholder}\n required={isRequired}\n minLength={minLength}\n pattern={pattern}\n inputMode={inputMode}\n enterKeyHint={enterKeyHint}\n autoFocus={autoFocus}\n spellCheck={spellCheck}\n form={form}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n />\n );\n /* eslint-enable jsx-a11y/no-autofocus */\n return (\n <TextField\n className={`input input--${size} input--${variant}${fullWidth ? '' : ' input--fit'}`}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n validationBehavior=\"aria\"\n type={type}\n name={name}\n id={id}\n autoComplete={autoComplete}\n maxLength={maxLength}\n dir={dir}\n >\n <Label className=\"input__label\">{label}</Label>\n <fieldset className=\"input__boundary\" role=\"presentation\" disabled={isDisabled}>\n <div\n className={hasAdornment ? 'input__group' : 'input__plain'}\n data-invalid={isInvalid || undefined}\n data-readonly={isReadOnly || undefined}\n onPointerDown={(event) => {\n if (\n !isDisabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n control.current?.focus();\n }\n }}\n >\n {prefix != null && <span className=\"input__prefix\">{prefix}</span>}\n {input}\n {suffix != null && <span className=\"input__suffix\">{suffix}</span>}\n </div>\n </fieldset>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </TextField>\n );\n});\n","import {\n FieldError,\n TextArea as AriaTextArea,\n Label,\n Text,\n TextField,\n} from 'react-aria-components/TextField';\n\n/** A labeled multiline string field; validation is owned by the application. */\nexport interface TextareaProps {\n label: string;\n value?: string;\n defaultValue?: string;\n /** Receives the string value, not a DOM event. Clear with an empty string. */\n onChange?: (value: string) => void;\n description?: string;\n /** Shown only when isInvalid is true; the application owns validation. */\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n placeholder?: string;\n rows?: number;\n resize?: 'vertical' | 'none';\n name?: string;\n id?: string;\n autoComplete?: string;\n maxLength?: number;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Textarea({\n label,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n placeholder,\n rows = 3,\n resize = 'vertical',\n name,\n id,\n autoComplete,\n maxLength,\n dir,\n}: TextareaProps) {\n return (\n <TextField\n className=\"input textarea\"\n data-resize={resize}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n validationBehavior=\"aria\"\n name={name}\n id={id}\n autoComplete={autoComplete}\n maxLength={maxLength}\n dir={dir}\n >\n <Label className=\"input__label\">{label}</Label>\n <AriaTextArea\n className=\"input__control textarea__control\"\n rows={rows}\n placeholder={placeholder}\n required={isRequired}\n />\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </TextField>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Label as AriaLabel } from 'react-aria-components/Label';\n\nexport interface LabelProps {\n children: ReactNode;\n htmlFor?: string;\n id?: string;\n}\n\n/** Associates visible text with a separately rendered control. */\nexport function Label({ children, htmlFor, id }: LabelProps) {\n return (\n <AriaLabel className=\"label\" htmlFor={htmlFor} id={id}>\n {children}\n </AriaLabel>\n );\n}\n","import { Checkbox as AriaCheckbox } from 'react-aria-components/Checkbox';\nimport { CheckIcon } from './icons.js';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\n\nexport interface CheckboxProps extends FieldFeedbackProps {\n label: string;\n isSelected?: boolean;\n defaultSelected?: boolean;\n onChange?: (selected: boolean) => void;\n isDisabled?: boolean;\n isRequired?: boolean;\n /** Presentational mixed state; the application clears it after a change. */\n isIndeterminate?: boolean;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Checkbox({\n label,\n description,\n errorMessage,\n isInvalid = false,\n isSelected,\n defaultSelected,\n onChange,\n isDisabled = false,\n isRequired = false,\n isIndeterminate = false,\n name,\n value = 'on',\n id,\n dir,\n}: CheckboxProps) {\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n return (\n <div className=\"input\" dir={dir}>\n <AriaCheckbox\n className=\"choice\"\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n onChange={onChange}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={isInvalid}\n isIndeterminate={isIndeterminate}\n validationBehavior=\"aria\"\n name={name}\n value={value}\n id={id}\n aria-describedby={describedBy}\n aria-invalid={isInvalid || undefined}\n >\n {({ isSelected: selected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"checkbox__control\"\n data-state={isIndeterminate ? 'indeterminate' : selected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <CheckIcon className=\"checkbox__check\" />\n <span className=\"checkbox__dash\" />\n </span>\n <span className=\"choice__label\">{label}</span>\n </>\n )}\n </AriaCheckbox>\n {feedback}\n </div>\n );\n}\n","import { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { Label, Radio, RadioGroup as AriaRadioGroup } from 'react-aria-components/RadioGroup';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\n\nexport interface RadioOption {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport interface RadioGroupProps extends FieldFeedbackProps {\n label: string;\n options: RadioOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n isDisabled?: boolean;\n isRequired?: boolean;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n}\n\nexport function RadioGroup({\n label,\n options,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isRequired = false,\n name,\n id,\n orientation = 'vertical',\n dir,\n}: RadioGroupProps) {\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n const group = (\n <AriaRadioGroup\n className=\"input radio-group\"\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n name={name}\n id={id}\n orientation={orientation}\n dir={dir}\n aria-describedby={describedBy}\n >\n <Label className=\"label\">{label}</Label>\n <div className=\"radio-group__items\" data-orientation={orientation}>\n {options.map((option) => (\n <Radio\n key={option.id}\n value={option.id}\n isDisabled={option.isDisabled}\n className=\"choice\"\n >\n {({ isSelected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"radio__control\"\n data-state={isSelected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <span className=\"radio__dot\" />\n </span>\n <span className=\"choice__label\">{option.label}</span>\n </>\n )}\n </Radio>\n ))}\n </div>\n {feedback}\n </AriaRadioGroup>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{group}</I18nProvider>\n ) : (\n group\n );\n}\n","import { FieldError, SwitchField, SwitchButton, Text } from 'react-aria-components/Switch';\n\nimport type { FieldFeedbackProps } from './field.js';\n\nexport interface SwitchProps extends FieldFeedbackProps {\n label: string;\n isSelected?: boolean;\n defaultSelected?: boolean;\n onChange?: (selected: boolean) => void;\n isDisabled?: boolean;\n\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Switch({\n label,\n description,\n errorMessage,\n isInvalid = false,\n isSelected,\n defaultSelected,\n onChange,\n isDisabled = false,\n name,\n value = 'on',\n id,\n dir,\n}: SwitchProps) {\n return (\n <SwitchField\n className=\"input\"\n dir={dir}\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n onChange={onChange}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n name={name}\n value={value}\n id={id}\n >\n <SwitchButton className=\"choice\">\n {({ isSelected: selected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"switch__control\"\n data-state={selected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <span className=\"switch__thumb\" />\n </span>\n <span className=\"choice__label\">{label}</span>\n </>\n )}\n </SwitchButton>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </SwitchField>\n );\n}\n","import { createContext } from 'react';\n\n/** Application-owned errors, keyed by the Field name. Clear entries explicitly. */\nexport type ValidationErrors = Readonly<Record<string, string | undefined>>;\nexport const FormErrorsContext = /* @__PURE__ */ createContext<ValidationErrors>({});\n","import { useContext, useId, type ReactNode } from 'react';\nimport { Label } from './Label.js';\nimport { useFeedback } from './field.js';\nimport { FormErrorsContext } from './form-context.js';\n\n/** Bind these props to exactly one native input, textarea, or select. */\nexport interface FieldControlProps {\n id: string;\n name: string;\n className: string;\n disabled: boolean;\n readOnly: boolean;\n required: boolean;\n 'aria-required': true | undefined;\n 'aria-invalid': true | undefined;\n 'aria-describedby': string | undefined;\n}\nexport interface FieldRenderProps {\n controlProps: FieldControlProps;\n isInvalid: boolean;\n errorMessage: string | undefined;\n}\n/** Experimental composition API; the application owns the control value. */\nexport interface FieldProps {\n label: string;\n name: string;\n children: (field: FieldRenderProps) => ReactNode;\n id?: string;\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Field({\n label,\n name,\n children,\n id,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n dir,\n}: FieldProps) {\n const errors = useContext(FormErrorsContext);\n const error =\n Object.hasOwn(errors, name) && typeof errors[name] === 'string'\n ? errors[name] || undefined\n : undefined;\n const invalid = isInvalid || !!error;\n const message = (isInvalid && errorMessage) || error || undefined;\n const generated = useId();\n const controlId = id ?? generated;\n const { describedBy, feedback } = useFeedback({\n description,\n isInvalid: invalid,\n errorMessage: message,\n });\n const controlProps: FieldControlProps = {\n id: controlId,\n name,\n className: 'input__control field__control',\n disabled: isDisabled,\n readOnly: isReadOnly,\n required: isRequired,\n 'aria-required': isRequired || undefined,\n 'aria-invalid': invalid || undefined,\n 'aria-describedby': describedBy,\n };\n return (\n <div className=\"input field\" dir={dir}>\n <Label htmlFor={controlId}>{label}</Label>\n {children({ controlProps, isInvalid: invalid, errorMessage: message })}\n {feedback}\n </div>\n );\n}\n","import type { FormEvent, ReactNode } from 'react';\nimport { FormErrorsContext, type ValidationErrors } from './form-context.js';\n\n/** Experimental client form. Submission always prevents page navigation. */\nexport interface FormProps {\n children: ReactNode;\n validationErrors?: ValidationErrors;\n onSubmit?: (data: FormData, event: FormEvent<HTMLFormElement>) => void;\n /** Prevent default and reset application state when using controlled values. */\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n /** Skips browser constraints; explicit aria-invalid state still blocks submission. */\n noValidate?: boolean;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Form({\n children,\n validationErrors = {},\n onSubmit,\n onReset,\n noValidate = false,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': labelledBy,\n dir,\n}: FormProps) {\n function submit(event: FormEvent<HTMLFormElement>) {\n event.preventDefault();\n const form = event.currentTarget;\n if (!noValidate && !form.checkValidity()) {\n form.reportValidity();\n return;\n }\n // ARIA validation is application-owned and also applies to labeled Kazee controls.\n for (const element of form.querySelectorAll<HTMLElement>('[aria-invalid=\"true\"]')) {\n const selector = 'input:not([type=\"hidden\"]), textarea, select, button, [role=\"listbox\"]';\n const controls = element.matches(selector)\n ? [element]\n : [...element.querySelectorAll<HTMLElement>(selector)];\n const invalid = controls.find(\n (control) => !control.matches(':disabled, [aria-disabled=\"true\"]'),\n );\n if (invalid) {\n invalid.focus();\n return;\n }\n }\n onSubmit?.(new FormData(form, (event.nativeEvent as SubmitEvent).submitter), event);\n }\n return (\n <FormErrorsContext.Provider value={validationErrors}>\n <form\n className=\"form\"\n id={id}\n dir={dir}\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n noValidate={noValidate}\n onSubmit={submit}\n onReset={onReset}\n >\n {children}\n </form>\n </FormErrorsContext.Provider>\n );\n}\n","export interface ListboxOption {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type ListboxSelectionMode = 'single' | 'multiple';\n/** Stable option order, unique enabled IDs, and at most one ID in single mode. */\nexport function listboxSelection(\n value: readonly string[],\n options: ListboxOption[],\n mode: ListboxSelectionMode,\n): string[] {\n const requested = new Set(value);\n const seen = new Set<string>();\n const result: string[] = [];\n for (const option of options) {\n if (option.id && !option.isDisabled && requested.has(option.id) && !seen.has(option.id)) {\n seen.add(option.id);\n result.push(option.id);\n if (mode === 'single') break;\n }\n }\n return result;\n}\n","import { useId, useRef, useState } from 'react';\nimport { ListBox, ListBoxItem, type Selection } from 'react-aria-components/ListBox';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { CheckIcon } from './icons.js';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\n\nexport interface ListboxProps extends FieldFeedbackProps {\n label: string;\n options: ListboxOption[];\n /** Always an array; empty selection is []. */\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n selectionMode?: ListboxSelectionMode;\n isDisabled?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n}\nexport function Listbox({\n label,\n options,\n value,\n defaultValue = [],\n onChange,\n selectionMode = 'single',\n isDisabled = false,\n description,\n errorMessage,\n isInvalid = false,\n name,\n id,\n dir,\n emptyMessage = 'Tidak ada pilihan.',\n}: ListboxProps) {\n const [local, setLocal] = useState(defaultValue);\n const selected = listboxSelection(value ?? local, options, selectionMode);\n const nodeRef = useRef<HTMLDivElement | null>(null);\n const tabIndexBeforeDisable = useRef<string | null | undefined>(undefined);\n function listRef(node: HTMLDivElement | null) {\n if (!node) return;\n if (nodeRef.current !== node) tabIndexBeforeDisable.current = undefined;\n nodeRef.current = node;\n // The public ListBox ref bridges ARIA props currently overwritten by its field hook.\n if (isInvalid) node.setAttribute('aria-invalid', 'true');\n else node.removeAttribute('aria-invalid');\n if (isDisabled) {\n node.setAttribute('aria-disabled', 'true');\n if (tabIndexBeforeDisable.current === undefined)\n tabIndexBeforeDisable.current = node.getAttribute('tabindex');\n node.tabIndex = -1;\n } else {\n node.removeAttribute('aria-disabled');\n if (tabIndexBeforeDisable.current !== undefined) {\n if (tabIndexBeforeDisable.current === null) node.removeAttribute('tabindex');\n else node.setAttribute('tabindex', tabIndexBeforeDisable.current);\n tabIndexBeforeDisable.current = undefined;\n }\n }\n }\n const generated = useId();\n const labelId = `${id ?? generated}-label`;\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n function change(keys: Selection) {\n if (isDisabled || keys === 'all') return;\n const next = listboxSelection([...keys].map(String), options, selectionMode);\n if (next.length === selected.length && next.every((key, index) => key === selected[index]))\n return;\n setLocal(next);\n onChange?.(next);\n }\n const list = (\n <div className=\"input listbox\" dir={dir}>\n <span id={labelId} className=\"label\">\n {label}\n </span>\n <ListBox\n ref={listRef}\n id={id}\n className=\"listbox__list\"\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid || undefined}\n aria-disabled={isDisabled || undefined}\n selectionMode={selectionMode}\n selectionBehavior={selectionMode === 'single' ? 'replace' : 'toggle'}\n disallowEmptySelection={selectionMode === 'single'}\n selectedKeys={selected}\n onSelectionChange={change}\n disabledKeys={options\n .filter((option) => isDisabled || option.isDisabled)\n .map((option) => option.id)}\n renderEmptyState={() => <span className=\"listbox__empty\">{emptyMessage}</span>}\n >\n {options.map((option) => (\n <ListBoxItem\n key={option.id}\n id={option.id}\n textValue={option.label}\n isDisabled={isDisabled || option.isDisabled}\n className=\"listbox__item\"\n >\n <span className=\"listbox__text\">{option.label}</span>\n <CheckIcon className=\"listbox__check\" />\n </ListBoxItem>\n ))}\n </ListBox>\n {feedback}\n {name &&\n selected.map((key) => (\n <input key={key} type=\"hidden\" name={name} value={key} disabled={isDisabled} />\n ))}\n </div>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{list}</I18nProvider>\n ) : (\n list\n );\n}\n","import { useId, useRef, useState } from 'react';\nimport {\n NumberField as AriaNumberField,\n Input,\n Label,\n Group,\n Button,\n Text,\n FieldError,\n} from 'react-aria-components/NumberField';\nimport { ButtonContext } from 'react-aria-components/Button';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nexport interface NumberFieldProps {\n label: string;\n value?: number | null;\n defaultValue?: number | null;\n /** Committed numeric value; empty or non-finite values become null. */\n onChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n}\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nexport function NumberField({\n label,\n value,\n defaultValue = null,\n onChange,\n min,\n max,\n step = 1,\n locale = 'id-ID',\n formatOptions,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n name,\n id,\n dir,\n incrementLabel,\n decrementLabel,\n}: NumberFieldProps) {\n const buttonId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const [local, setLocal] = useState(() => finite(defaultValue));\n const selected = finite(value === undefined ? local : value);\n function change(next: number) {\n if (isDisabled || isReadOnly) return;\n const number = finite(next);\n setLocal(number);\n onChange?.(number);\n }\n return (\n <I18nProvider locale={locale}>\n <AriaNumberField\n className=\"input number-field\"\n id={id}\n dir={dir}\n value={selected ?? Number.NaN}\n onChange={change}\n minValue={min}\n maxValue={max}\n step={step}\n formatOptions={formatOptions}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n isWheelDisabled\n >\n {({ state }) => {\n const empty = state.inputValue.trim() === '';\n // Reka starts empty stepping at min (or zero); use the public state API to match it.\n function startEmpty() {\n const start = Math.min(max ?? Infinity, Math.max(min ?? -Infinity, min ?? 0));\n state.setNumberValue(start);\n inputRef.current?.focus();\n }\n return (\n <>\n <Label className=\"label\">{label}</Label>\n <Group\n className=\"number-field__group\"\n onKeyDownCapture={(event) => {\n if (\n isDisabled ||\n isReadOnly ||\n !empty ||\n !['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown'].includes(event.key)\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n startEmpty();\n }}\n >\n <ButtonContext.Consumer>\n {(buttonContext) => (\n <ButtonContext.Provider value={empty ? null : buttonContext}>\n <Button\n slot={empty ? undefined : 'decrement'}\n onPress={empty ? startEmpty : undefined}\n isDisabled={empty ? isDisabled || isReadOnly : undefined}\n preventFocusOnPress\n className=\"number-field__step\"\n aria-label={decrementLabel ?? `Kurangi ${label}`}\n aria-labelledby={`${buttonId}-decrement`}\n excludeFromTabOrder\n >\n <span id={`${buttonId}-decrement`} hidden>\n {decrementLabel ?? `Kurangi ${label}`}\n </span>\n {'\\u2212'}\n </Button>\n <Input\n ref={inputRef}\n className=\"number-field__control\"\n required={isRequired}\n />\n <Button\n slot={empty ? undefined : 'increment'}\n onPress={empty ? startEmpty : undefined}\n isDisabled={empty ? isDisabled || isReadOnly : undefined}\n preventFocusOnPress\n className=\"number-field__step\"\n aria-label={incrementLabel ?? `Tambah ${label}`}\n aria-labelledby={`${buttonId}-increment`}\n excludeFromTabOrder\n >\n <span id={`${buttonId}-increment`} hidden>\n {incrementLabel ?? `Tambah ${label}`}\n </span>\n +\n </Button>\n </ButtonContext.Provider>\n )}\n </ButtonContext.Consumer>\n </Group>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={selected === null ? '' : String(selected)}\n disabled={isDisabled}\n />\n )}\n </>\n );\n }}\n </AriaNumberField>\n </I18nProvider>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n /** Custom leading header content; replaces title/description, preserving actions. */\n header?: ReactNode;\n /** Badge or supplementary controls next to the title, outside its heading. */\n titleExtras?: ReactNode;\n actions?: ReactNode;\n footer?: ReactNode;\n}\n\n/** A content container; place links and buttons inside rather than making it clickable. */\nexport function Card({\n title,\n description,\n headingLevel = 3,\n actions,\n header,\n titleExtras,\n footer,\n children,\n className,\n ...props\n}: CardProps) {\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n return (\n <div {...props} className={['card', className].filter(Boolean).join(' ')}>\n {(title || description || actions || header || titleExtras) && (\n <div className=\"card__header\">\n {(title || description || header || titleExtras) && (\n <div className=\"card__heading\">\n {header ?? (\n <>\n {titleExtras ? (\n <div className=\"card__title-row\">\n {title && <Heading className=\"card__title\">{title}</Heading>}\n {titleExtras}\n </div>\n ) : (\n title && <Heading className=\"card__title\">{title}</Heading>\n )}\n {description && <p className=\"card__description\">{description}</p>}\n </>\n )}\n </div>\n )}\n {actions && <div className=\"card__actions\">{actions}</div>}\n </div>\n )}\n <div className=\"card__content\">{children}</div>\n {footer && <div className=\"card__footer\">{footer}</div>}\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport type BadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: BadgeTone;\n}\n/** Static status text. Dynamic announcements belong in an application-owned live region. */\nexport function Badge({ tone = 'neutral', className, ...props }: BadgeProps) {\n return (\n <span {...props} className={['badge', className].filter(Boolean).join(' ')} data-tone={tone} />\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport interface SkeletonProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n 'children' | 'aria-hidden'\n> {\n shape?: 'rectangle' | 'circle';\n animated?: boolean;\n}\n/** Decorative placeholder. Set aria-busy and loading text on the surrounding content. */\nexport function Skeleton({\n shape = 'rectangle',\n animated = true,\n className,\n ...props\n}: SkeletonProps) {\n return (\n <span\n {...props}\n className={['skeleton', className].filter(Boolean).join(' ')}\n data-shape={shape}\n data-animated={animated ? 'true' : undefined}\n aria-hidden=\"true\"\n />\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport interface SeparatorProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children' | 'role' | 'aria-hidden' | 'aria-orientation'\n> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\nexport function Separator({\n orientation = 'horizontal',\n decorative = true,\n className,\n ...props\n}: SeparatorProps) {\n return (\n <div\n {...props}\n className={['separator', className].filter(Boolean).join(' ')}\n data-orientation={orientation}\n role={decorative ? 'presentation' : 'separator'}\n aria-hidden={decorative ? 'true' : undefined}\n aria-orientation={decorative ? undefined : orientation}\n />\n );\n}\n","// Framework-neutral DOM behavior. Keep in sync with packages/vue/src/tabs-indicator.ts.\nexport function mountTabsIndicator(container: HTMLElement): () => void {\n const list = container.querySelector<HTMLElement>('[role=\"tablist\"]');\n if (!list) return () => {};\n let frame = 0,\n disposed = false,\n previous: Element | null = null,\n armed = false;\n const prev = container.querySelector<HTMLButtonElement>('[data-tabs-scroll=\"prev\"]');\n const next = container.querySelector<HTMLButtonElement>('[data-tabs-scroll=\"next\"]');\n const vertical = () => list.getAttribute('aria-orientation') === 'vertical';\n const reduced = () => window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n function measure() {\n if (disposed) return;\n const selected = list!.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]');\n const rect = list!.getBoundingClientRect();\n if (selected && rect.width > 0 && rect.height > 0) {\n const tab = selected.getBoundingClientRect();\n const border = getComputedStyle(list!);\n list!.style.setProperty(\n '--tabs-indicator-x',\n `${tab.left - rect.left + list!.scrollLeft - (parseFloat(border.borderLeftWidth) || 0)}px`,\n );\n list!.style.setProperty(\n '--tabs-indicator-y',\n `${tab.top - rect.top + list!.scrollTop - (parseFloat(border.borderTopWidth) || 0)}px`,\n );\n list!.style.setProperty('--tabs-indicator-width', `${tab.width}px`);\n list!.style.setProperty('--tabs-indicator-height', `${tab.height}px`);\n list!.dataset.indicatorReady = 'true';\n if (!armed) {\n armed = true;\n requestAnimationFrame(() => {\n if (!disposed) list!.dataset.indicatorAnimated = 'true';\n });\n }\n if (selected !== previous && previous && typeof list!.scrollBy === 'function') {\n const delta = vertical()\n ? tab.top < rect.top\n ? tab.top - rect.top\n : tab.bottom > rect.bottom\n ? tab.bottom - rect.bottom\n : 0\n : tab.left < rect.left\n ? tab.left - rect.left\n : tab.right > rect.right\n ? tab.right - rect.right\n : 0;\n if (delta)\n list!.scrollBy({\n [vertical() ? 'top' : 'left']: delta,\n behavior: reduced() ? 'instant' : 'smooth',\n });\n }\n } else list!.dataset.indicatorReady = 'false';\n previous = selected;\n const max = vertical()\n ? list!.scrollHeight - list!.clientHeight\n : list!.scrollWidth - list!.clientWidth;\n const position = Math.abs(vertical() ? list!.scrollTop : list!.scrollLeft);\n list!.dataset.overflow = String(max > 1);\n if (prev) {\n prev.hidden = max <= 1;\n prev.disabled = position <= 1;\n }\n if (next) {\n next.hidden = max <= 1;\n next.disabled = position >= max - 1;\n }\n }\n function schedule() {\n if (disposed) return;\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(measure);\n }\n function scroll(direction: number) {\n if (typeof list!.scrollBy !== 'function') return;\n const rtl = !vertical() && getComputedStyle(list!).direction === 'rtl';\n const amount =\n (vertical() ? list!.clientHeight : list!.clientWidth) * 0.7 * direction * (rtl ? -1 : 1);\n list!.scrollBy({\n [vertical() ? 'top' : 'left']: amount,\n behavior: reduced() ? 'instant' : 'smooth',\n });\n }\n const backward = () => scroll(-1),\n forward = () => scroll(1);\n prev?.addEventListener('click', backward);\n next?.addEventListener('click', forward);\n list.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule);\n const observer = new MutationObserver(schedule);\n observer.observe(list, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['aria-selected', 'aria-orientation', 'aria-disabled', 'disabled'],\n });\n const resize = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(schedule);\n resize?.observe(list);\n for (const tab of list.querySelectorAll('[role=\"tab\"]')) resize?.observe(tab);\n void document.fonts?.ready.then(schedule);\n schedule();\n return () => {\n disposed = true;\n cancelAnimationFrame(frame);\n observer.disconnect();\n resize?.disconnect();\n prev?.removeEventListener('click', backward);\n next?.removeEventListener('click', forward);\n list.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n };\n}\n","import type { ButtonSize } from './Button.js';\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { Tabs as AriaTabs, TabList, Tab, TabPanel } from 'react-aria-components/Tabs';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { mountTabsIndicator } from './tabs-indicator.js';\nexport interface TabItem {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'pill';\nexport interface TabsProps {\n label: string;\n variant?: TabsVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n align?: 'start' | 'center' | 'end';\n fullWidth?: boolean;\n /** Remove track inset and gaps. Pill uses an outlined track in this mode. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n renderIcon?: (item: TabItem) => ReactNode;\n previousLabel?: string;\n nextLabel?: string;\n extras?: ReactNode;\n actions?: ReactNode;\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n renderPanel: (item: TabItem) => ReactNode;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Tabs({\n label,\n variant = 'primary',\n size = 'md',\n orientation = 'horizontal',\n align = 'center',\n fullWidth = false,\n inset = 'default',\n showSeparators = false,\n renderIcon,\n previousLabel = 'Tab sebelumnya / Previous tabs',\n nextLabel = 'Tab berikutnya / Next tabs',\n extras,\n actions,\n items,\n value,\n defaultValue,\n onChange,\n renderPanel,\n activationMode = 'manual',\n dir,\n id,\n}: TabsProps) {\n const container = useRef<HTMLDivElement>(null);\n const hasToolbar = !!(extras || actions);\n useEffect(\n () => (container.current ? mountTabsIndicator(container.current) : undefined),\n [items.length, hasToolbar],\n );\n const [local, setLocal] = useState(defaultValue);\n const selected =\n items.find((item) => item.id === (value ?? local) && !item.isDisabled)?.id ??\n items.find((item) => !item.isDisabled)?.id;\n const list =\n items.length > 0 ? (\n <div className=\"tabs__list-container\" ref={container}>\n <button\n type=\"button\"\n className=\"tabs__scroll-button tabs__scroll-button--prev\"\n data-tabs-scroll=\"prev\"\n hidden\n aria-label={previousLabel}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m14 6-6 6 6 6\" />\n </svg>\n </button>\n <TabList className=\"tabs__list\" aria-label={label}>\n {items.map((item, index) => (\n <Tab className=\"tabs__trigger\" key={item.id} id={item.id} isDisabled={item.isDisabled}>\n {showSeparators && index > 0 && (\n <span className=\"tabs__separator\" aria-hidden=\"true\" />\n )}\n {renderIcon && (\n <span className=\"tabs__icon\" aria-hidden=\"true\">\n {renderIcon(item)}\n </span>\n )}\n <span className=\"tabs__label\">{item.label}</span>\n </Tab>\n ))}\n </TabList>\n <button\n type=\"button\"\n className=\"tabs__scroll-button tabs__scroll-button--next\"\n data-tabs-scroll=\"next\"\n hidden\n aria-label={nextLabel}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m10 6 6 6-6 6\" />\n </svg>\n </button>\n </div>\n ) : null;\n const content = (\n <AriaTabs\n className={[\n 'tabs',\n `tabs--${variant === 'default' ? 'primary' : variant}`,\n `tabs--align-${align}`,\n fullWidth && 'tabs--full-width',\n inset === 'none' && 'tabs--flush',\n size !== 'md' && `tabs--${size}`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={id}\n orientation={orientation}\n dir={dir}\n selectedKey={selected ?? ''}\n keyboardActivation={activationMode}\n disabledKeys={items.filter((item) => item.isDisabled).map((item) => item.id)}\n onSelectionChange={(key) => {\n const next = String(key);\n if (next !== selected && items.some((item) => item.id === next && !item.isDisabled)) {\n setLocal(next);\n onChange?.(next);\n }\n }}\n >\n {extras || actions ? (\n <div className=\"tabs__toolbar\">\n <div className=\"tabs__navigation\">\n {list}\n {extras && <div className=\"tabs__extras\">{extras}</div>}\n </div>\n {actions && <div className=\"tabs__actions\">{actions}</div>}\n </div>\n ) : (\n list\n )}\n {items.map((item) => (\n <TabPanel key={item.id} id={item.id} className=\"tabs__panel\">\n {renderPanel(item)}\n </TabPanel>\n ))}\n </AriaTabs>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{content}</I18nProvider>\n ) : (\n content\n );\n}\n","export function paginationModel(\n totalItems: number,\n pageSize: number,\n value: number,\n siblingCount = 1,\n) {\n const total = Number.isFinite(totalItems)\n ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(totalItems)))\n : 0;\n const size = Number.isFinite(pageSize) ? Math.max(1, Math.floor(pageSize)) : 10;\n const count = Math.max(1, Math.ceil(total / size));\n const current = Math.min(count, Math.max(1, Number.isFinite(value) ? Math.floor(value) : 1));\n const siblings = Number.isFinite(siblingCount)\n ? Math.min(2, Math.max(0, Math.floor(siblingCount)))\n : 1;\n const pages = new Set([1, count, current]);\n for (let offset = 1; offset <= siblings; offset++) {\n if (current - offset > 1) pages.add(current - offset);\n if (current + offset < count) pages.add(current + offset);\n }\n const ordered = [...pages].sort((a, b) => a - b);\n const entries: (number | string)[] = [];\n ordered.forEach((page, index) => {\n if (index && page - ordered[index - 1] > 1) entries.push(`gap-${page}`);\n entries.push(page);\n });\n return { current, count, entries };\n}\n","import { useState } from 'react';\nimport { paginationModel } from './pagination-model.js';\nexport interface PaginationProps {\n totalItems: number;\n pageSize?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (page: number) => void;\n isDisabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Pagination({\n totalItems,\n pageSize = 10,\n value,\n defaultValue = 1,\n onChange,\n isDisabled = false,\n siblingCount = 1,\n label = 'Navigasi halaman',\n previousLabel = 'Sebelumnya',\n nextLabel = 'Berikutnya',\n pageLabel = 'Halaman',\n dir,\n id,\n}: PaginationProps) {\n const [local, setLocal] = useState(defaultValue);\n const { current, count, entries } = paginationModel(\n totalItems,\n pageSize,\n value ?? local,\n siblingCount,\n );\n function change(next: number) {\n if (isDisabled || next === current || next < 1 || next > count) return;\n setLocal(next);\n onChange?.(next);\n }\n return (\n <nav className=\"pagination\" aria-label={label} dir={dir} id={id}>\n <button\n type=\"button\"\n className=\"pagination__button\"\n disabled={isDisabled || current === 1}\n onClick={() => change(current - 1)}\n >\n {previousLabel}\n </button>\n {entries.map((entry) =>\n typeof entry === 'string' ? (\n <span className=\"pagination__gap\" aria-hidden=\"true\" key={entry}>\n ...\n </span>\n ) : (\n <button\n type=\"button\"\n key={entry}\n className=\"pagination__button\"\n aria-label={`${pageLabel} ${entry}`}\n aria-current={entry === current ? 'page' : undefined}\n disabled={isDisabled}\n onClick={() => change(entry)}\n >\n {entry}\n </button>\n ),\n )}\n <button\n type=\"button\"\n className=\"pagination__button\"\n disabled={isDisabled || current === count}\n onClick={() => change(current + 1)}\n >\n {nextLabel}\n </button>\n <span className=\"pagination__summary\" aria-live=\"polite\">\n {current} / {count}\n </span>\n </nav>\n );\n}\n","import type { TableHTMLAttributes } from 'react';\nexport interface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n caption: string;\n}\nexport function Table({ caption, children, className, ...props }: TableProps) {\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- The named overflow region must be keyboard-scrollable.\n <div className=\"table__scroll\" role=\"region\" aria-label={caption} tabIndex={0}>\n <table {...props} className={['table', className].filter(Boolean).join(' ')}>\n <caption className=\"table__caption\">{caption}</caption>\n {children}\n </table>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Table } from './Table.js';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\nexport interface DataTableProps {\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n onSortChange?: (sort: TableSort) => void;\n isLoading?: boolean;\n isDisabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n renderCell?: (row: DataTableRow, column: DataTableColumn) => ReactNode;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function DataTable({\n caption,\n columns,\n rows,\n sort = null,\n onSortChange,\n isLoading = false,\n isDisabled = false,\n emptyMessage = 'Tidak ada data.',\n loadingMessage = 'Memuat data...',\n errorMessage,\n renderCell,\n dir,\n id,\n}: DataTableProps) {\n function requestSort(column: DataTableColumn) {\n if (isLoading || isDisabled || !column.sortable) return;\n onSortChange?.({\n columnId: column.id,\n direction:\n sort?.columnId === column.id && sort.direction === 'ascending' ? 'descending' : 'ascending',\n });\n }\n return (\n <div className=\"data-table\" dir={dir} id={id}>\n <Table caption={caption} aria-busy={isLoading || undefined}>\n <thead>\n <tr>\n {columns.map((column) => (\n <th\n key={column.id}\n scope=\"col\"\n aria-sort={\n column.sortable\n ? sort?.columnId === column.id\n ? sort.direction\n : 'none'\n : undefined\n }\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className=\"table__sort\"\n disabled={isLoading || isDisabled}\n onClick={() => requestSort(column)}\n >\n {column.label}\n <span aria-hidden=\"true\">\n {sort?.columnId === column.id\n ? sort.direction === 'ascending'\n ? '\\u2191'\n : '\\u2193'\n : '\\u2195'}\n </span>\n </button>\n ) : (\n column.label\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.length ? (\n rows.map((row) => (\n <tr key={row.id}>\n {columns.map((column) => (\n <td key={column.id}>\n {renderCell ? renderCell(row, column) : (row.cells[column.id] ?? '')}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={Math.max(1, columns.length)} className=\"table__empty\">\n {isLoading ? loadingMessage : errorMessage || emptyMessage}\n </td>\n </tr>\n )}\n </tbody>\n </Table>\n {isLoading && (\n <p className=\"data-table__status\" role=\"status\">\n {loadingMessage}\n </p>\n )}\n {errorMessage && !isLoading && (\n <p className=\"input__error\" role=\"alert\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { BadgeTone } from './Badge.js';\nexport interface AlertProps {\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n children?: ReactNode;\n actions?: ReactNode;\n id?: string;\n}\nexport function Alert({\n title,\n description,\n tone = 'info',\n announcement = 'off',\n children,\n actions,\n id,\n}: AlertProps) {\n return (\n <div\n id={id}\n className=\"alert\"\n data-tone={tone}\n role={\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n }\n >\n <p className=\"alert__title\">{title}</p>\n {description && <p className=\"alert__description\">{description}</p>}\n {children}\n {actions && <div className=\"alert__actions\">{actions}</div>}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nexport interface EmptyProps {\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n actions?: ReactNode;\n children?: ReactNode;\n id?: string;\n}\nexport function Empty({ title, description, headingLevel = 3, actions, children, id }: EmptyProps) {\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n return (\n <div id={id} className=\"empty\">\n <Heading className=\"empty__title\">{title}</Heading>\n {description && <p className=\"empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"empty__actions\">{actions}</div>}\n </div>\n );\n}\n","import type { BreadcrumbItem } from './dashboard-types.js';\nexport interface BreadcrumbProps {\n items: BreadcrumbItem[];\n label?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Breadcrumb({ items, label = 'Jejak halaman', dir, id }: BreadcrumbProps) {\n return (\n <nav id={id} className=\"breadcrumb\" aria-label={label} dir={dir}>\n <ol>\n {items.map((item, index) => (\n <li key={index}>\n {index > 0 && (\n <span className=\"breadcrumb__separator\" aria-hidden=\"true\">\n /\n </span>\n )}\n {index === items.length - 1 ? (\n <span aria-current=\"page\">{item.label}</span>\n ) : item.href ? (\n <a href={item.href}>{item.label}</a>\n ) : (\n <span>{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n );\n}\n","import { useState } from 'react';\nexport function useDisclosure(\n open?: boolean,\n defaultOpen = false,\n onOpenChange?: (open: boolean) => void,\n) {\n const [local, setLocal] = useState(defaultOpen);\n const visible = open ?? local;\n function change(next: boolean) {\n if (next === visible) return;\n setLocal(next);\n onOpenChange?.(next);\n }\n return { visible, change };\n}\n","import { useId } from 'react';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\nexport interface SidebarProps {\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Sidebar({\n label,\n items,\n currentId,\n open,\n defaultOpen = true,\n onOpenChange,\n toggleLabel = 'Menu navigasi',\n dir,\n id,\n}: SidebarProps) {\n const generated = useId(),\n navId = `${id ?? generated}-nav`;\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange);\n return (\n <aside id={id} className=\"sidebar\" dir={dir}>\n <div className=\"sidebar__header\">\n <span className=\"sidebar__title\">{label}</span>\n <button\n type=\"button\"\n className=\"sidebar__toggle\"\n aria-label={toggleLabel}\n aria-expanded={visible}\n aria-controls={navId}\n onClick={() => change(!visible)}\n >\n <span aria-hidden=\"true\">{visible ? '\\u2212' : '+'}</span>\n </button>\n </div>\n <nav id={navId} aria-label={label} hidden={!visible}>\n <ul>\n {items.map((item) => (\n <li key={item.id}>\n {item.isDisabled ? (\n <span className=\"sidebar__link\" aria-disabled=\"true\">\n {item.label}\n </span>\n ) : (\n <a\n className=\"sidebar__link\"\n href={item.href}\n aria-current={item.id === currentId ? 'page' : undefined}\n >\n {item.label}\n </a>\n )}\n </li>\n ))}\n </ul>\n </nav>\n </aside>\n );\n}\n","import type { ChartDatum } from './dashboard-types.js';\nexport function chartModel(data: ChartDatum[]) {\n const valid = data.filter((item) => Number.isFinite(item.value));\n const scale = valid.reduce((max, item) => Math.max(max, Math.abs(item.value)), 1);\n const min = valid.reduce((min, item) => Math.min(min, item.value / scale), 0),\n max = valid.reduce((max, item) => Math.max(max, item.value / scale), 0);\n const span = max - min || 1,\n step = 560 / Math.max(1, valid.length);\n const y = (value: number) => 180 - ((value / scale - min) / span) * 160;\n return {\n items: valid.map((item, index) => ({\n ...item,\n x: 20 + step * (index + 0.5),\n y: y(item.value),\n })),\n baseline: y(0),\n barWidth: Math.min(40, step * 0.7),\n };\n}\n","import { useId } from 'react';\nimport { chartModel } from './chart-model.js';\nimport { Table } from './Table.js';\nimport { Empty } from './Empty.js';\nimport type { ChartDatum } from './dashboard-types.js';\nexport interface ChartProps {\n label: string;\n data: ChartDatum[];\n type?: 'bar' | 'line';\n description?: string;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n categoryLabel?: string;\n valueLabel?: string;\n emptyMessage?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\nexport function Chart({\n label,\n data,\n type = 'bar',\n description,\n locale = 'id-ID',\n formatOptions,\n categoryLabel = 'Kategori',\n valueLabel = 'Nilai',\n emptyMessage = 'Belum ada data grafik.',\n id,\n dir,\n}: ChartProps) {\n const generated = useId(),\n labelId = `${id ?? generated}-label`,\n model = chartModel(data),\n format = new Intl.NumberFormat(locale, formatOptions);\n return (\n <figure id={id} className=\"chart\" dir={dir} aria-labelledby={labelId}>\n <figcaption id={labelId} className=\"chart__title\">\n {label}\n </figcaption>\n {description && <p className=\"chart__description\">{description}</p>}\n {model.items.length ? (\n <>\n <svg className=\"chart__plot\" viewBox=\"0 0 600 210\" aria-hidden=\"true\" focusable=\"false\">\n <line\n className=\"chart__axis\"\n x1=\"20\"\n x2=\"580\"\n y1={model.baseline}\n y2={model.baseline}\n />\n {type === 'line' ? (\n <polyline\n className=\"chart__line\"\n points={model.items.map((item) => `${item.x},${item.y}`).join(' ')}\n />\n ) : null}\n {model.items.map((item) => (\n <g key={item.id}>\n {type === 'bar' ? (\n <rect\n className=\"chart__bar\"\n x={item.x - model.barWidth / 2}\n y={Math.min(item.y, model.baseline)}\n width={model.barWidth}\n height={Math.abs(item.y - model.baseline)}\n />\n ) : (\n <circle className=\"chart__bar\" cx={item.x} cy={item.y} r=\"4\" />\n )}\n {model.items.length <= 12 && (\n <text className=\"chart__label\" x={item.x} y=\"202\" textAnchor=\"middle\">\n {item.label.slice(0, 12)}\n </text>\n )}\n </g>\n ))}\n </svg>\n <Table caption={label}>\n <thead>\n <tr>\n <th scope=\"col\">{categoryLabel}</th>\n <th scope=\"col\">{valueLabel}</th>\n </tr>\n </thead>\n <tbody>\n {model.items.map((item) => (\n <tr key={item.id}>\n <th scope=\"row\">{item.label}</th>\n <td>{format.format(item.value)}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n </>\n ) : (\n <Empty title={emptyMessage} />\n )}\n </figure>\n );\n}\n","import { OverlayDirection } from './OverlayDirection.js';\nimport { useId, type ReactNode } from 'react';\nimport { DialogTrigger, Dialog as AriaDialog, Heading } from 'react-aria-components/Dialog';\nimport { ModalOverlay, Modal } from 'react-aria-components/Modal';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nimport { CloseIcon } from './icons.js';\nimport type { ButtonVariant } from './Button.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\nexport interface DialogProps {\n triggerLabel: string;\n title: string;\n description?: string;\n children?: ReactNode;\n footer?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n}\nexport function Dialog(props: DialogProps) {\n const {\n triggerLabel,\n title,\n description,\n children,\n footer,\n isDisabled = false,\n closeLabel = 'Tutup',\n dir,\n size = 'md',\n placement = 'center',\n scroll = 'outside',\n backdrop = 'opaque',\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n showCloseButton = true,\n showFooterClose = true,\n } = props;\n const { visible, change } = useDisclosure(\n props.open,\n props.defaultOpen ?? false,\n props.onOpenChange,\n );\n const descriptionId = useId();\n return (\n <OverlayDirection dir={dir}>\n <DialogTrigger isOpen={visible} onOpenChange={change}>\n <Button\n className={`button button--${props.triggerVariant ?? 'secondary'}${props.triggerIconOnly ? ' button--icon-only' : ''}`}\n aria-label={triggerLabel}\n isDisabled={isDisabled}\n >\n {props.triggerContent ?? triggerLabel}\n </Button>\n <ModalOverlay\n className=\"dialog__backdrop dialog__viewport\"\n data-size={size}\n data-placement={placement}\n data-scroll={scroll}\n data-backdrop={backdrop}\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n >\n <Modal className=\"dialog__panel\" dir={dir}>\n <AriaDialog\n className=\"dialog__content\"\n aria-describedby={description ? descriptionId : undefined}\n >\n <div className=\"overlay__header\" data-close-button={showCloseButton || undefined}>\n <Heading level={2} slot=\"title\" className=\"overlay__title\">\n {title}\n </Heading>\n {description && (\n <p id={descriptionId} className=\"overlay__description\">\n {description}\n </p>\n )}\n {showCloseButton && (\n <Button\n className=\"dialog__close\"\n aria-label={props.closeIconLabel ?? `${closeLabel} dialog`}\n onPress={() => change(false)}\n >\n <CloseIcon />\n </Button>\n )}\n </div>\n <div className=\"overlay__body\">{children}</div>\n {(footer || showFooterClose) && (\n <div className=\"overlay__footer\">\n {footer}\n {showFooterClose && (\n <Button className=\"button button--secondary\" onPress={() => change(false)}>\n {closeLabel}\n </Button>\n )}\n </div>\n )}\n </AriaDialog>\n </Modal>\n </ModalOverlay>\n </DialogTrigger>\n </OverlayDirection>\n );\n}\n","import type { DropdownMenuItem } from './dashboard-types.js';\nexport type MenuSelectionMode = 'none' | 'single' | 'multiple';\nexport type MenuPlacement =\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end';\nexport function menuGroups(items: DropdownMenuItem[]) {\n const groups: { key: string; label?: string; items: DropdownMenuItem[] }[] = [];\n for (const item of items) {\n const previous = groups.at(-1);\n if (!previous || previous.label !== item.section || item.separatorBefore)\n groups.push({ key: item.id, label: item.section, items: [item] });\n else previous.items.push(item);\n }\n return groups;\n}\nexport function menuLeaves(items: DropdownMenuItem[], disabled = false): DropdownMenuItem[] {\n return items.flatMap((item) =>\n item.children?.length\n ? menuLeaves(item.children, disabled || !!item.isDisabled)\n : [{ ...item, isDisabled: disabled || item.isDisabled }],\n );\n}\nexport function menuSelection(keys: string[], items: DropdownMenuItem[], mode: MenuSelectionMode) {\n const wanted = new Set(keys);\n const result = menuLeaves(items)\n .filter((item) => wanted.has(item.id))\n .map((item) => item.id);\n return mode === 'none' ? [] : mode === 'single' ? result.slice(0, 1) : result;\n}\nexport type DialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'cover' | 'full';\nexport type DialogPlacement = 'auto' | 'top' | 'center' | 'bottom';\nexport type DialogScroll = 'inside' | 'outside';\nexport type DialogBackdrop = 'opaque' | 'blur' | 'transparent';\n","import { useState, type ReactNode } from 'react';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport {\n MenuTrigger,\n Menu,\n MenuItem,\n MenuSection,\n SubmenuTrigger,\n} from 'react-aria-components/Menu';\nimport { Header } from 'react-aria-components/Header';\nimport { Separator } from 'react-aria-components/Separator';\nimport { Popover, type PopoverProps } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nimport { CheckIcon, ChevronIcon } from './icons.js';\nimport {\n menuGroups,\n menuLeaves,\n menuSelection,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './Button.js';\nexport interface DropdownMenuProps {\n triggerLabel: string;\n items: DropdownMenuItem[];\n onAction?: (id: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n renderIcon?: (item: DropdownMenuItem) => ReactNode;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n onSelectionChange?: (keys: string[]) => void;\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n}\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n triggerLabel,\n items,\n isDisabled = false,\n dir,\n selectionMode = 'none',\n placement = 'bottom-start',\n } = props;\n const { visible, change } = useDisclosure(\n props.open,\n props.defaultOpen ?? false,\n props.onOpenChange,\n );\n const [local, setLocal] = useState(props.defaultSelectedKeys ?? []);\n const selected = menuSelection(props.selectedKeys ?? local, items, selectionMode);\n const [side, align] = placement.split('-');\n const popoverPlacement =\n `${side} ${side === 'left' || side === 'right' ? (align === 'start' ? 'top' : 'bottom') : align}` as PopoverProps['placement'];\n const closeOnSelect = props.closeOnSelect ?? selectionMode !== 'multiple';\n const leaves = menuLeaves(items, isDisabled);\n function action(id: string) {\n const item = leaves.find((item) => item.id === id);\n if (item && !item.isDisabled) props.onAction?.(id);\n }\n function select(keys: string[], level: DropdownMenuItem[]) {\n if (isDisabled || selectionMode === 'none') return;\n const levelIds = new Set(level.filter((item) => !item.children?.length).map((item) => item.id));\n const next = menuSelection(\n selectionMode === 'multiple'\n ? [...selected.filter((id) => !levelIds.has(id)), ...keys]\n : keys,\n items,\n selectionMode,\n );\n setLocal(next);\n props.onSelectionChange?.(next);\n }\n function content(item: DropdownMenuItem) {\n const icon = props.renderIcon?.(item);\n return (\n <>\n {selectionMode !== 'none' && !item.children?.length && (\n <CheckIcon className=\"menu__check\" />\n )}\n {icon && (\n <span className=\"menu__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"menu__text\">\n <span>{item.label}</span>\n {item.description && <span className=\"menu__description\">{item.description}</span>}\n </span>\n {item.shortcut && (\n <kbd className=\"menu__shortcut\" aria-hidden=\"true\">\n {item.shortcut}\n </kbd>\n )}\n {!!item.children?.length && <ChevronIcon className=\"menu__arrow\" />}\n </>\n );\n }\n function renderMenu(level: DropdownMenuItem[], label: string, blocked = false): ReactNode {\n return (\n <Menu\n className=\"menu__list\"\n aria-label={label}\n selectionMode={selectionMode}\n selectedKeys={selected}\n onSelectionChange={(keys) =>\n select(\n keys === 'all'\n ? level.filter((i) => !i.isDisabled && !i.children?.length).map((i) => i.id)\n : Array.from(keys, String),\n level,\n )\n }\n disallowEmptySelection={selectionMode === 'single'}\n shouldCloseOnSelect={closeOnSelect}\n onAction={(key) => action(String(key))}\n >\n {menuGroups(level).flatMap((group, index) => {\n const rows = group.items.map((item) => {\n const disabled = isDisabled || blocked || !!item.isDisabled;\n const row = (\n <MenuItem\n key={item.id}\n id={item.id}\n textValue={item.label}\n className=\"menu__item\"\n isDisabled={disabled}\n data-tone={item.tone ?? 'default'}\n shouldCloseOnSelect={closeOnSelect}\n >\n {content(item)}\n </MenuItem>\n );\n return item.children?.length ? (\n <SubmenuTrigger key={item.id}>\n {row}\n <Popover className=\"menu__panel\" offset={4} containerPadding={16} dir={dir}>\n {renderMenu(item.children, item.label, disabled)}\n </Popover>\n </SubmenuTrigger>\n ) : (\n row\n );\n });\n return [\n index > 0 ? (\n <Separator key={`${group.key}-separator`} className=\"menu__separator\" />\n ) : null,\n <MenuSection key={group.key} aria-label={group.label}>\n {group.label && <Header className=\"menu__heading\">{group.label}</Header>}\n {rows}\n </MenuSection>,\n ];\n })}\n </Menu>\n );\n }\n return (\n <OverlayDirection dir={dir}>\n <MenuTrigger isOpen={visible} onOpenChange={change}>\n <Button\n className={`button button--${props.triggerVariant ?? 'secondary'}${props.triggerIconOnly ? ' button--icon-only' : ''}`}\n aria-label={triggerLabel}\n isDisabled={isDisabled || !items.length}\n >\n {props.triggerContent ?? triggerLabel}\n </Button>\n <Popover\n className=\"menu__panel\"\n placement={popoverPlacement}\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n {renderMenu(items, triggerLabel)}\n </Popover>\n </MenuTrigger>\n </OverlayDirection>\n );\n}\n","import { OverlayDirection } from './OverlayDirection.js';\nimport { useId, type ReactNode } from 'react';\nimport { DialogTrigger, Dialog, Heading } from 'react-aria-components/Dialog';\nimport { Popover as AriaPopover } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nexport interface PopoverProps {\n triggerLabel: string;\n title: string;\n description?: string;\n children?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n}\nexport function Popover({\n triggerLabel,\n title,\n description,\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n closeLabel = 'Tutup',\n dir,\n}: PopoverProps) {\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange),\n descriptionId = useId();\n return (\n <OverlayDirection dir={dir}>\n <DialogTrigger isOpen={visible} onOpenChange={change}>\n <Button className=\"button button--secondary\" isDisabled={isDisabled}>\n {triggerLabel}\n </Button>\n <AriaPopover\n className=\"popover__panel\"\n isNonModal\n placement=\"bottom start\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n <Dialog\n className=\"popover__content\"\n aria-describedby={description ? descriptionId : undefined}\n >\n <Heading level={2} slot=\"title\" className=\"overlay__title\">\n {title}\n </Heading>\n {description && (\n <p id={descriptionId} className=\"overlay__description\">\n {description}\n </p>\n )}\n <div className=\"overlay__body\">{children}</div>\n <div className=\"overlay__footer\">\n <Button className=\"button button--secondary\" onPress={() => change(false)}>\n {closeLabel}\n </Button>\n </div>\n </Dialog>\n </AriaPopover>\n </DialogTrigger>\n </OverlayDirection>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { ButtonVariant, ButtonSize } from './Button.js';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport { TooltipTrigger, Tooltip as AriaTooltip } from 'react-aria-components/Tooltip';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nexport interface TooltipProps {\n triggerLabel: string;\n text: string;\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\nexport function Tooltip({\n triggerLabel,\n text,\n triggerContent,\n triggerIconOnly = false,\n triggerVariant = 'secondary',\n triggerSize = 'md',\n open,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n dir,\n}: TooltipProps) {\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange);\n return (\n <OverlayDirection dir={dir}>\n <TooltipTrigger\n isOpen={visible}\n onOpenChange={change}\n delay={300}\n closeDelay={0}\n isDisabled={isDisabled}\n >\n <Button\n className={[\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ]\n .filter(Boolean)\n .join(' ')}\n aria-label={triggerLabel}\n isDisabled={isDisabled}\n >\n {triggerContent ?? triggerLabel}\n </Button>\n <AriaTooltip\n className=\"tooltip__panel\"\n placement=\"top\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n {text}\n </AriaTooltip>\n </TooltipTrigger>\n </OverlayDirection>\n );\n}\n","export type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerColor = 'current' | 'primary';\nexport interface SpinnerProps {\n size?: SpinnerSize;\n color?: SpinnerColor;\n label?: string;\n id?: string;\n}\n/** Decorative by default. Use label for a standalone loading status; omit it inside a labeled Button. */\nexport function Spinner({ size = 'md', color = 'current', label, id }: SpinnerProps) {\n return (\n <span\n id={id}\n className={`spinner spinner--${size}`}\n data-color={color}\n role={label ? 'status' : undefined}\n aria-label={label || undefined}\n aria-hidden={!label || undefined}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle className=\"spinner__track\" cx=\"10\" cy=\"10\" r=\"8\" />\n <circle\n className=\"spinner__arc\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n strokeDasharray=\"36 64\"\n />\n </svg>\n {label && <span className=\"spinner__label\">{label}</span>}\n </span>\n );\n}\n","import { useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport {\n ComboBox as AriaComboBox,\n Input,\n Button,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n} from 'react-aria-components/ComboBox';\nimport { CloseIcon, ChevronIcon, CheckIcon } from './icons.js';\nimport { useFeedback } from './field.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { filterOptions, selectionIds, type SelectOption } from './selection-options.js';\nexport interface ComboboxProps {\n label: string;\n options: SelectOption[];\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n /** Decorative noninteractive icon before the value/input. */\n startContent?: ReactNode;\n placeholder?: string;\n name?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n isClearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n renderOption?: (option: SelectOption) => ReactNode;\n}\n/** Searchable single selection. Draft text is never submitted as a value. */\nexport function Combobox(props: ComboboxProps) {\n const [local, setLocal] = useState(props.defaultValue ?? null);\n const [draft, setDraft] = useState<string | null>(null);\n const [tried, setTried] = useState(false);\n const resetting = useRef(false);\n const input = useRef<HTMLInputElement>(null);\n const id =\n selectionIds(props.value !== undefined ? props.value : local, props.options, false)[0] ?? null;\n const selected = props.options.find((o) => o.id === id);\n const [previous, setPrevious] = useState(selected);\n if (previous !== selected) {\n setPrevious(selected);\n setDraft(null);\n }\n const text = draft ?? selected?.label ?? '';\n const invalid = props.isInvalid || (tried && props.isRequired && !id);\n const { describedBy, feedback } = useFeedback({\n description: props.description,\n isInvalid: invalid,\n errorMessage:\n props.errorMessage ??\n (props.isRequired && !id ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n });\n function change(value: unknown) {\n if (props.isDisabled || resetting.current) return;\n const next = selectionIds(value, props.options, false)[0] ?? null;\n setLocal(next);\n props.onChange?.(next);\n setDraft(null);\n }\n const content = (\n <AriaComboBox<SelectOption>\n className=\"select combobox\"\n value={id}\n onChange={change}\n inputValue={text}\n onInputChange={(text) => {\n if (resetting.current) return;\n setDraft(text);\n if (text === '' && id) {\n setLocal(null);\n props.onChange?.(null);\n }\n }}\n defaultItems={props.options}\n defaultFilter={(label, query) =>\n filterOptions(props.options, query).some((option) => option.label === label)\n }\n allowsEmptyCollection\n allowsCustomValue={false}\n isDisabled={props.isDisabled}\n isRequired={props.isRequired}\n isInvalid={!!invalid}\n validationBehavior=\"aria\"\n >\n <Label className=\"select__label\">\n {props.label}\n {props.isRequired && (\n <span className=\"selection__required\" aria-hidden=\"true\">\n {' '}\n *\n </span>\n )}\n </Label>\n <div\n className=\"combobox__control\"\n data-invalid={invalid || undefined}\n data-disabled={props.isDisabled || undefined}\n >\n {props.startContent && (\n <span className=\"selection__leading\" aria-hidden=\"true\">\n {props.startContent}\n </span>\n )}\n <Input\n ref={input}\n className=\"combobox__input\"\n placeholder={props.placeholder}\n aria-describedby={describedBy}\n />\n {props.isClearable && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n data-empty={(!id && !text) || undefined}\n aria-hidden={(!id && !text) || undefined}\n tabIndex={!id && !text ? -1 : undefined}\n disabled={props.isDisabled || (!id && !text)}\n aria-label={props.clearLabel ?? 'Hapus pilihan'}\n onClick={() => {\n change(null);\n input.current?.focus();\n }}\n >\n <CloseIcon className=\"selection__close-icon\" />\n </button>\n )}\n <Button className=\"combobox__toggle\" aria-label={props.toggleLabel ?? 'Buka pilihan'}>\n <ChevronIcon className=\"select__icon\" />\n </Button>\n </div>\n <Popover className=\"select__popover combobox__popover\">\n <ListBox<SelectOption>\n className=\"select__list\"\n renderEmptyState={() => (\n <span className=\"selection__empty\">{props.emptyMessage ?? 'Tidak ada pilihan.'}</span>\n )}\n >\n {(option) => (\n <ListBoxItem\n id={option.id}\n textValue={option.label}\n isDisabled={option.isDisabled}\n className=\"select__item\"\n >\n <span className=\"select__item-label\">\n {props.renderOption?.(option) ?? (\n <>\n {option.label}\n {option.description && (\n <span className=\"selection__description\">{option.description}</span>\n )}\n </>\n )}\n </span>\n <CheckIcon className=\"select__check\" />\n </ListBoxItem>\n )}\n </ListBox>\n </Popover>\n {feedback}\n {props.name && (\n <input type=\"hidden\" name={props.name} value={id ?? ''} disabled={props.isDisabled} />\n )}\n <SelectionValidation\n hasValue={!!id}\n required={props.isRequired}\n disabled={props.isDisabled}\n onInvalid={() => {\n setTried(true);\n input.current?.focus();\n }}\n onResetStart={() => {\n resetting.current = true;\n }}\n onReset={(cancelled) => {\n resetting.current = false;\n if (!cancelled) {\n setTried(false);\n setDraft(null);\n if (props.value === undefined) setLocal(props.defaultValue ?? null);\n }\n }}\n />\n </AriaComboBox>\n );\n return props.dir ? (\n <I18nProvider locale={props.dir === 'rtl' ? 'ar-EG' : 'en-US'}>{content}</I18nProvider>\n ) : (\n content\n );\n}\n","export interface ToggleGroupItem {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type ToggleGroupMode = 'single' | 'multiple';\nexport type ToggleGroupVariant = 'outline' | 'ghost';\n/** Normalize IDs without discarding existing disabled selections. */\nexport function toggleIds(value: unknown, items: ToggleGroupItem[], multiple: boolean): string[] {\n const wanted = new Set(Array.isArray(value) ? value : typeof value === 'string' ? [value] : []);\n const result = [\n ...new Set(\n items.filter((item) => item.id !== '' && wanted.has(item.id)).map((item) => item.id),\n ),\n ];\n return multiple ? result : result.slice(0, 1);\n}\n","import { useState, type ReactNode } from 'react';\nimport { ToggleButtonGroup } from 'react-aria-components/ToggleButtonGroup';\nimport { ToggleButton } from 'react-aria-components/ToggleButton';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './Button.js';\nexport type { ToggleGroupItem, ToggleGroupMode, ToggleGroupVariant } from './toggle-group-model.js';\ninterface ToggleGroupCommonProps {\n label: string;\n items: ToggleGroupItem[];\n isDisabled?: boolean;\n isIconOnly?: boolean;\n renderIcon?: (item: ToggleGroupItem) => ReactNode;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}\nexport type ToggleGroupProps = ToggleGroupCommonProps &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nexport function ToggleGroup(\n props: Extract<ToggleGroupProps, { selectionMode: 'multiple' }>,\n): ReactNode;\nexport function ToggleGroup(\n props: Exclude<ToggleGroupProps, { selectionMode: 'multiple' }>,\n): ReactNode;\nexport function ToggleGroup(props: ToggleGroupProps) {\n const multiple = props.selectionMode === 'multiple';\n const [local, setLocal] = useState<unknown>(props.defaultValue);\n const ids = toggleIds(props.value !== undefined ? props.value : local, props.items, multiple);\n function update(keys: Set<string | number>) {\n if (props.isDisabled) return;\n const requested = new Set(Array.from(keys, String));\n // Keep disabled values parent-owned; user interaction cannot toggle them.\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple && ids.includes(item.id)) requested.add(item.id);\n else if (!ids.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple);\n if (next.length === ids.length && next.every((id, index) => id === ids[index])) return;\n if (props.disallowEmptySelection && ids.length && !next.length) return;\n const value = multiple ? next : (next[0] ?? null);\n setLocal(value);\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else props.onChange?.(next[0] ?? null);\n }\n return (\n <OverlayDirection dir={props.dir}>\n <ToggleButtonGroup\n className=\"toggle-group\"\n aria-label={props.label}\n dir={props.dir}\n selectionMode={multiple ? 'multiple' : 'single'}\n selectedKeys={ids}\n onSelectionChange={update}\n disallowEmptySelection={props.disallowEmptySelection}\n isDisabled={props.isDisabled}\n orientation={props.orientation ?? 'horizontal'}\n data-variant={props.variant ?? 'outline'}\n data-size={props.size ?? 'md'}\n data-icon-only={props.isIconOnly || undefined}\n >\n {props.items.map((item) => (\n <ToggleButton\n key={item.id}\n id={item.id}\n className=\"toggle-group__item\"\n aria-label={item.label}\n isDisabled={props.isDisabled || item.isDisabled}\n >\n {props.renderIcon && (\n <span className=\"toggle-group__icon\" aria-hidden=\"true\">\n {props.renderIcon(item)}\n </span>\n )}\n {!props.isIconOnly && <span>{item.label}</span>}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </OverlayDirection>\n );\n}\n","import {\n parseDate,\n today,\n getLocalTimeZone,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n} from '@internationalized/date';\n\nexport interface DateRange {\n start: string;\n end: string;\n}\nexport interface DateRangePreset {\n id: string;\n label: string;\n value: DateRange;\n}\nexport interface DateRangeConstraints {\n minDate?: string;\n maxDate?: string;\n minDays?: number;\n maxDays?: number;\n isDateUnavailable?: (date: string) => boolean;\n}\nexport type DateRangeSize = 'sm' | 'md' | 'lg';\nexport type DateRangeVariant = 'primary' | 'secondary' | 'outline';\nexport interface DateRangeOptions extends DateRangeConstraints {\n label: string;\n defaultValue?: DateRange | null;\n size?: DateRangeSize;\n variant?: DateRangeVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n locale?: string;\n dir?: 'ltr' | 'rtl';\n visibleMonths?: 1 | 2;\n weekStartsOn?: 0 | 1;\n display?: 'popover' | 'inline';\n showInputs?: boolean;\n showMonthYearPicker?: boolean;\n triggerDisplay?: 'text' | 'icon';\n presets?: DateRangePreset[];\n labels?: Partial<DateRangeLabels>;\n formatRange?: (value: DateRange, locale: string) => string;\n description?: string;\n errorMessage?: string;\n name?: string;\n referenceDate?: string;\n open?: boolean;\n defaultOpen?: boolean;\n}\nexport type DateRangeError = 'incomplete' | 'order' | 'bounds' | 'unavailable' | 'length';\nexport interface DateRangeLabels {\n title: string;\n start: string;\n end: string;\n apply: string;\n cancel: string;\n clear: string;\n previousMonth: string;\n nextMonth: string;\n presets: string;\n placeholder: string;\n incomplete: string;\n order: string;\n bounds: string;\n unavailable: string;\n length: string;\n required: string;\n}\nexport function dateRangeLabels(locale = 'id-ID'): DateRangeLabels {\n return locale.startsWith('id')\n ? {\n title: 'Pilih rentang tanggal',\n start: 'Tanggal mulai',\n end: 'Tanggal akhir',\n apply: 'Terapkan',\n cancel: 'Batal',\n clear: 'Kosongkan',\n previousMonth: 'Bulan sebelumnya',\n nextMonth: 'Bulan berikutnya',\n presets: 'Pilihan cepat',\n placeholder: 'Pilih tanggal',\n incomplete: 'Lengkapi tanggal mulai dan akhir.',\n order: 'Tanggal akhir harus setelah atau sama dengan tanggal mulai.',\n bounds: 'Tanggal berada di luar batas yang diizinkan.',\n unavailable: 'Rentang memuat tanggal yang tidak tersedia.',\n length: 'Durasi rentang tidak sesuai batas yang diizinkan.',\n required: 'Rentang tanggal wajib diisi.',\n }\n : {\n title: 'Select date range',\n start: 'Start date',\n end: 'End date',\n apply: 'Apply',\n cancel: 'Cancel',\n clear: 'Clear',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n presets: 'Quick selections',\n placeholder: 'Choose dates',\n incomplete: 'Enter both start and end dates.',\n order: 'End date must be on or after start date.',\n bounds: 'Dates are outside the allowed limits.',\n unavailable: 'The range includes an unavailable date.',\n length: 'The range duration is outside the allowed limits.',\n required: 'A date range is required.',\n };\n}\nexport function validDate(value: string): boolean {\n if (!/^(?!0000)\\d{4}-\\d{2}-\\d{2}$/.test(value)) return false;\n try {\n return parseDate(value).toString() === value;\n } catch {\n return false;\n }\n}\nexport function asDate(value?: string) {\n return value && validDate(value) ? parseDate(value) : undefined;\n}\nexport function currentDate() {\n return today(getLocalTimeZone()).toString();\n}\nexport function rangeError(\n value: DateRange | null,\n constraints: DateRangeConstraints = {},\n): DateRangeError | null {\n if (!value) return null;\n if (!validDate(value.start) || !validDate(value.end)) return 'incomplete';\n if (value.end < value.start) return 'order';\n if (\n (constraints.minDate && value.start < constraints.minDate) ||\n (constraints.maxDate && value.end > constraints.maxDate)\n )\n return 'bounds';\n const start = parseDate(value.start),\n end = parseDate(value.end);\n const days = end.calendar.toJulianDay(end) - start.calendar.toJulianDay(start) + 1;\n if (\n (constraints.minDays && days < constraints.minDays) ||\n (constraints.maxDays && days > constraints.maxDays)\n )\n return 'length';\n if (constraints.isDateUnavailable) {\n for (let day = start; day.compare(end) <= 0; day = day.add({ days: 1 })) {\n if (constraints.isDateUnavailable(day.toString())) return 'unavailable';\n if (day.compare(end) === 0) break;\n }\n }\n return null;\n}\nexport function rangeText(value: DateRange | null, locale = 'id-ID'): string {\n if (!value || !validDate(value.start) || !validDate(value.end)) return '';\n const formatter = new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC',\n calendar: 'gregory',\n });\n const date = (s: string) => parseDate(s).toDate('UTC');\n return value.start === value.end\n ? formatter.format(date(value.start))\n : `${formatter.format(date(value.start))} – ${formatter.format(date(value.end))}`;\n}\nexport function createDateRangePresets(\n referenceDate = currentDate(),\n locale = 'id-ID',\n weekStartsOn: 0 | 1 = 1,\n): DateRangePreset[] {\n const day = parseDate(referenceDate),\n week = startOfWeek(day, locale, weekStartsOn === 1 ? 'mon' : 'sun');\n const id = locale.startsWith('id');\n return [\n {\n id: 'this-week',\n label: id ? 'Minggu ini' : 'This Week',\n start: week,\n end: week.add({ days: 6 }),\n },\n {\n id: 'last-week',\n label: id ? 'Minggu lalu' : 'Last Week',\n start: week.subtract({ days: 7 }),\n end: week.subtract({ days: 1 }),\n },\n {\n id: 'last-7-days',\n label: id ? '7 hari terakhir' : 'Last 7 Days',\n start: day.subtract({ days: 6 }),\n end: day,\n },\n {\n id: 'last-30-days',\n label: id ? '30 hari terakhir' : 'Last 30 Days',\n start: day.subtract({ days: 29 }),\n end: day,\n },\n {\n id: 'this-month',\n label: id ? 'Bulan ini' : 'Current Month',\n start: startOfMonth(day),\n end: endOfMonth(day),\n },\n {\n id: 'next-month',\n label: id ? 'Bulan depan' : 'Next Month',\n start: startOfMonth(day.add({ months: 1 })),\n end: endOfMonth(day.add({ months: 1 })),\n },\n ].map(({ id, label, start, end }) => ({\n id,\n label,\n value: { start: start.toString(), end: end.toString() },\n }));\n}\n","import { useContext, useEffect, useId, useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider, useLocale } from 'react-aria-components/I18nProvider';\nimport { Dialog, DialogTrigger } from 'react-aria-components/Dialog';\nimport { Popover } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport {\n RangeCalendar,\n RangeCalendarStateContext,\n CalendarGrid,\n CalendarGridHeader,\n CalendarGridBody,\n CalendarHeaderCell,\n CalendarCell,\n CalendarHeading,\n} from 'react-aria-components/RangeCalendar';\nimport { GregorianCalendar } from '@internationalized/date';\nimport { useDisclosure } from './useDisclosure.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { ChevronIcon } from './icons.js';\nimport {\n asDate,\n currentDate,\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\n\nexport interface DateRangePickerProps extends DateRangeOptions {\n value?: DateRange | null;\n onChange?: (value: DateRange | null) => void;\n onApply?: (value: DateRange | null) => void;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n}\nconst empty = (): DateRange => ({ start: '', end: '' });\nfunction CalendarContent({\n onPending,\n dir,\n children,\n}: {\n onPending: (pending: boolean) => void;\n dir?: 'ltr' | 'rtl';\n children: ReactNode;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const { direction } = useLocale();\n const pending = !!state?.anchorDate;\n useEffect(() => onPending(pending), [pending, onPending]);\n // Some WebKit Intl versions ignore an explicit locale script when inferring direction.\n // Keep the headless calendar's focus methods, overriding only mismatched horizontal keys.\n return (\n <div\n onKeyDownCapture={(event) => {\n if (\n !state ||\n !dir ||\n dir === direction ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n !['ArrowLeft', 'ArrowRight'].includes(event.key) ||\n !(event.target as HTMLElement).closest('.date-range__day')\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n if ((event.key === 'ArrowRight') === (dir === 'rtl')) state.focusPreviousDay();\n else state.focusNextDay();\n }}\n >\n {children}\n </div>\n );\n}\nexport function DateRangePicker(props: DateRangePickerProps) {\n const {\n label,\n locale = 'id-ID',\n dir,\n size = 'md',\n variant = 'primary',\n fullWidth = true,\n hideLabel = false,\n visibleMonths = 2,\n weekStartsOn = 1,\n display = 'popover',\n showInputs = true,\n presets = [],\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n } = props;\n const labels = { ...dateRangeLabels(locale), ...props.labels };\n const [local, setLocal] = useState(props.defaultValue ?? null);\n const committed = props.value !== undefined ? props.value : local;\n const start = committed?.start ?? '',\n end = committed?.end ?? '';\n const [draft, setDraft] = useState<DateRange>({ start, end });\n const initialFocus = () => {\n const date = asDate(start) ?? asDate(props.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.minDate),\n max = asDate(props.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n };\n const [focused, setFocused] = useState(initialFocus);\n const [formError, setFormError] = useState(false);\n const [pending, setPending] = useState(false),\n [calendarKey, setCalendarKey] = useState(0);\n const trigger = useRef<HTMLButtonElement>(null);\n const id = useId();\n const disclosure = useDisclosure(props.open, props.defaultOpen, props.onOpenChange);\n const visible = disclosure.visible && !isDisabled;\n useEffect(() => setDraft({ start, end }), [start, end]);\n function replaceDraft(next: DateRange) {\n setDraft(next);\n setPending(false);\n setCalendarKey((k) => k + 1);\n }\n function resetDraft() {\n replaceDraft({ start, end });\n setFocused(initialFocus());\n }\n function changeOpen(next: boolean) {\n if (isDisabled && next) return;\n resetDraft();\n disclosure.change(next);\n }\n const nullableDraft = draft.start || draft.end ? draft : null;\n const errorCode = pending\n ? 'incomplete'\n : (rangeError(nullableDraft, props) ?? (isRequired && !nullableDraft ? 'required' : null));\n const error = errorCode ? labels[errorCode] : undefined;\n const committedError = rangeError(committed, props);\n const outerError = props.isInvalid || committedError || formError;\n const matchingPreset = presets.find((p) => p.value.start === start && p.value.end === end);\n const text = committed\n ? (props.formatRange?.(committed, locale) ??\n matchingPreset?.label ??\n rangeText(committed, locale))\n : labels.placeholder;\n const feedbackId = outerError\n ? `${id}-error`\n : props.description\n ? `${id}-description`\n : undefined;\n function apply() {\n if (isDisabled || isReadOnly || errorCode) return;\n const next = nullableDraft ? { ...nullableDraft } : null;\n setLocal(next);\n setFormError(false);\n props.onChange?.(next);\n props.onApply?.(next);\n disclosure.change(false);\n }\n function edit(part: 'start' | 'end', value: string) {\n if (isDisabled || isReadOnly) return;\n replaceDraft({ ...draft, [part]: value });\n if (asDate(value)) setFocused(asDate(value)!);\n }\n const calendarValue =\n asDate(draft.start) && asDate(draft.end) && draft.start <= draft.end\n ? { start: asDate(draft.start)!, end: asDate(draft.end)! }\n : null;\n const panel = (\n <div className=\"date-range__content\" data-readonly={isReadOnly || undefined}>\n <header className=\"date-range__intro\">\n <h2 id={`${id}-title`}>{labels.title}</h2>\n <p className=\"date-range__summary\" aria-live=\"polite\">\n {pending ? labels.incomplete : rangeText(nullableDraft, locale) || labels.incomplete}\n </p>\n </header>\n <div className=\"date-range__body\">\n {presets.length > 0 && (\n <div className=\"date-range__presets\" role=\"group\" aria-label={labels.presets}>\n {presets.map((p) => (\n <button\n type=\"button\"\n key={p.id}\n className=\"date-range__preset\"\n disabled={isDisabled || isReadOnly || !!rangeError(p.value, props)}\n aria-pressed={\n !pending && draft.start === p.value.start && draft.end === p.value.end\n }\n onClick={() => {\n replaceDraft({ ...p.value });\n setFocused(asDate(p.value.start)!);\n }}\n >\n {p.label}\n </button>\n ))}\n </div>\n )}\n <div className=\"date-range__main\">\n {showInputs && (\n <div className=\"date-range__inputs\">\n {(['start', 'end'] as const).map((part) => (\n <label key={part} className=\"date-range__field\">\n <span>{labels[part]}</span>\n <input\n type=\"date\"\n form=\"\"\n value={draft[part]}\n min={props.minDate}\n max={props.maxDate}\n disabled={isDisabled}\n readOnly={isReadOnly}\n aria-invalid={!!errorCode}\n aria-describedby={error ? `${id}-draft-error` : undefined}\n onChange={(e) => edit(part, e.target.value)}\n />\n </label>\n ))}\n </div>\n )}\n {props.showMonthYearPicker && (\n <div className=\"date-range__jump\">\n <label>\n <span>{locale.startsWith('id') ? 'Bulan' : 'Month'}</span>\n <select\n form=\"\"\n disabled={isDisabled}\n aria-label={locale.startsWith('id') ? 'Bulan' : 'Month'}\n value={focused.month}\n onChange={(e) => setFocused(focused.set({ month: Number(e.target.value) }))}\n >\n {Array.from({ length: 12 }, (_, i) => (\n <option key={i} value={i + 1}>\n {new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month: i + 1, day: 1 }).toDate('UTC'))}\n </option>\n ))}\n </select>\n </label>\n <label>\n <span>{locale.startsWith('id') ? 'Tahun' : 'Year'}</span>\n <input\n key={focused.year}\n type=\"number\"\n form=\"\"\n disabled={isDisabled}\n min={asDate(props.minDate)?.year ?? 1}\n max={asDate(props.maxDate)?.year ?? 9999}\n defaultValue={focused.year}\n onBlur={(e) => {\n const year = Number(e.target.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n setFocused(focused.set({ year }));\n else e.target.value = String(focused.year);\n }}\n />\n </label>\n </div>\n )}\n <RangeCalendar\n dir={dir}\n key={calendarKey}\n className=\"date-range__calendar\"\n aria-label={labels.title}\n value={calendarValue}\n focusedValue={focused}\n onFocusChange={setFocused}\n createCalendar={() => new GregorianCalendar()}\n onChange={(v) => {\n if (v) setDraft({ start: v.start.toString(), end: v.end.toString() });\n }}\n visibleDuration={{ months: visibleMonths }}\n firstDayOfWeek={weekStartsOn === 1 ? 'mon' : 'sun'}\n pageBehavior=\"single\"\n minValue={asDate(props.minDate)}\n maxValue={asDate(props.maxDate)}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isDateUnavailable={\n props.isDateUnavailable ? (d) => props.isDateUnavailable!(d.toString()) : undefined\n }\n >\n <CalendarContent onPending={setPending} dir={dir}>\n <div className=\"date-range__navigation\">\n <Button\n slot=\"previous\"\n className=\"date-range__nav date-range__nav--previous\"\n aria-label={labels.previousMonth}\n >\n <ChevronIcon />\n </Button>\n <Button\n slot=\"next\"\n className=\"date-range__nav date-range__nav--next\"\n aria-label={labels.nextMonth}\n >\n <ChevronIcon />\n </Button>\n </div>\n <div className=\"date-range__months\">\n {Array.from({ length: visibleMonths }, (_, i) => (\n <div className=\"date-range__month\" key={i}>\n <CalendarHeading offset={{ months: i }} className=\"date-range__heading\" />\n <CalendarGrid\n offset={{ months: i }}\n className=\"date-range__grid\"\n weekdayStyle=\"short\"\n >\n <CalendarGridHeader>\n {(day) => (\n <CalendarHeaderCell className=\"date-range__weekday\">\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody>\n {(date) => <CalendarCell date={date} className=\"date-range__day\" />}\n </CalendarGridBody>\n </CalendarGrid>\n </div>\n ))}\n </div>\n </CalendarContent>\n </RangeCalendar>\n <div className=\"date-range__validation\" aria-live=\"polite\">\n {error && (\n <p id={`${id}-draft-error`} role=\"alert\">\n {error}\n </p>\n )}\n </div>\n </div>\n </div>\n <footer className=\"date-range__footer\">\n <button\n type=\"button\"\n className=\"button button--ghost button--sm\"\n disabled={isDisabled || isReadOnly}\n onClick={() => replaceDraft(empty())}\n >\n {labels.clear}\n </button>\n <div>\n <button\n type=\"button\"\n className=\"button button--secondary button--sm\"\n onClick={() => changeOpen(false)}\n >\n {labels.cancel}\n </button>\n <button\n type=\"button\"\n className=\"button button--primary button--sm\"\n disabled={isDisabled || isReadOnly || !!errorCode}\n onClick={apply}\n >\n {labels.apply}\n </button>\n </div>\n </footer>\n </div>\n );\n return (\n <I18nProvider\n locale={new Intl.Locale(locale, {\n calendar: 'gregory',\n ...(dir ? { script: dir === 'rtl' ? 'Arab' : 'Latn' } : {}),\n }).toString()}\n >\n <div\n className={[\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n props.triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ]\n .filter(Boolean)\n .join(' ')}\n dir={dir}\n data-disabled={isDisabled || undefined}\n >\n <span id={`${id}-label`} className=\"date-range__label\">\n {label}\n {isRequired && <span aria-hidden=\"true\"> *</span>}\n </span>\n {display === 'inline' ? (\n <section\n className=\"date-range__panel date-range__inline\"\n aria-labelledby={`${id}-title`}\n dir={dir}\n >\n {panel}\n </section>\n ) : (\n <DialogTrigger isOpen={visible} onOpenChange={changeOpen}>\n <Button\n ref={trigger}\n className=\"date-range__trigger\"\n isDisabled={isDisabled}\n aria-labelledby={`${id}-label ${id}-value`}\n aria-describedby={feedbackId}\n aria-invalid={!!outerError}\n >\n <svg\n className=\"date-range__icon\"\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" />\n </svg>\n <span\n id={`${id}-value`}\n className=\"date-range__value\"\n data-placeholder={!committed || undefined}\n >\n {text}\n </span>\n <ChevronIcon className=\"date-range__chevron\" />\n </Button>\n <Popover\n className=\"date-range__panel\"\n placement=\"bottom start\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n <Dialog className=\"date-range__dialog\" aria-labelledby={`${id}-title`}>\n {panel}\n </Dialog>\n </Popover>\n </DialogTrigger>\n )}\n {props.description && (\n <span id={`${id}-description`} className=\"input__description\">\n {props.description}\n </span>\n )}\n {outerError && (\n <span id={`${id}-error`} className=\"input__error\" role=\"alert\">\n {props.errorMessage ?? (committedError ? labels[committedError] : labels.required)}\n </span>\n )}\n {props.name && (\n <>\n <input type=\"hidden\" name={`${props.name}.start`} value={start} disabled={isDisabled} />\n <input type=\"hidden\" name={`${props.name}.end`} value={end} disabled={isDisabled} />\n </>\n )}\n <SelectionValidation\n hasValue={!!committed && !committedError}\n required={isRequired || !!committedError}\n disabled={isDisabled}\n onInvalid={() => {\n setFormError(true);\n trigger.current?.focus();\n }}\n onResetStart={() => {}}\n onReset={(cancelled) => {\n if (!cancelled) {\n if (props.value === undefined) setLocal(props.defaultValue ?? null);\n setFormError(false);\n changeOpen(false);\n }\n }}\n />\n </div>\n </I18nProvider>\n );\n}\n","export type ToastTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';\nexport type ToastPlacement =\n 'top-start' | 'top-center' | 'top-end' | 'bottom-start' | 'bottom-center' | 'bottom-end';\nexport type ToastCloseReason =\n 'timeout' | 'dismiss' | 'action' | 'cancel' | 'swipe' | 'clear' | 'unmount';\nexport interface ToastAction {\n label: string;\n altText: string;\n onAction: () => void;\n dismiss?: boolean;\n}\nexport interface ToastOptions {\n id?: string;\n title: string;\n description?: string;\n tone?: ToastTone;\n duration?: number;\n isLoading?: boolean;\n action?: ToastAction;\n cancel?: ToastAction;\n onClose?: (reason: ToastCloseReason) => void;\n}\nexport interface ToastEntry extends Readonly<ToastOptions> {\n readonly id: string;\n readonly tone: ToastTone;\n readonly duration: number;\n readonly isLoading: boolean;\n readonly generation: number;\n readonly state: 'open' | 'closing';\n readonly createdAt: number;\n readonly visibleAt: number | null;\n readonly remaining: number;\n readonly paused: boolean;\n}\nexport interface ToastManagerOptions {\n maxVisible?: number;\n maxPending?: number;\n duration?: number;\n exitDuration?: number;\n}\ntype ToastMessage = string | ToastOptions;\nexport interface ToastPromiseMessages<T> {\n loading: ToastMessage;\n success: ToastMessage | ((value: T) => ToastMessage);\n error: ToastMessage | ((error: unknown) => ToastMessage);\n}\nexport interface ToastManager {\n add(options: ToastOptions): string | null;\n update(id: string, options: Partial<ToastOptions>): boolean;\n dismiss(id: string, reason?: ToastCloseReason): void;\n clear(reason?: ToastCloseReason): void;\n pause(reason: string): void;\n resume(reason: string): void;\n attach(): () => void;\n dispose(): void;\n subscribe(listener: () => void): () => void;\n getSnapshot(): readonly ToastEntry[];\n getServerSnapshot(): readonly ToastEntry[];\n promise<T>(\n promise: Promise<T>,\n messages: ToastPromiseMessages<T>,\n options?: Partial<ToastOptions>,\n ): { id: string | null; promise: Promise<T> };\n}\n\ninterface RecordState {\n entry: ToastEntry;\n timer?: ReturnType<typeof setTimeout>;\n startedAt: number | null;\n exitRemaining: number;\n}\nconst EMPTY: readonly ToastEntry[] = Object.freeze([]);\nconst messageOptions = (message: ToastMessage): ToastOptions =>\n typeof message === 'string' ? { title: message } : message;\nconst milliseconds = (value: number, fallback: number) =>\n Number.isFinite(value) && value >= 0 ? value : fallback;\n\n/** Complete required notifications/cleanup before reporting user callback failures. */\nconst complete = (operations: readonly (() => void)[]) => {\n const errors: unknown[] = [];\n for (const operation of operations) {\n try {\n operation();\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast lifecycle callbacks failed.');\n};\n\n/** Create per application/provider; no browser globals or timers are used until attached. */\nexport function createToastManager(options: ToastManagerOptions = {}): ToastManager {\n const maxVisible = Math.max(1, Math.floor(options.maxVisible ?? 3));\n const maxPending = Math.max(0, Math.floor(options.maxPending ?? 50));\n const duration = milliseconds(options.duration ?? 5000, 5000);\n const exitDuration = milliseconds(options.exitDuration ?? 200, 200);\n const records = new Map<string, RecordState>();\n const visible: string[] = [];\n const pending: string[] = [];\n const listeners = new Set<() => void>();\n const pauses = new Map<string, number>();\n let snapshot = EMPTY;\n let attached = false;\n let disposed = false;\n let sequence = 0;\n let generation = 0;\n const paused = () => !attached || pauses.size > 0;\n const freeze = (entry: ToastEntry): ToastEntry =>\n Object.freeze({\n ...entry,\n action: entry.action ? Object.freeze({ ...entry.action }) : undefined,\n cancel: entry.cancel ? Object.freeze({ ...entry.cancel }) : undefined,\n });\n const publish = () => {\n const next = visible.map((id) => records.get(id)!.entry);\n if (next.length === snapshot.length && next.every((entry, index) => entry === snapshot[index]))\n return;\n snapshot = Object.freeze(next);\n complete([...listeners]);\n };\n const stop = (record: RecordState) => {\n if (record.timer !== undefined) clearTimeout(record.timer);\n record.timer = undefined;\n if (record.startedAt !== null) {\n const elapsed = Math.max(0, Date.now() - record.startedAt);\n if (record.entry.state === 'closing')\n record.exitRemaining = Math.max(0, record.exitRemaining - elapsed);\n else\n record.entry = freeze({\n ...record.entry,\n remaining: Math.max(0, record.entry.remaining - elapsed),\n });\n }\n record.startedAt = null;\n };\n const promote = () => {\n while (visible.length < maxVisible && pending.length) {\n const id = pending.shift()!;\n const record = records.get(id)!;\n visible.push(id);\n record.entry = freeze({ ...record.entry, visibleAt: Date.now(), paused: paused() });\n start(record);\n }\n };\n const remove = (id: string) => {\n const record = records.get(id);\n if (!record) return;\n stop(record);\n records.delete(id);\n const index = visible.indexOf(id);\n if (index >= 0) visible.splice(index, 1);\n const waiting = pending.indexOf(id);\n if (waiting >= 0) pending.splice(waiting, 1);\n promote();\n publish();\n };\n const start = (record: RecordState) => {\n if (!attached || record.entry.visibleAt === null || record.timer !== undefined) return;\n const closing = record.entry.state === 'closing';\n if (!closing && (paused() || record.entry.isLoading || record.entry.duration === 0)) return;\n record.startedAt = Date.now();\n record.timer = setTimeout(\n () => {\n record.timer = undefined;\n record.startedAt = null;\n if (closing) remove(record.entry.id);\n else manager.dismiss(record.entry.id, 'timeout');\n },\n closing ? record.exitRemaining : record.entry.remaining,\n );\n };\n const refreshPause = () => {\n for (const id of visible) {\n const record = records.get(id)!;\n stop(record);\n record.entry = freeze({\n ...record.entry,\n paused: paused() || record.entry.state === 'closing',\n });\n start(record);\n }\n publish();\n };\n const update = (\n id: string,\n changes: Partial<ToastOptions>,\n invalidate: boolean,\n onGeneration?: (value: number) => void,\n ) => {\n const record = records.get(id);\n if (!record || record.entry.state === 'closing' || disposed) return false;\n stop(record);\n const before = record.entry;\n const settled = before.isLoading && changes.isLoading === false;\n const nextDuration =\n changes.duration !== undefined\n ? milliseconds(changes.duration, duration)\n : settled\n ? duration\n : before.duration;\n record.entry = freeze({\n ...before,\n ...changes,\n id,\n tone: changes.tone ?? before.tone,\n duration: nextDuration,\n isLoading: changes.isLoading ?? before.isLoading,\n remaining: changes.duration !== undefined || settled ? nextDuration : before.remaining,\n generation: invalidate ? ++generation : before.generation,\n });\n onGeneration?.(record.entry.generation);\n start(record);\n publish();\n return true;\n };\n const add = (value: ToastOptions, onGeneration?: (value: number) => void): string | null => {\n if (disposed) return null;\n if (value.id !== undefined && records.has(value.id))\n return update(value.id, value, true, onGeneration) ? value.id : null;\n if (visible.length >= maxVisible && pending.length >= maxPending) return null;\n let id = value.id;\n if (id === undefined) {\n do {\n id = `toast-${++sequence}`;\n } while (records.has(id));\n }\n const entry = freeze({\n ...value,\n id,\n tone: value.tone ?? 'neutral',\n duration: milliseconds(value.duration ?? duration, duration),\n isLoading: value.isLoading ?? false,\n generation: ++generation,\n state: 'open',\n createdAt: Date.now(),\n visibleAt: visible.length < maxVisible ? Date.now() : null,\n remaining: milliseconds(value.duration ?? duration, duration),\n paused: paused(),\n });\n const record: RecordState = { entry, startedAt: null, exitRemaining: exitDuration };\n records.set(id, record);\n if (visible.length < maxVisible) {\n visible.push(id);\n start(record);\n } else pending.push(id);\n onGeneration?.(entry.generation);\n publish();\n return id;\n };\n const manager: ToastManager = {\n add,\n update: (id, changes) => update(id, changes, true),\n dismiss(id, reason = 'dismiss') {\n const record = records.get(id);\n if (!record || record.entry.state === 'closing') return;\n stop(record);\n record.entry = freeze({\n ...record.entry,\n state: 'closing',\n paused: true,\n remaining: reason === 'timeout' ? 0 : record.entry.remaining,\n });\n complete([\n () => {\n if (record.entry.visibleAt === null) remove(id);\n else {\n start(record);\n publish();\n }\n },\n () => record.entry.onClose?.(reason),\n ]);\n },\n clear(reason = 'clear') {\n // Remove waiting entries first so visible exits cannot promote cleared work.\n complete([...pending, ...visible].map((id) => () => manager.dismiss(id, reason)));\n },\n pause(reason) {\n if (disposed) return;\n pauses.set(reason, (pauses.get(reason) ?? 0) + 1);\n if (pauses.size === 1 && pauses.get(reason) === 1) refreshPause();\n },\n resume(reason) {\n const count = pauses.get(reason);\n if (!count || disposed) return;\n if (count === 1) pauses.delete(reason);\n else pauses.set(reason, count - 1);\n if (!pauses.size) refreshPause();\n },\n attach() {\n if (disposed) throw new Error('Cannot attach a disposed ToastManager.');\n if (attached) throw new Error('A ToastManager may attach to only one provider.');\n attached = true;\n try {\n refreshPause();\n } catch (error) {\n attached = false;\n // Rollback also publishes the detached snapshot; report all subscriber failures.\n complete([\n () => {\n throw error;\n },\n refreshPause,\n ]);\n }\n let detached = false;\n return () => {\n if (detached || disposed) return;\n detached = true;\n attached = false;\n refreshPause();\n };\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n attached = false;\n const closing = [...records.values()].filter((record) => record.entry.state === 'open');\n for (const record of records.values()) stop(record);\n records.clear();\n visible.length = 0;\n pending.length = 0;\n pauses.clear();\n complete([\n publish,\n () => listeners.clear(),\n ...closing.map((record) => () => record.entry.onClose?.('unmount')),\n ]);\n },\n subscribe(listener) {\n if (!disposed) listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n getSnapshot: () => snapshot,\n getServerSnapshot: () => EMPTY,\n promise(task, messages, promiseOptions = {}) {\n let expected: number | undefined;\n const id = add(\n {\n ...promiseOptions,\n ...messageOptions(messages.loading),\n isLoading: true,\n },\n (value) => {\n expected = value;\n },\n );\n const settle = (message: ToastMessage | (() => ToastMessage), tone: ToastTone) => {\n if (\n id === null ||\n records.get(id)?.entry.generation !== expected ||\n records.get(id)?.entry.state !== 'open'\n )\n return;\n const content = typeof message === 'function' ? message() : message;\n // Result factories may reentrantly update, dismiss, dispose, or reuse this ID.\n if (\n records.get(id)?.entry.generation !== expected ||\n records.get(id)?.entry.state !== 'open'\n )\n return;\n update(\n id,\n {\n tone,\n duration: promiseOptions.duration ?? duration,\n ...messageOptions(content),\n isLoading: false,\n },\n false,\n );\n };\n return {\n id,\n promise: task.then(\n (value) => {\n const message = messages.success;\n settle(typeof message === 'function' ? () => message(value) : message, 'success');\n return value;\n },\n (error: unknown) => {\n const message = messages.error;\n settle(typeof message === 'function' ? () => message(error) : message, 'danger');\n throw error;\n },\n ),\n };\n },\n };\n return manager;\n}\n","import {\n createContext,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport {\n Button,\n I18nProvider,\n Text,\n UNSTABLE_Toast as AriaToast,\n UNSTABLE_ToastContent as ToastContent,\n UNSTABLE_ToastList as ToastList,\n UNSTABLE_ToastQueue as ToastQueue,\n UNSTABLE_ToastRegion as ToastRegion,\n} from 'react-aria-components';\nimport {\n createToastManager,\n type ToastAction,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\n\n/** Keeps upstream accessibility/focus behavior while Kazee owns every timer and queue decision. */\nclass QueueAdapter extends ToastQueue<ToastEntry> {\n private regionPaused = false;\n constructor(private manager: ToastManager) {\n super();\n this.refresh();\n }\n private refresh() {\n this.visibleToasts = this.manager\n .getSnapshot()\n .map((content) => ({ key: content.id, content }));\n }\n override subscribe(listener: () => void) {\n return this.manager.subscribe(() => {\n this.refresh();\n listener();\n });\n }\n override add(content: ToastEntry): string {\n return this.manager.add(content) ?? '';\n }\n override close(key: string) {\n this.manager.dismiss(key);\n }\n override clear() {\n this.manager.clear();\n }\n override pauseAll() {\n if (!this.regionPaused) {\n this.regionPaused = true;\n this.manager.pause('region');\n }\n }\n override resumeAll() {\n if (this.regionPaused) {\n this.regionPaused = false;\n this.manager.resume('region');\n }\n }\n}\n\ninterface ToastContextValue {\n manager: ToastManager;\n closeLabel: string;\n placement: ToastPlacement;\n dir: 'ltr' | 'rtl';\n showProgress: boolean;\n swipeThreshold: number;\n restoreFocus: () => void;\n}\nconst ToastContext = createContext<ToastContextValue | null>(null);\nexport interface ToastProviderProps {\n children?: ReactNode;\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n /** Modifier names followed by a key. An empty array disables the shortcut. */\n hotkey?: readonly string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n swipeThreshold?: number;\n /** Customize presentation with the exported Toast component, retaining region behavior. */\n renderToast?: (entry: ToastEntry) => ReactNode;\n}\n\nexport function ToastProvider({\n children,\n manager: suppliedManager,\n placement = 'bottom-end',\n label = 'Notifikasi / Notifications',\n closeLabel = 'Tutup notifikasi / Close notification',\n hotkey = ['Alt', 't'],\n dir = 'ltr',\n showProgress = false,\n swipeThreshold = 50,\n renderToast,\n}: ToastProviderProps) {\n const [ownedManager] = useState(() => createToastManager());\n const manager = suppliedManager ?? ownedManager;\n const queue = useMemo(() => new QueueAdapter(manager), [manager]);\n const region = useRef<HTMLDivElement>(null);\n const entries = useSyncExternalStore(\n manager.subscribe,\n manager.getSnapshot,\n manager.getServerSnapshot,\n );\n const positions = useRef(new Map<string, number>());\n useLayoutEffect(() => {\n const nodes = region.current?.querySelectorAll<HTMLElement>('.toast');\n const previous = positions.current;\n const next = new Map<string, number>();\n const animations: Animation[] = [];\n const regionTop = region.current?.getBoundingClientRect().top ?? 0;\n const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n for (const node of nodes ?? []) {\n const id = node.dataset.toastId;\n if (!id) continue;\n // Fixed bottom placement changes the region origin as its height grows.\n // Include that origin so a stationary toast does not falsely animate.\n const top = node.offsetTop + regionTop;\n next.set(id, top);\n const before = previous.get(id);\n if (\n before !== undefined &&\n before !== top &&\n node.dataset.state === 'open' &&\n !reducedMotion &&\n node.animate\n ) {\n const style = getComputedStyle(node);\n const token = style.getPropertyValue('--ds-motion-duration-normal').trim();\n const duration = token.endsWith('ms') ? parseFloat(token) : parseFloat(token) * 1000;\n animations.push(\n node.animate([{ translate: `0 ${before - top}px` }, { translate: '0 0' }], {\n duration: Number.isFinite(duration) ? duration : 160,\n easing: style.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease-out',\n }),\n );\n }\n }\n positions.current = next;\n return () => {\n for (const animation of animations) animation.cancel();\n };\n }, [entries]);\n const lastFocused = useRef<HTMLElement | null>(null);\n const lifetime = useRef({ generation: 0 });\n const hotkeySignature = hotkey.join('+');\n useEffect(() => {\n const keys = hotkeySignature ? hotkeySignature.split('+') : [];\n const detach = manager.attach();\n let documentPaused = false;\n let windowPaused = false;\n const visibility = () => {\n if (document.hidden && !documentPaused) {\n documentPaused = true;\n manager.pause('document');\n } else if (!document.hidden && documentPaused) {\n documentPaused = false;\n manager.resume('document');\n }\n };\n const blur = () => {\n if (!windowPaused) {\n windowPaused = true;\n manager.pause('window');\n }\n };\n const focus = () => {\n if (windowPaused) {\n windowPaused = false;\n manager.resume('window');\n }\n };\n visibility();\n const keydown = (event: KeyboardEvent) => {\n if (event.defaultPrevented) return;\n if (event.key === 'Escape' && region.current?.contains(event.target as Node)) {\n const target = event.target as HTMLElement;\n if (target.closest('input,textarea,select,[contenteditable=\"true\"]')) return;\n const focused = target.closest<HTMLElement>('.toast[data-state=\"open\"]');\n const latest = [...manager.getSnapshot()].reverse().find((entry) => entry.state === 'open');\n const id = focused?.dataset.toastId ?? latest?.id;\n if (id) {\n event.preventDefault();\n event.stopPropagation();\n manager.dismiss(id);\n }\n return;\n }\n if (!keys.length) return;\n const key = keys[keys.length - 1].toLowerCase();\n const modifiers = keys.slice(0, -1).map((value) => value.toLowerCase());\n if (\n event.key.toLowerCase() === key &&\n event.altKey === modifiers.includes('alt') &&\n event.ctrlKey === modifiers.includes('control') &&\n event.metaKey === modifiers.includes('meta') &&\n event.shiftKey === modifiers.includes('shift')\n ) {\n const target = region.current?.querySelector<HTMLElement>('.toast[data-state=\"open\"]');\n if (target) {\n event.preventDefault();\n target.focus();\n }\n }\n };\n const focusIn = (event: FocusEvent) => {\n if (\n region.current?.contains(event.target as Node) &&\n !region.current.contains(event.relatedTarget as Node | null)\n )\n lastFocused.current = event.relatedTarget as HTMLElement | null;\n };\n document.addEventListener('focusin', focusIn);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keydown);\n window.addEventListener('blur', blur);\n window.addEventListener('focus', focus);\n return () => {\n document.removeEventListener('focusin', focusIn);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keydown);\n window.removeEventListener('blur', blur);\n window.removeEventListener('focus', focus);\n detach();\n if (documentPaused) manager.resume('document');\n if (windowPaused) manager.resume('window');\n queue.resumeAll();\n };\n }, [manager, hotkeySignature, queue]);\n useEffect(() => {\n const lifecycle = lifetime.current;\n const token = ++lifecycle.generation;\n return () => {\n // React StrictMode immediately mounts again; only a real unmount disposes owned state.\n queueMicrotask(() => {\n if (lifecycle.generation === token) ownedManager.dispose();\n });\n };\n }, [ownedManager]);\n const context = {\n manager,\n closeLabel,\n placement,\n dir,\n showProgress,\n swipeThreshold,\n restoreFocus: () => {\n const next = region.current?.querySelector<HTMLElement>('.toast[data-state=\"open\"]');\n if (next) next.focus();\n else if (lastFocused.current?.isConnected) lastFocused.current.focus();\n },\n };\n return (\n <ToastContext.Provider value={context}>\n {children}\n <I18nProvider locale={dir === 'rtl' ? 'ar' : 'en'}>\n <ToastRegion\n queue={queue}\n ref={region}\n className=\"toast-region\"\n data-placement={placement}\n aria-label={label}\n aria-keyshortcuts={hotkey.length ? hotkey.join('+') : undefined}\n >\n <ToastList<ToastEntry> className=\"toast-list\">\n {({ toast }) => (\n <>{renderToast ? renderToast(toast.content) : <Toast entry={toast.content} />}</>\n )}\n </ToastList>\n </ToastRegion>\n </I18nProvider>\n </ToastContext.Provider>\n );\n}\n\nexport function useToast(): ToastManager {\n const context = useContext(ToastContext);\n if (!context) throw new Error('useToast must be used within a ToastProvider.');\n return context.manager;\n}\nexport interface ToastProps {\n entry: ToastEntry;\n indicator?: ReactNode;\n children?: ReactNode;\n /** Additional class appended to the shared toast class. */\n className?: string;\n}\n\nfunction Indicator({ entry }: { entry: ToastEntry }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n aria-hidden=\"true\"\n >\n {entry.isLoading ? (\n <circle cx=\"12\" cy=\"12\" r=\"8\" strokeDasharray=\"36 14\" />\n ) : entry.tone === 'success' ? (\n <path d=\"m5 12 4 4L19 6\" />\n ) : entry.tone === 'warning' || entry.tone === 'danger' ? (\n <>\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v5m0 3v1\" />\n </>\n ) : (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 10v7m0-11v1\" />\n </>\n )}\n </svg>\n );\n}\n\nexport function Toast({ entry, indicator, children, className }: ToastProps) {\n const actionDescriptionId = useId();\n const cancelDescriptionId = useId();\n const context = useContext(ToastContext);\n if (!context) throw new Error('Toast must be used within a ToastProvider region.');\n const { manager, closeLabel, placement, dir, showProgress, swipeThreshold, restoreFocus } =\n context;\n const ref = useRef<HTMLDivElement>(null);\n const drag = useRef<{\n x: number;\n y: number;\n id: number;\n cancelled: boolean;\n offset: number;\n } | null>(null);\n const [offset, setOffset] = useState(0);\n const [swipe, setSwipe] = useState<'move' | 'cancel' | 'end'>();\n const closing = entry.state === 'closing';\n const direction = (placement.endsWith('start') ? -1 : 1) * (dir === 'rtl' ? -1 : 1);\n useEffect(() => {\n if (closing && ref.current?.contains(document.activeElement)) restoreFocus?.();\n }, [closing, restoreFocus]);\n const action = (item: ToastAction, reason: 'action' | 'cancel') => {\n item.onAction();\n if (item.dismiss !== false) manager.dismiss(entry.id, reason);\n };\n const finishSwipe = (commit: boolean) => {\n const current = drag.current;\n drag.current = null;\n if (!current) return;\n if (current && !current.cancelled) manager.resume('swipe');\n if (commit && !current.cancelled && current.offset * direction >= swipeThreshold) {\n setSwipe('end');\n setOffset(current.offset);\n manager.dismiss(entry.id, 'swipe');\n } else {\n setSwipe('cancel');\n setOffset(0);\n }\n };\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const handlers = {\n pointerdown: (event: PointerEvent) => {\n if (\n closing ||\n drag.current ||\n event.button !== 0 ||\n (event.target as HTMLElement).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable=\"true\"]',\n )\n )\n return;\n // WebKit starts native text selection/drag before a later pointermove can\n // establish a swipe. Preserve touch pan-y, but suppress mouse text dragging.\n if (event.pointerType === 'mouse') event.preventDefault();\n drag.current = {\n x: event.clientX,\n y: event.clientY,\n id: event.pointerId,\n cancelled: false,\n offset: 0,\n };\n ref.current?.setPointerCapture?.(event.pointerId);\n manager.pause('swipe');\n },\n selectstart: (event: Event) => {\n if (drag.current && !drag.current.cancelled) event.preventDefault();\n },\n dragstart: (event: Event) => {\n if (drag.current && !drag.current.cancelled) event.preventDefault();\n },\n pointermove: (event: PointerEvent) => {\n const current = drag.current;\n if (!current || current.id !== event.pointerId || current.cancelled) return;\n const x = event.clientX - current.x;\n const y = event.clientY - current.y;\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n current.cancelled = true;\n setOffset(0);\n manager.resume('swipe');\n return;\n }\n if (Math.abs(x) > 8) {\n current.offset = Math.max(0, x * direction) * direction;\n setSwipe('move');\n setOffset(current.offset);\n }\n },\n pointerup: () => finishSwipe(true),\n pointercancel: () => finishSwipe(false),\n lostpointercapture: () => {\n if (drag.current) finishSwipe(false);\n },\n };\n for (const [name, handler] of Object.entries(handlers))\n node.addEventListener(name, handler as EventListener);\n return () => {\n for (const [name, handler] of Object.entries(handlers))\n node.removeEventListener(name, handler as EventListener);\n };\n });\n useEffect(\n () => () => {\n if (drag.current) {\n const active = !drag.current.cancelled;\n drag.current = null;\n if (active) manager.resume('swipe');\n }\n },\n [manager],\n );\n return (\n <AriaToast\n toast={{ key: entry.id, content: entry }}\n ref={ref}\n className={`toast${className ? ` ${className}` : ''}`}\n data-toast-id={entry.id}\n data-tone={entry.tone}\n data-loading={entry.isLoading || undefined}\n data-state={entry.state}\n data-placement={placement}\n data-paused={entry.paused || undefined}\n data-swipe={swipe}\n inert={closing || undefined}\n aria-hidden={closing || undefined}\n style={{ '--toast-swipe-x': `${offset}px`, touchAction: 'pan-y' } as CSSProperties}\n >\n <span className=\"toast__indicator\" aria-hidden=\"true\">\n {indicator ?? <Indicator entry={entry} />}\n </span>\n <ToastContent className=\"toast__body\" role=\"status\" aria-live=\"polite\">\n <Text slot=\"title\" className=\"toast__title\">\n {entry.title}\n </Text>\n {entry.description && (\n <Text slot=\"description\" className=\"toast__description\">\n {entry.description}\n </Text>\n )}\n {children}\n {(entry.action || entry.cancel) && (\n <div className=\"toast__actions\">\n {entry.action && (\n <span id={actionDescriptionId} hidden>\n {entry.action.altText}\n </span>\n )}\n {entry.cancel && (\n <span id={cancelDescriptionId} hidden>\n {entry.cancel.altText}\n </span>\n )}\n {entry.action && (\n <Button\n className=\"toast__action\"\n aria-describedby={actionDescriptionId}\n isDisabled={closing}\n onPress={() => action(entry.action!, 'action')}\n >\n {entry.action.label}\n </Button>\n )}\n {entry.cancel && (\n <Button\n className=\"toast__action\"\n data-cancel\n aria-describedby={cancelDescriptionId}\n isDisabled={closing}\n onPress={() => action(entry.cancel!, 'cancel')}\n >\n {entry.cancel.label}\n </Button>\n )}\n </div>\n )}\n </ToastContent>\n <Button slot=\"close\" className=\"toast__close\" aria-label={closeLabel} isDisabled={closing}>\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </Button>\n {showProgress && entry.duration > 0 && !entry.isLoading && (\n <span\n key={`${entry.generation}-${entry.remaining}-${entry.paused}`}\n className=\"toast__progress\"\n aria-hidden=\"true\"\n style={\n {\n '--toast-progress': entry.remaining / entry.duration,\n '--toast-remaining': `${entry.remaining}ms`,\n } as CSSProperties\n }\n />\n )}\n </AriaToast>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["AriaButton","_Fragment","Root","AriaToggleButton","AriaToggleButtonGroup","_Fragment","AriaSelect","Label","Button","Popover","_Fragment","AriaInput","Label","Label","AriaTextArea","AriaLabel","AriaCheckbox","_Fragment","AriaRadioGroup","Label","_Fragment","_Fragment","Text","FieldError","ListBox","ListBoxItem","AriaNumberField","_Fragment","Label","Button","Input","Text","FieldError","_Fragment","AriaTabs","_Fragment","Button","AriaDialog","_Fragment","Popover","Separator","Button","Button","AriaPopover","Dialog","Button","AriaTooltip","AriaComboBox","Label","Input","Button","Popover","ListBox","ListBoxItem","_Fragment","ToggleButtonGroup","ToggleButton","Button","Popover","Dialog","_Fragment","ToastQueue","I18nProvider","ToastRegion","ToastList","_Fragment","AriaToast","ToastContent","Text","Button"],"sources":["../src/Button.tsx","../src/ButtonGroup.tsx","../src/ToggleButton.tsx","../src/OverlayDirection.tsx","../src/ToggleButtonGroup.tsx","../src/icons.tsx","../src/field.tsx","../src/SelectionValidation.tsx","../src/selection-options.ts","../src/Select.tsx","../src/SelectGroup.tsx","../src/Input.tsx","../src/Textarea.tsx","../src/Label.tsx","../src/Checkbox.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/form-context.ts","../src/FieldComponent.tsx","../src/Form.tsx","../src/listbox-selection.ts","../src/Listbox.tsx","../src/NumberField.tsx","../src/Card.tsx","../src/Badge.tsx","../src/Skeleton.tsx","../src/Separator.tsx","../src/tabs-indicator.ts","../src/Tabs.tsx","../src/pagination-model.ts","../src/Pagination.tsx","../src/Table.tsx","../src/DataTable.tsx","../src/Alert.tsx","../src/Empty.tsx","../src/Breadcrumb.tsx","../src/useDisclosure.ts","../src/Sidebar.tsx","../src/chart-model.ts","../src/Chart.tsx","../src/Dialog.tsx","../src/overlay-model.ts","../src/DropdownMenu.tsx","../src/Popover.tsx","../src/Tooltip.tsx","../src/Spinner.tsx","../src/Combobox.tsx","../src/toggle-group-model.ts","../src/ToggleGroup.tsx","../src/date-range-model.ts","../src/DateRangePicker.tsx","../src/toast-model.ts","../src/Toast.tsx"],"sourcesContent":["import {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps,\n} from 'react-aria-components/Button';\nimport { useContext, type ReactNode } from 'react';\nimport { ProgressBarContext } from 'react-aria-components/ProgressBar';\n\nfunction PendingLabelAnchor() {\n const context = useContext(ProgressBarContext);\n const id = context && 'id' in context ? context.id : undefined;\n return id ? <span id={id} hidden aria-hidden=\"true\" /> : null;\n}\n\nexport type ButtonVariant =\n 'primary' | 'secondary' | 'danger' | 'outline' | 'tertiary' | 'ghost' | 'danger-soft' | 'ai';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\n/** The event passed to `onPress`: pointer type, modifier keys, and the target element. */\nexport type ButtonPressEvent = Parameters<NonNullable<AriaButtonProps['onPress']>>[0];\n\n/** Public flags supplied to the Button render function. */\nexport interface ButtonRenderProps {\n isPending: boolean;\n isDisabled: boolean;\n isHovered: boolean;\n isPressed: boolean;\n isFocused: boolean;\n isFocusVisible: boolean;\n}\n/**\n * The props the design system supports on `Button`. Anything not listed here is not part of the\n * public API, even if the underlying React Aria button would accept it.\n */\nexport interface ButtonProps {\n /** Label or content of the button. */\n children?: ReactNode | ((state: ButtonRenderProps) => ReactNode);\n /** Square icon button. Supply aria-label or aria-labelledby. */\n isIconOnly?: boolean;\n /** Blocks actions while retaining focus. Render a Spinner through children if desired. */\n isPending?: boolean;\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Disables the button. The button is not focusable and `onPress` is not called. */\n isDisabled?: boolean;\n /**\n * Called when the button is activated by mouse, touch, keyboard, or screen reader. Use this\n * instead of `onClick`.\n */\n onPress?: (event: ButtonPressEvent) => void;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Accessible name when the button has no visible text, such as an icon-only button. */\n 'aria-label'?: string;\n /** Id of an element that labels the button. */\n 'aria-labelledby'?: string;\n /** Id of an element that describes the button. */\n 'aria-describedby'?: string;\n /** Id of the button element. */\n id?: string;\n /** Focuses the button when it first renders. */\n autoFocus?: boolean;\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n isIconOnly = false,\n isPending = false,\n isDisabled = false,\n fullWidth = false,\n type = 'button',\n children,\n ...props\n}: ButtonProps) {\n const className = [\n 'button',\n `button--${variant}`,\n size !== 'md' && `button--${size}`,\n isIconOnly && 'button--icon-only',\n fullWidth && !isIconOnly && 'button--full-width',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <AriaButton\n {...props}\n type={isPending ? 'button' : type}\n className={className}\n isDisabled={isDisabled}\n isPending={isPending}\n >\n {(state) => (\n <>\n {typeof children === 'function'\n ? children({\n isPending: state.isPending,\n isDisabled: state.isDisabled,\n isHovered: state.isHovered,\n isPressed: state.isPressed,\n isFocused: state.isFocused,\n isFocusVisible: state.isFocusVisible,\n })\n : children}\n {isPending && <PendingLabelAnchor />}\n </>\n )}\n </AriaButton>\n );\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ReactElement,\n} from 'react';\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from './Button.js';\n\nexport interface ButtonGroupProps {\n label: string;\n children: ReactNode;\n variant?: ButtonVariant;\n size?: ButtonSize;\n isDisabled?: boolean;\n fullWidth?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}\nexport function ButtonGroupSeparator() {\n return <span className=\"button-group__separator\" aria-hidden=\"true\" />;\n}\nfunction Root({\n children,\n label,\n variant,\n size,\n isDisabled,\n fullWidth,\n orientation = 'horizontal',\n dir,\n}: ButtonGroupProps) {\n function defaults(nodes: ReactNode): ReactNode {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) return child;\n if (child.type === Fragment)\n return cloneElement(\n child as ReactElement<{ children: ReactNode }>,\n {},\n defaults((child.props as { children: ReactNode }).children),\n );\n if (child.type !== Button) return child;\n const button = child as ReactElement<ButtonProps>;\n return cloneElement(button, {\n variant: button.props.variant ?? variant,\n size: button.props.size ?? size,\n isDisabled: button.props.isDisabled ?? isDisabled,\n });\n });\n }\n return (\n <div\n role=\"group\"\n aria-label={label}\n dir={dir}\n data-orientation={orientation}\n className={`button-group${fullWidth ? ' button-group--full-width' : ''}`}\n >\n {defaults(children)}\n </div>\n );\n}\nexport const ButtonGroup = /* @__PURE__ */ Object.assign(Root, { Separator: ButtonGroupSeparator });\n","import { createContext, useContext, type ReactNode } from 'react';\nimport {\n ToggleButton as AriaToggleButton,\n type ToggleButtonRenderProps as AriaRenderProps,\n} from 'react-aria-components/ToggleButton';\nimport type { ButtonPressEvent, ButtonSize } from './Button.js';\n\nexport type ToggleButtonVariant = 'default' | 'ghost';\nexport type ToggleButtonRenderProps = Omit<AriaRenderProps, 'state'>;\nexport interface ToggleButtonProps {\n id?: string;\n children?: ReactNode | ((state: ToggleButtonRenderProps) => ReactNode);\n variant?: ToggleButtonVariant;\n size?: ButtonSize;\n isIconOnly?: boolean;\n isSelected?: boolean;\n defaultSelected?: boolean;\n isDisabled?: boolean;\n onChange?: (selected: boolean) => void;\n onPress?: (event: ButtonPressEvent) => void;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n autoFocus?: boolean;\n}\nexport const ToggleButtonSizeContext = createContext<ButtonSize>('md');\nexport function ToggleButton({\n children,\n variant = 'default',\n size,\n isIconOnly,\n ...props\n}: ToggleButtonProps) {\n const inheritedSize = useContext(ToggleButtonSizeContext);\n const resolvedSize = size ?? inheritedSize;\n return (\n <AriaToggleButton\n {...props}\n className={[\n 'button',\n 'toggle-button',\n `toggle-button--${variant}`,\n resolvedSize !== 'md' && `button--${resolvedSize}`,\n isIconOnly && 'button--icon-only',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {({ isSelected, isPressed, isHovered, isFocused, isFocusVisible, isDisabled }) =>\n typeof children === 'function'\n ? children({ isSelected, isPressed, isHovered, isFocused, isFocusVisible, isDisabled })\n : children\n }\n </AriaToggleButton>\n );\n}\n","import type { ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nexport function OverlayDirection({ dir, children }: { dir?: 'ltr' | 'rtl'; children: ReactNode }) {\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{children}</I18nProvider>\n ) : (\n children\n );\n}\n","import type { ReactNode } from 'react';\nimport { ToggleButtonGroup as AriaToggleButtonGroup } from 'react-aria-components/ToggleButtonGroup';\nimport type { ButtonSize } from './Button.js';\nimport { ToggleButtonSizeContext } from './ToggleButton.js';\nimport { ButtonGroupSeparator } from './ButtonGroup.js';\nimport { OverlayDirection } from './OverlayDirection.js';\n\ninterface Common {\n label: string;\n children: ReactNode;\n size?: ButtonSize;\n isDisabled?: boolean;\n isDetached?: boolean;\n fullWidth?: boolean;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n}\nexport type ToggleButtonGroupProps = Common &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nconst keys = (value: string | string[] | null | undefined) =>\n Array.isArray(value) ? value : value ? [value] : [];\nfunction Root(props: ToggleButtonGroupProps) {\n return (\n <OverlayDirection dir={props.dir}>\n <ToggleButtonSizeContext.Provider value={props.size ?? 'md'}>\n <AriaToggleButtonGroup\n aria-label={props.label}\n dir={props.dir}\n className={[\n 'button-group',\n 'toggle-button-group',\n props.isDetached && 'button-group--detached',\n props.fullWidth && 'button-group--full-width',\n ]\n .filter(Boolean)\n .join(' ')}\n orientation={props.orientation ?? 'horizontal'}\n selectionMode={props.selectionMode ?? 'single'}\n selectedKeys={props.value === undefined ? undefined : keys(props.value)}\n defaultSelectedKeys={keys(props.defaultValue)}\n onSelectionChange={(selected) => {\n if (props.isDisabled) return;\n const next = Array.from(selected, String);\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else props.onChange?.(next[0] ?? null);\n }}\n isDisabled={props.isDisabled}\n disallowEmptySelection={props.disallowEmptySelection}\n >\n {props.children}\n </AriaToggleButtonGroup>\n </ToggleButtonSizeContext.Provider>\n </OverlayDirection>\n );\n}\nexport const ToggleButtonGroup = /* @__PURE__ */ Object.assign(Root, {\n Separator: ButtonGroupSeparator,\n});\n","interface IconProps {\n className?: string;\n}\n\nexport function ChevronIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n );\n}\n\nexport function CheckIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3.5 8.5l3 3 6-6.5\" />\n </svg>\n );\n}\n\nexport function CloseIcon({ className }: IconProps) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n );\n}\n","import { useId } from 'react';\n\nexport interface FieldFeedbackProps {\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n}\n\nexport function useFeedback({ description, errorMessage, isInvalid }: FieldFeedbackProps) {\n const id = useId();\n const descriptionId = `${id}-description`;\n const errorId = `${id}-error`;\n const showError = !!(isInvalid && errorMessage);\n return {\n describedBy:\n [description && descriptionId, showError && errorId].filter(Boolean).join(' ') || undefined,\n feedback: (\n <>\n {description && (\n <span id={descriptionId} className=\"input__description\">\n {description}\n </span>\n )}\n {showError && (\n <span id={errorId} className=\"input__error\">\n {errorMessage}\n </span>\n )}\n </>\n ),\n };\n}\n","import { useEffect, useRef } from 'react';\nexport function SelectionValidation({\n hasValue,\n required,\n disabled,\n onInvalid,\n onReset,\n onResetStart,\n}: {\n hasValue: boolean;\n required?: boolean;\n disabled?: boolean;\n onInvalid: () => void;\n onReset: (cancelled: boolean) => void;\n onResetStart: () => void;\n}) {\n const ref = useRef<HTMLInputElement>(null);\n useEffect(() => {\n const form = ref.current?.form;\n const reset = (event: Event) => {\n // Capture before headless controls react to reset; only commit after cancellation is known.\n onResetStart();\n // A new task is required: browser microtasks can run between capture and bubble listeners.\n setTimeout(() => onReset(event.defaultPrevented), 0);\n };\n form?.addEventListener('reset', reset, true);\n return () => form?.removeEventListener('reset', reset, true);\n }, [onReset, onResetStart]);\n return (\n <input\n ref={ref}\n className=\"selection__validation\"\n type=\"text\"\n tabIndex={-1}\n aria-hidden=\"true\"\n autoComplete=\"off\"\n required={required}\n disabled={disabled}\n value={hasValue ? 'selected' : ''}\n onChange={() => {}}\n onInvalid={(event) => {\n event.preventDefault();\n onInvalid();\n }}\n />\n );\n}\n","export interface SelectOption {\n id: string;\n label: string;\n description?: string;\n isDisabled?: boolean;\n}\nexport function selectionIds(value: unknown, options: SelectOption[], multiple: boolean): string[] {\n const requested = new Set(\n Array.isArray(value) ? value : typeof value === 'string' ? [value] : [],\n );\n const ids = [\n ...new Set(options.filter((o) => o.id !== '' && requested.has(o.id)).map((o) => o.id)),\n ];\n return multiple ? ids : ids.slice(0, 1);\n}\nexport function filterOptions(options: SelectOption[], query: string): SelectOption[] {\n const fold = (text: string) => text.normalize('NFD').replace(/\\p{M}/gu, '').toLowerCase();\n const search = fold(query.trim());\n return options.filter((o) => fold(`${o.label} ${o.description ?? ''}`).includes(search));\n}\n","import { useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport {\n Button,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n Select as AriaSelect,\n SelectValue,\n} from 'react-aria-components/Select';\nimport { CloseIcon, CheckIcon, ChevronIcon } from './icons.js';\nimport { useFeedback } from './field.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nexport type { SelectOption } from './selection-options.js';\nexport type SelectSize = 'sm' | 'md' | 'lg';\nexport type SelectVariant = 'primary' | 'secondary' | 'outline';\ninterface SelectCommonProps {\n /** Activates an option even when it is already selected (for linked editors). */\n onAction?: (value: string) => void;\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n /** Hide visually while retaining the accessible label. */\n hideLabel?: boolean;\n /** Defaults to true to preserve the existing full-width trigger. */\n fullWidth?: boolean;\n /** Decorative noninteractive icon before the value/input. */\n startContent?: ReactNode;\n placeholder?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n isClearable?: boolean;\n clearLabel?: string;\n onClear?: () => void;\n renderOption?: (option: SelectOption) => ReactNode;\n renderValue?: (selected: SelectOption[]) => ReactNode;\n}\nexport type SelectProps = SelectCommonProps &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nexport function Select(props: Extract<SelectProps, { selectionMode: 'multiple' }>): ReactNode;\nexport function Select(props: Exclude<SelectProps, { selectionMode: 'multiple' }>): ReactNode;\nexport function Select(props: SelectProps) {\n const {\n label,\n options,\n placeholder,\n isDisabled,\n isRequired,\n isClearable,\n clearLabel = 'Hapus pilihan',\n dir,\n } = props;\n const multiple = props.selectionMode === 'multiple';\n const [local, setLocal] = useState<unknown>(props.defaultValue);\n const [tried, setTried] = useState(false);\n const resetting = useRef(false);\n const trigger = useRef<HTMLButtonElement>(null);\n const ids = selectionIds(props.value !== undefined ? props.value : local, options, multiple);\n const selected = options.filter((o) => ids.includes(o.id));\n const invalid = props.isInvalid || (tried && isRequired && ids.length === 0);\n const { describedBy, feedback } = useFeedback({\n description: props.description,\n isInvalid: invalid,\n errorMessage:\n props.errorMessage ??\n (isRequired && ids.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n });\n function update(value: unknown) {\n if (isDisabled || resetting.current) return;\n const next = selectionIds(value, options, multiple);\n setLocal(multiple ? next : (next[0] ?? null));\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else if (next[0] !== undefined) props.onChange?.(next[0]);\n }\n function clear() {\n if (isDisabled || resetting.current) return;\n setLocal(multiple ? [] : null);\n if (props.selectionMode === 'multiple') props.onChange?.([]);\n props.onClear?.();\n trigger.current?.focus();\n }\n const select = (\n <AriaSelect<SelectOption, 'single' | 'multiple'>\n className={[\n 'select',\n `select--${props.size ?? 'md'}`,\n `select--${props.variant ?? 'primary'}`,\n props.hideLabel && 'select--label-hidden',\n props.fullWidth === false && 'select--fit',\n ]\n .filter(Boolean)\n .join(' ')}\n data-multiple={multiple || undefined}\n selectionMode={multiple ? 'multiple' : 'single'}\n value={multiple ? ids : (ids[0] ?? null)}\n onChange={update}\n placeholder={placeholder}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={!!invalid}\n validationBehavior=\"aria\"\n aria-describedby={describedBy}\n >\n <Label className=\"select__label\">\n {label}\n {isRequired && (\n <span className=\"selection__required\" aria-hidden=\"true\">\n {' '}\n *\n </span>\n )}\n </Label>\n <div className=\"select__control\" data-clearable={isClearable || undefined}>\n <Button ref={trigger} className=\"select__trigger\" aria-describedby={describedBy}>\n {props.startContent && (\n <span className=\"selection__leading\" aria-hidden=\"true\">\n {props.startContent}\n </span>\n )}\n <SelectValue className=\"select__value\">\n {() =>\n selected.length\n ? (props.renderValue?.(selected) ?? selected.map((o) => o.label).join(', '))\n : placeholder\n }\n </SelectValue>\n <ChevronIcon className=\"select__icon\" />\n </Button>\n {isClearable && (\n <button\n type=\"button\"\n className=\"selection__clear\"\n data-empty={ids.length === 0 || undefined}\n aria-hidden={ids.length === 0 || undefined}\n tabIndex={ids.length === 0 ? -1 : undefined}\n aria-label={clearLabel}\n disabled={isDisabled || ids.length === 0}\n onClick={clear}\n >\n <CloseIcon className=\"selection__close-icon\" />\n </button>\n )}\n </div>\n <Popover className=\"select__popover\">\n <ListBox className=\"select__list\">\n {options.map((option) => (\n <ListBoxItem\n onPress={props.onAction ? () => props.onAction!(option.id) : undefined}\n key={option.id}\n id={option.id}\n textValue={option.label}\n isDisabled={option.isDisabled}\n className=\"select__item\"\n >\n <span className=\"select__item-label\">\n {props.renderOption?.(option) ?? (\n <>\n {option.label}\n {option.description && (\n <span className=\"selection__description\">{option.description}</span>\n )}\n </>\n )}\n </span>\n <CheckIcon className=\"select__check\" />\n </ListBoxItem>\n ))}\n </ListBox>\n </Popover>\n {feedback}\n {props.name &&\n (multiple ? ids : [ids[0] ?? '']).map((id, i) => (\n <input key={i} type=\"hidden\" name={props.name} value={id} disabled={isDisabled} />\n ))}\n <SelectionValidation\n hasValue={ids.length > 0}\n required={isRequired}\n disabled={isDisabled}\n onInvalid={() => {\n setTried(true);\n trigger.current?.focus();\n }}\n onResetStart={() => {\n resetting.current = true;\n }}\n onReset={(cancelled) => {\n resetting.current = false;\n if (!cancelled) {\n setTried(false);\n if (props.value === undefined) setLocal(props.defaultValue);\n }\n }}\n />\n </AriaSelect>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{select}</I18nProvider>\n ) : (\n select\n );\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { Select, type SelectProps, type SelectSize, type SelectVariant } from './Select.js';\nexport interface SelectGroupProps {\n label: string;\n children: ReactNode;\n size?: SelectSize;\n variant?: SelectVariant;\n fullWidth?: boolean;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\n/** Joins direct Select children. Each child retains its own value and accessible label. */\nexport function SelectGroup({\n label,\n children,\n size,\n variant,\n fullWidth = true,\n isDisabled,\n dir,\n}: SelectGroupProps) {\n function defaults(nodes: ReactNode): ReactNode {\n return Children.map(nodes, (child) => {\n if (!isValidElement(child)) return child;\n if (child.type === Fragment)\n return cloneElement(\n child as ReactElement<{ children: ReactNode }>,\n {},\n defaults((child.props as { children: ReactNode }).children),\n );\n if (child.type !== Select) return child;\n const select = child as ReactElement<SelectProps>;\n return cloneElement(select, {\n size: select.props.size ?? size,\n variant: select.props.variant ?? variant,\n hideLabel: select.props.hideLabel ?? true,\n fullWidth: select.props.fullWidth ?? fullWidth,\n isDisabled: !!isDisabled || select.props.isDisabled,\n dir: select.props.dir ?? dir,\n });\n });\n }\n return (\n <fieldset\n className={['select-group', !fullWidth && 'select-group--fit'].filter(Boolean).join(' ')}\n disabled={isDisabled}\n dir={dir}\n >\n <legend className=\"select-group__legend\">{label}</legend>\n <div className=\"select-group__controls\">{defaults(children)}</div>\n </fieldset>\n );\n}\n","import {\n FieldError,\n Input as AriaInput,\n Label,\n Text,\n TextField,\n} from 'react-aria-components/TextField';\nimport {\n forwardRef,\n useImperativeHandle,\n useRef,\n type FocusEventHandler,\n type KeyboardEventHandler,\n type ReactNode,\n} from 'react';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url';\nexport type InputVariant = 'primary' | 'secondary';\nexport type InputMode =\n 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\nexport type InputEnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';\n\n/** A labeled single-line string field. Numeric/date parsing is a separate contract. */\nexport interface InputProps {\n label: string;\n value?: string;\n defaultValue?: string;\n /** Receives the string value, not a DOM event. Clear with an empty string. */\n onChange?: (value: string) => void;\n description?: string;\n /** Shown only when isInvalid is true; the application owns validation. */\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n /** Fill the available width. Defaults to true to preserve the existing field layout. */\n fullWidth?: boolean;\n /** Leading/trailing content. Mark decorative icons aria-hidden; name interactive buttons. */\n prefix?: ReactNode;\n suffix?: ReactNode;\n name?: string;\n id?: string;\n autoComplete?: string;\n maxLength?: number;\n minLength?: number;\n pattern?: string;\n inputMode?: InputMode;\n enterKeyHint?: InputEnterKeyHint;\n autoFocus?: boolean;\n spellCheck?: boolean;\n form?: string;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n onKeyUp?: KeyboardEventHandler<HTMLInputElement>;\n dir?: 'ltr' | 'rtl';\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n label,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n placeholder,\n type = 'text',\n size = 'md',\n variant = 'primary',\n fullWidth = true,\n prefix,\n suffix,\n name,\n id,\n autoComplete,\n maxLength,\n minLength,\n pattern,\n inputMode,\n enterKeyHint,\n autoFocus,\n spellCheck,\n form,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n dir,\n }: InputProps,\n ref,\n) {\n const control = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => control.current!);\n const hasAdornment = prefix != null || suffix != null;\n /* eslint-disable jsx-a11y/no-autofocus -- This forwards the caller's explicit opt-in; autofocus is never enabled by default. */\n const input = (\n <AriaInput\n ref={control}\n className=\"input__control\"\n placeholder={placeholder}\n required={isRequired}\n minLength={minLength}\n pattern={pattern}\n inputMode={inputMode}\n enterKeyHint={enterKeyHint}\n autoFocus={autoFocus}\n spellCheck={spellCheck}\n form={form}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n />\n );\n /* eslint-enable jsx-a11y/no-autofocus */\n return (\n <TextField\n className={`input input--${size} input--${variant}${fullWidth ? '' : ' input--fit'}`}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n validationBehavior=\"aria\"\n type={type}\n name={name}\n id={id}\n autoComplete={autoComplete}\n maxLength={maxLength}\n dir={dir}\n >\n <Label className=\"input__label\">{label}</Label>\n <fieldset className=\"input__boundary\" role=\"presentation\" disabled={isDisabled}>\n <div\n className={hasAdornment ? 'input__group' : 'input__plain'}\n data-invalid={isInvalid || undefined}\n data-readonly={isReadOnly || undefined}\n onPointerDown={(event) => {\n if (\n !isDisabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n control.current?.focus();\n }\n }}\n >\n {prefix != null && <span className=\"input__prefix\">{prefix}</span>}\n {input}\n {suffix != null && <span className=\"input__suffix\">{suffix}</span>}\n </div>\n </fieldset>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </TextField>\n );\n});\n","import {\n FieldError,\n TextArea as AriaTextArea,\n Label,\n Text,\n TextField,\n} from 'react-aria-components/TextField';\n\n/** A labeled multiline string field; validation is owned by the application. */\nexport interface TextareaProps {\n label: string;\n value?: string;\n defaultValue?: string;\n /** Receives the string value, not a DOM event. Clear with an empty string. */\n onChange?: (value: string) => void;\n description?: string;\n /** Shown only when isInvalid is true; the application owns validation. */\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n placeholder?: string;\n rows?: number;\n resize?: 'vertical' | 'none';\n name?: string;\n id?: string;\n autoComplete?: string;\n maxLength?: number;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Textarea({\n label,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n placeholder,\n rows = 3,\n resize = 'vertical',\n name,\n id,\n autoComplete,\n maxLength,\n dir,\n}: TextareaProps) {\n return (\n <TextField\n className=\"input textarea\"\n data-resize={resize}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n validationBehavior=\"aria\"\n name={name}\n id={id}\n autoComplete={autoComplete}\n maxLength={maxLength}\n dir={dir}\n >\n <Label className=\"input__label\">{label}</Label>\n <AriaTextArea\n className=\"input__control textarea__control\"\n rows={rows}\n placeholder={placeholder}\n required={isRequired}\n />\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </TextField>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Label as AriaLabel } from 'react-aria-components/Label';\n\nexport interface LabelProps {\n children: ReactNode;\n htmlFor?: string;\n id?: string;\n}\n\n/** Associates visible text with a separately rendered control. */\nexport function Label({ children, htmlFor, id }: LabelProps) {\n return (\n <AriaLabel className=\"label\" htmlFor={htmlFor} id={id}>\n {children}\n </AriaLabel>\n );\n}\n","import { Checkbox as AriaCheckbox } from 'react-aria-components/Checkbox';\nimport { CheckIcon } from './icons.js';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\n\nexport interface CheckboxProps extends FieldFeedbackProps {\n label: string;\n isSelected?: boolean;\n defaultSelected?: boolean;\n onChange?: (selected: boolean) => void;\n isDisabled?: boolean;\n isRequired?: boolean;\n /** Presentational mixed state; the application clears it after a change. */\n isIndeterminate?: boolean;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Checkbox({\n label,\n description,\n errorMessage,\n isInvalid = false,\n isSelected,\n defaultSelected,\n onChange,\n isDisabled = false,\n isRequired = false,\n isIndeterminate = false,\n name,\n value = 'on',\n id,\n dir,\n}: CheckboxProps) {\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n return (\n <div className=\"input\" dir={dir}>\n <AriaCheckbox\n className=\"choice\"\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n onChange={onChange}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={isInvalid}\n isIndeterminate={isIndeterminate}\n validationBehavior=\"aria\"\n name={name}\n value={value}\n id={id}\n aria-describedby={describedBy}\n aria-invalid={isInvalid || undefined}\n >\n {({ isSelected: selected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"checkbox__control\"\n data-state={isIndeterminate ? 'indeterminate' : selected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <CheckIcon className=\"checkbox__check\" />\n <span className=\"checkbox__dash\" />\n </span>\n <span className=\"choice__label\">{label}</span>\n </>\n )}\n </AriaCheckbox>\n {feedback}\n </div>\n );\n}\n","import { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { Label, Radio, RadioGroup as AriaRadioGroup } from 'react-aria-components/RadioGroup';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\n\nexport interface RadioOption {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport interface RadioGroupProps extends FieldFeedbackProps {\n label: string;\n options: RadioOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n isDisabled?: boolean;\n isRequired?: boolean;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n}\n\nexport function RadioGroup({\n label,\n options,\n value,\n defaultValue,\n onChange,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isRequired = false,\n name,\n id,\n orientation = 'vertical',\n dir,\n}: RadioGroupProps) {\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n const group = (\n <AriaRadioGroup\n className=\"input radio-group\"\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n name={name}\n id={id}\n orientation={orientation}\n dir={dir}\n aria-describedby={describedBy}\n >\n <Label className=\"label\">{label}</Label>\n <div className=\"radio-group__items\" data-orientation={orientation}>\n {options.map((option) => (\n <Radio\n key={option.id}\n value={option.id}\n isDisabled={option.isDisabled}\n className=\"choice\"\n >\n {({ isSelected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"radio__control\"\n data-state={isSelected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <span className=\"radio__dot\" />\n </span>\n <span className=\"choice__label\">{option.label}</span>\n </>\n )}\n </Radio>\n ))}\n </div>\n {feedback}\n </AriaRadioGroup>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{group}</I18nProvider>\n ) : (\n group\n );\n}\n","import { FieldError, SwitchField, SwitchButton, Text } from 'react-aria-components/Switch';\n\nimport type { FieldFeedbackProps } from './field.js';\n\nexport interface SwitchProps extends FieldFeedbackProps {\n label: string;\n isSelected?: boolean;\n defaultSelected?: boolean;\n onChange?: (selected: boolean) => void;\n isDisabled?: boolean;\n\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Switch({\n label,\n description,\n errorMessage,\n isInvalid = false,\n isSelected,\n defaultSelected,\n onChange,\n isDisabled = false,\n name,\n value = 'on',\n id,\n dir,\n}: SwitchProps) {\n return (\n <SwitchField\n className=\"input\"\n dir={dir}\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n onChange={onChange}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n name={name}\n value={value}\n id={id}\n >\n <SwitchButton className=\"choice\">\n {({ isSelected: selected, isDisabled: disabled, isFocusVisible }) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"switch__control\"\n data-state={selected ? 'checked' : 'unchecked'}\n data-disabled={disabled || undefined}\n data-invalid={isInvalid || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n <span className=\"switch__thumb\" />\n </span>\n <span className=\"choice__label\">{label}</span>\n </>\n )}\n </SwitchButton>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n </SwitchField>\n );\n}\n","import { createContext } from 'react';\n\n/** Application-owned errors, keyed by the Field name. Clear entries explicitly. */\nexport type ValidationErrors = Readonly<Record<string, string | undefined>>;\nexport const FormErrorsContext = /* @__PURE__ */ createContext<ValidationErrors>({});\n","import { useContext, useId, type ReactNode } from 'react';\nimport { Label } from './Label.js';\nimport { useFeedback } from './field.js';\nimport { FormErrorsContext } from './form-context.js';\n\n/** Bind these props to exactly one native input, textarea, or select. */\nexport interface FieldControlProps {\n id: string;\n name: string;\n className: string;\n disabled: boolean;\n readOnly: boolean;\n required: boolean;\n 'aria-required': true | undefined;\n 'aria-invalid': true | undefined;\n 'aria-describedby': string | undefined;\n}\nexport interface FieldRenderProps {\n controlProps: FieldControlProps;\n isInvalid: boolean;\n errorMessage: string | undefined;\n}\n/** Experimental composition API; the application owns the control value. */\nexport interface FieldProps {\n label: string;\n name: string;\n children: (field: FieldRenderProps) => ReactNode;\n id?: string;\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Field({\n label,\n name,\n children,\n id,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n dir,\n}: FieldProps) {\n const errors = useContext(FormErrorsContext);\n const error =\n Object.hasOwn(errors, name) && typeof errors[name] === 'string'\n ? errors[name] || undefined\n : undefined;\n const invalid = isInvalid || !!error;\n const message = (isInvalid && errorMessage) || error || undefined;\n const generated = useId();\n const controlId = id ?? generated;\n const { describedBy, feedback } = useFeedback({\n description,\n isInvalid: invalid,\n errorMessage: message,\n });\n const controlProps: FieldControlProps = {\n id: controlId,\n name,\n className: 'input__control field__control',\n disabled: isDisabled,\n readOnly: isReadOnly,\n required: isRequired,\n 'aria-required': isRequired || undefined,\n 'aria-invalid': invalid || undefined,\n 'aria-describedby': describedBy,\n };\n return (\n <div className=\"input field\" dir={dir}>\n <Label htmlFor={controlId}>{label}</Label>\n {children({ controlProps, isInvalid: invalid, errorMessage: message })}\n {feedback}\n </div>\n );\n}\n","import type { FormEvent, ReactNode } from 'react';\nimport { FormErrorsContext, type ValidationErrors } from './form-context.js';\n\n/** Experimental client form. Submission always prevents page navigation. */\nexport interface FormProps {\n children: ReactNode;\n validationErrors?: ValidationErrors;\n onSubmit?: (data: FormData, event: FormEvent<HTMLFormElement>) => void;\n /** Prevent default and reset application state when using controlled values. */\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n /** Skips browser constraints; explicit aria-invalid state still blocks submission. */\n noValidate?: boolean;\n id?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n dir?: 'ltr' | 'rtl';\n}\n\nexport function Form({\n children,\n validationErrors = {},\n onSubmit,\n onReset,\n noValidate = false,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': labelledBy,\n dir,\n}: FormProps) {\n function submit(event: FormEvent<HTMLFormElement>) {\n event.preventDefault();\n const form = event.currentTarget;\n if (!noValidate && !form.checkValidity()) {\n form.reportValidity();\n return;\n }\n // ARIA validation is application-owned and also applies to labeled Kazee controls.\n for (const element of form.querySelectorAll<HTMLElement>('[aria-invalid=\"true\"]')) {\n const selector = 'input:not([type=\"hidden\"]), textarea, select, button, [role=\"listbox\"]';\n const controls = element.matches(selector)\n ? [element]\n : [...element.querySelectorAll<HTMLElement>(selector)];\n const invalid = controls.find(\n (control) => !control.matches(':disabled, [aria-disabled=\"true\"]'),\n );\n if (invalid) {\n invalid.focus();\n return;\n }\n }\n onSubmit?.(new FormData(form, (event.nativeEvent as SubmitEvent).submitter), event);\n }\n return (\n <FormErrorsContext.Provider value={validationErrors}>\n <form\n className=\"form\"\n id={id}\n dir={dir}\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n noValidate={noValidate}\n onSubmit={submit}\n onReset={onReset}\n >\n {children}\n </form>\n </FormErrorsContext.Provider>\n );\n}\n","export interface ListboxOption {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type ListboxSelectionMode = 'single' | 'multiple';\n/** Stable option order, unique enabled IDs, and at most one ID in single mode. */\nexport function listboxSelection(\n value: readonly string[],\n options: ListboxOption[],\n mode: ListboxSelectionMode,\n): string[] {\n const requested = new Set(value);\n const seen = new Set<string>();\n const result: string[] = [];\n for (const option of options) {\n if (option.id && !option.isDisabled && requested.has(option.id) && !seen.has(option.id)) {\n seen.add(option.id);\n result.push(option.id);\n if (mode === 'single') break;\n }\n }\n return result;\n}\n","import { useId, useRef, useState } from 'react';\nimport { ListBox, ListBoxItem, type Selection } from 'react-aria-components/ListBox';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { CheckIcon } from './icons.js';\nimport { useFeedback, type FieldFeedbackProps } from './field.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\n\nexport interface ListboxProps extends FieldFeedbackProps {\n label: string;\n options: ListboxOption[];\n /** Always an array; empty selection is []. */\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n selectionMode?: ListboxSelectionMode;\n isDisabled?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n}\nexport function Listbox({\n label,\n options,\n value,\n defaultValue = [],\n onChange,\n selectionMode = 'single',\n isDisabled = false,\n description,\n errorMessage,\n isInvalid = false,\n name,\n id,\n dir,\n emptyMessage = 'Tidak ada pilihan.',\n}: ListboxProps) {\n const [local, setLocal] = useState(defaultValue);\n const selected = listboxSelection(value ?? local, options, selectionMode);\n const nodeRef = useRef<HTMLDivElement | null>(null);\n const tabIndexBeforeDisable = useRef<string | null | undefined>(undefined);\n function listRef(node: HTMLDivElement | null) {\n if (!node) return;\n if (nodeRef.current !== node) tabIndexBeforeDisable.current = undefined;\n nodeRef.current = node;\n // The public ListBox ref bridges ARIA props currently overwritten by its field hook.\n if (isInvalid) node.setAttribute('aria-invalid', 'true');\n else node.removeAttribute('aria-invalid');\n if (isDisabled) {\n node.setAttribute('aria-disabled', 'true');\n if (tabIndexBeforeDisable.current === undefined)\n tabIndexBeforeDisable.current = node.getAttribute('tabindex');\n node.tabIndex = -1;\n } else {\n node.removeAttribute('aria-disabled');\n if (tabIndexBeforeDisable.current !== undefined) {\n if (tabIndexBeforeDisable.current === null) node.removeAttribute('tabindex');\n else node.setAttribute('tabindex', tabIndexBeforeDisable.current);\n tabIndexBeforeDisable.current = undefined;\n }\n }\n }\n const generated = useId();\n const labelId = `${id ?? generated}-label`;\n const { describedBy, feedback } = useFeedback({ description, errorMessage, isInvalid });\n function change(keys: Selection) {\n if (isDisabled || keys === 'all') return;\n const next = listboxSelection([...keys].map(String), options, selectionMode);\n if (next.length === selected.length && next.every((key, index) => key === selected[index]))\n return;\n setLocal(next);\n onChange?.(next);\n }\n const list = (\n <div className=\"input listbox\" dir={dir}>\n <span id={labelId} className=\"label\">\n {label}\n </span>\n <ListBox\n ref={listRef}\n id={id}\n className=\"listbox__list\"\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n aria-invalid={isInvalid || undefined}\n aria-disabled={isDisabled || undefined}\n selectionMode={selectionMode}\n selectionBehavior={selectionMode === 'single' ? 'replace' : 'toggle'}\n disallowEmptySelection={selectionMode === 'single'}\n selectedKeys={selected}\n onSelectionChange={change}\n disabledKeys={options\n .filter((option) => isDisabled || option.isDisabled)\n .map((option) => option.id)}\n renderEmptyState={() => <span className=\"listbox__empty\">{emptyMessage}</span>}\n >\n {options.map((option) => (\n <ListBoxItem\n key={option.id}\n id={option.id}\n textValue={option.label}\n isDisabled={isDisabled || option.isDisabled}\n className=\"listbox__item\"\n >\n <span className=\"listbox__text\">{option.label}</span>\n <CheckIcon className=\"listbox__check\" />\n </ListBoxItem>\n ))}\n </ListBox>\n {feedback}\n {name &&\n selected.map((key) => (\n <input key={key} type=\"hidden\" name={name} value={key} disabled={isDisabled} />\n ))}\n </div>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{list}</I18nProvider>\n ) : (\n list\n );\n}\n","import { useId, useRef, useState } from 'react';\nimport {\n NumberField as AriaNumberField,\n Input,\n Label,\n Group,\n Button,\n Text,\n FieldError,\n} from 'react-aria-components/NumberField';\nimport { ButtonContext } from 'react-aria-components/Button';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nexport interface NumberFieldProps {\n label: string;\n value?: number | null;\n defaultValue?: number | null;\n /** Committed numeric value; empty or non-finite values become null. */\n onChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n}\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nexport function NumberField({\n label,\n value,\n defaultValue = null,\n onChange,\n min,\n max,\n step = 1,\n locale = 'id-ID',\n formatOptions,\n description,\n errorMessage,\n isInvalid = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n name,\n id,\n dir,\n incrementLabel,\n decrementLabel,\n}: NumberFieldProps) {\n const buttonId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const [local, setLocal] = useState(() => finite(defaultValue));\n const selected = finite(value === undefined ? local : value);\n function change(next: number) {\n if (isDisabled || isReadOnly) return;\n const number = finite(next);\n setLocal(number);\n onChange?.(number);\n }\n return (\n <I18nProvider locale={locale}>\n <AriaNumberField\n className=\"input number-field\"\n id={id}\n dir={dir}\n value={selected ?? Number.NaN}\n onChange={change}\n minValue={min}\n maxValue={max}\n step={step}\n formatOptions={formatOptions}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n isInvalid={isInvalid}\n validationBehavior=\"aria\"\n isWheelDisabled\n >\n {({ state }) => {\n const empty = state.inputValue.trim() === '';\n // Reka starts empty stepping at min (or zero); use the public state API to match it.\n function startEmpty() {\n const start = Math.min(max ?? Infinity, Math.max(min ?? -Infinity, min ?? 0));\n state.setNumberValue(start);\n inputRef.current?.focus();\n }\n return (\n <>\n <Label className=\"label\">{label}</Label>\n <Group\n className=\"number-field__group\"\n onKeyDownCapture={(event) => {\n if (\n isDisabled ||\n isReadOnly ||\n !empty ||\n !['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown'].includes(event.key)\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n startEmpty();\n }}\n >\n <ButtonContext.Consumer>\n {(buttonContext) => (\n <ButtonContext.Provider value={empty ? null : buttonContext}>\n <Button\n slot={empty ? undefined : 'decrement'}\n onPress={empty ? startEmpty : undefined}\n isDisabled={empty ? isDisabled || isReadOnly : undefined}\n preventFocusOnPress\n className=\"number-field__step\"\n aria-label={decrementLabel ?? `Kurangi ${label}`}\n aria-labelledby={`${buttonId}-decrement`}\n excludeFromTabOrder\n >\n <span id={`${buttonId}-decrement`} hidden>\n {decrementLabel ?? `Kurangi ${label}`}\n </span>\n {'\\u2212'}\n </Button>\n <Input\n ref={inputRef}\n className=\"number-field__control\"\n required={isRequired}\n />\n <Button\n slot={empty ? undefined : 'increment'}\n onPress={empty ? startEmpty : undefined}\n isDisabled={empty ? isDisabled || isReadOnly : undefined}\n preventFocusOnPress\n className=\"number-field__step\"\n aria-label={incrementLabel ?? `Tambah ${label}`}\n aria-labelledby={`${buttonId}-increment`}\n excludeFromTabOrder\n >\n <span id={`${buttonId}-increment`} hidden>\n {incrementLabel ?? `Tambah ${label}`}\n </span>\n +\n </Button>\n </ButtonContext.Provider>\n )}\n </ButtonContext.Consumer>\n </Group>\n {description && (\n <Text slot=\"description\" className=\"input__description\">\n {description}\n </Text>\n )}\n {isInvalid && errorMessage && (\n <FieldError className=\"input__error\">{errorMessage}</FieldError>\n )}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={selected === null ? '' : String(selected)}\n disabled={isDisabled}\n />\n )}\n </>\n );\n }}\n </AriaNumberField>\n </I18nProvider>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n title?: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n /** Custom leading header content; replaces title/description, preserving actions. */\n header?: ReactNode;\n /** Badge or supplementary controls next to the title, outside its heading. */\n titleExtras?: ReactNode;\n actions?: ReactNode;\n footer?: ReactNode;\n}\n\n/** A content container; place links and buttons inside rather than making it clickable. */\nexport function Card({\n title,\n description,\n headingLevel = 3,\n actions,\n header,\n titleExtras,\n footer,\n children,\n className,\n ...props\n}: CardProps) {\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n return (\n <div {...props} className={['card', className].filter(Boolean).join(' ')}>\n {(title || description || actions || header || titleExtras) && (\n <div className=\"card__header\">\n {(title || description || header || titleExtras) && (\n <div className=\"card__heading\">\n {header ?? (\n <>\n {titleExtras ? (\n <div className=\"card__title-row\">\n {title && <Heading className=\"card__title\">{title}</Heading>}\n {titleExtras}\n </div>\n ) : (\n title && <Heading className=\"card__title\">{title}</Heading>\n )}\n {description && <p className=\"card__description\">{description}</p>}\n </>\n )}\n </div>\n )}\n {actions && <div className=\"card__actions\">{actions}</div>}\n </div>\n )}\n <div className=\"card__content\">{children}</div>\n {footer && <div className=\"card__footer\">{footer}</div>}\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport type BadgeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: BadgeTone;\n}\n/** Static status text. Dynamic announcements belong in an application-owned live region. */\nexport function Badge({ tone = 'neutral', className, ...props }: BadgeProps) {\n return (\n <span {...props} className={['badge', className].filter(Boolean).join(' ')} data-tone={tone} />\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport interface SkeletonProps extends Omit<\n HTMLAttributes<HTMLSpanElement>,\n 'children' | 'aria-hidden'\n> {\n shape?: 'rectangle' | 'circle';\n animated?: boolean;\n}\n/** Decorative placeholder. Set aria-busy and loading text on the surrounding content. */\nexport function Skeleton({\n shape = 'rectangle',\n animated = true,\n className,\n ...props\n}: SkeletonProps) {\n return (\n <span\n {...props}\n className={['skeleton', className].filter(Boolean).join(' ')}\n data-shape={shape}\n data-animated={animated ? 'true' : undefined}\n aria-hidden=\"true\"\n />\n );\n}\n","import type { HTMLAttributes } from 'react';\nexport interface SeparatorProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children' | 'role' | 'aria-hidden' | 'aria-orientation'\n> {\n orientation?: 'horizontal' | 'vertical';\n decorative?: boolean;\n}\nexport function Separator({\n orientation = 'horizontal',\n decorative = true,\n className,\n ...props\n}: SeparatorProps) {\n return (\n <div\n {...props}\n className={['separator', className].filter(Boolean).join(' ')}\n data-orientation={orientation}\n role={decorative ? 'presentation' : 'separator'}\n aria-hidden={decorative ? 'true' : undefined}\n aria-orientation={decorative ? undefined : orientation}\n />\n );\n}\n","// Framework-neutral DOM behavior. Keep in sync with packages/vue/src/tabs-indicator.ts.\nexport function mountTabsIndicator(container: HTMLElement): () => void {\n const list = container.querySelector<HTMLElement>('[role=\"tablist\"]');\n if (!list) return () => {};\n let frame = 0,\n disposed = false,\n previous: Element | null = null,\n armed = false;\n const prev = container.querySelector<HTMLButtonElement>('[data-tabs-scroll=\"prev\"]');\n const next = container.querySelector<HTMLButtonElement>('[data-tabs-scroll=\"next\"]');\n const vertical = () => list.getAttribute('aria-orientation') === 'vertical';\n const reduced = () => window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n function measure() {\n if (disposed) return;\n const selected = list!.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]');\n const rect = list!.getBoundingClientRect();\n if (selected && rect.width > 0 && rect.height > 0) {\n const tab = selected.getBoundingClientRect();\n const border = getComputedStyle(list!);\n list!.style.setProperty(\n '--tabs-indicator-x',\n `${tab.left - rect.left + list!.scrollLeft - (parseFloat(border.borderLeftWidth) || 0)}px`,\n );\n list!.style.setProperty(\n '--tabs-indicator-y',\n `${tab.top - rect.top + list!.scrollTop - (parseFloat(border.borderTopWidth) || 0)}px`,\n );\n list!.style.setProperty('--tabs-indicator-width', `${tab.width}px`);\n list!.style.setProperty('--tabs-indicator-height', `${tab.height}px`);\n list!.dataset.indicatorReady = 'true';\n if (!armed) {\n armed = true;\n requestAnimationFrame(() => {\n if (!disposed) list!.dataset.indicatorAnimated = 'true';\n });\n }\n if (selected !== previous && previous && typeof list!.scrollBy === 'function') {\n const delta = vertical()\n ? tab.top < rect.top\n ? tab.top - rect.top\n : tab.bottom > rect.bottom\n ? tab.bottom - rect.bottom\n : 0\n : tab.left < rect.left\n ? tab.left - rect.left\n : tab.right > rect.right\n ? tab.right - rect.right\n : 0;\n if (delta)\n list!.scrollBy({\n [vertical() ? 'top' : 'left']: delta,\n behavior: reduced() ? 'instant' : 'smooth',\n });\n }\n } else list!.dataset.indicatorReady = 'false';\n previous = selected;\n const max = vertical()\n ? list!.scrollHeight - list!.clientHeight\n : list!.scrollWidth - list!.clientWidth;\n const position = Math.abs(vertical() ? list!.scrollTop : list!.scrollLeft);\n list!.dataset.overflow = String(max > 1);\n if (prev) {\n prev.hidden = max <= 1;\n prev.disabled = position <= 1;\n }\n if (next) {\n next.hidden = max <= 1;\n next.disabled = position >= max - 1;\n }\n }\n function schedule() {\n if (disposed) return;\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(measure);\n }\n function scroll(direction: number) {\n if (typeof list!.scrollBy !== 'function') return;\n const rtl = !vertical() && getComputedStyle(list!).direction === 'rtl';\n const amount =\n (vertical() ? list!.clientHeight : list!.clientWidth) * 0.7 * direction * (rtl ? -1 : 1);\n list!.scrollBy({\n [vertical() ? 'top' : 'left']: amount,\n behavior: reduced() ? 'instant' : 'smooth',\n });\n }\n const backward = () => scroll(-1),\n forward = () => scroll(1);\n prev?.addEventListener('click', backward);\n next?.addEventListener('click', forward);\n list.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule);\n const observer = new MutationObserver(schedule);\n observer.observe(list, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['aria-selected', 'aria-orientation', 'aria-disabled', 'disabled'],\n });\n const resize = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(schedule);\n resize?.observe(list);\n for (const tab of list.querySelectorAll('[role=\"tab\"]')) resize?.observe(tab);\n void document.fonts?.ready.then(schedule);\n schedule();\n return () => {\n disposed = true;\n cancelAnimationFrame(frame);\n observer.disconnect();\n resize?.disconnect();\n prev?.removeEventListener('click', backward);\n next?.removeEventListener('click', forward);\n list.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n };\n}\n","import type { ButtonSize } from './Button.js';\nimport { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { Tabs as AriaTabs, TabList, Tab, TabPanel } from 'react-aria-components/Tabs';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport { mountTabsIndicator } from './tabs-indicator.js';\nexport interface TabItem {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'pill';\nexport interface TabsProps {\n label: string;\n variant?: TabsVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n align?: 'start' | 'center' | 'end';\n fullWidth?: boolean;\n /** Remove track inset and gaps. Pill uses an outlined track in this mode. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n renderIcon?: (item: TabItem) => ReactNode;\n previousLabel?: string;\n nextLabel?: string;\n extras?: ReactNode;\n actions?: ReactNode;\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n renderPanel: (item: TabItem) => ReactNode;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Tabs({\n label,\n variant = 'primary',\n size = 'md',\n orientation = 'horizontal',\n align = 'center',\n fullWidth = false,\n inset = 'default',\n showSeparators = false,\n renderIcon,\n previousLabel = 'Tab sebelumnya / Previous tabs',\n nextLabel = 'Tab berikutnya / Next tabs',\n extras,\n actions,\n items,\n value,\n defaultValue,\n onChange,\n renderPanel,\n activationMode = 'manual',\n dir,\n id,\n}: TabsProps) {\n const container = useRef<HTMLDivElement>(null);\n const hasToolbar = !!(extras || actions);\n useEffect(\n () => (container.current ? mountTabsIndicator(container.current) : undefined),\n [items.length, hasToolbar],\n );\n const [local, setLocal] = useState(defaultValue);\n const selected =\n items.find((item) => item.id === (value ?? local) && !item.isDisabled)?.id ??\n items.find((item) => !item.isDisabled)?.id;\n const list =\n items.length > 0 ? (\n <div className=\"tabs__list-container\" ref={container}>\n <button\n type=\"button\"\n className=\"tabs__scroll-button tabs__scroll-button--prev\"\n data-tabs-scroll=\"prev\"\n hidden\n aria-label={previousLabel}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m14 6-6 6 6 6\" />\n </svg>\n </button>\n <TabList className=\"tabs__list\" aria-label={label}>\n {items.map((item, index) => (\n <Tab className=\"tabs__trigger\" key={item.id} id={item.id} isDisabled={item.isDisabled}>\n {showSeparators && index > 0 && (\n <span className=\"tabs__separator\" aria-hidden=\"true\" />\n )}\n {renderIcon && (\n <span className=\"tabs__icon\" aria-hidden=\"true\">\n {renderIcon(item)}\n </span>\n )}\n <span className=\"tabs__label\">{item.label}</span>\n </Tab>\n ))}\n </TabList>\n <button\n type=\"button\"\n className=\"tabs__scroll-button tabs__scroll-button--next\"\n data-tabs-scroll=\"next\"\n hidden\n aria-label={nextLabel}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m10 6 6 6-6 6\" />\n </svg>\n </button>\n </div>\n ) : null;\n const content = (\n <AriaTabs\n className={[\n 'tabs',\n `tabs--${variant === 'default' ? 'primary' : variant}`,\n `tabs--align-${align}`,\n fullWidth && 'tabs--full-width',\n inset === 'none' && 'tabs--flush',\n size !== 'md' && `tabs--${size}`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={id}\n orientation={orientation}\n dir={dir}\n selectedKey={selected ?? ''}\n keyboardActivation={activationMode}\n disabledKeys={items.filter((item) => item.isDisabled).map((item) => item.id)}\n onSelectionChange={(key) => {\n const next = String(key);\n if (next !== selected && items.some((item) => item.id === next && !item.isDisabled)) {\n setLocal(next);\n onChange?.(next);\n }\n }}\n >\n {extras || actions ? (\n <div className=\"tabs__toolbar\">\n <div className=\"tabs__navigation\">\n {list}\n {extras && <div className=\"tabs__extras\">{extras}</div>}\n </div>\n {actions && <div className=\"tabs__actions\">{actions}</div>}\n </div>\n ) : (\n list\n )}\n {items.map((item) => (\n <TabPanel key={item.id} id={item.id} className=\"tabs__panel\">\n {renderPanel(item)}\n </TabPanel>\n ))}\n </AriaTabs>\n );\n return dir ? (\n <I18nProvider locale={dir === 'rtl' ? 'ar-EG' : 'en-US'}>{content}</I18nProvider>\n ) : (\n content\n );\n}\n","export function paginationModel(\n totalItems: number,\n pageSize: number,\n value: number,\n siblingCount = 1,\n) {\n const total = Number.isFinite(totalItems)\n ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(totalItems)))\n : 0;\n const size = Number.isFinite(pageSize) ? Math.max(1, Math.floor(pageSize)) : 10;\n const count = Math.max(1, Math.ceil(total / size));\n const current = Math.min(count, Math.max(1, Number.isFinite(value) ? Math.floor(value) : 1));\n const siblings = Number.isFinite(siblingCount)\n ? Math.min(2, Math.max(0, Math.floor(siblingCount)))\n : 1;\n const pages = new Set([1, count, current]);\n for (let offset = 1; offset <= siblings; offset++) {\n if (current - offset > 1) pages.add(current - offset);\n if (current + offset < count) pages.add(current + offset);\n }\n const ordered = [...pages].sort((a, b) => a - b);\n const entries: (number | string)[] = [];\n ordered.forEach((page, index) => {\n if (index && page - ordered[index - 1] > 1) entries.push(`gap-${page}`);\n entries.push(page);\n });\n return { current, count, entries };\n}\n","import { useState } from 'react';\nimport { paginationModel } from './pagination-model.js';\nexport interface PaginationProps {\n totalItems: number;\n pageSize?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (page: number) => void;\n isDisabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Pagination({\n totalItems,\n pageSize = 10,\n value,\n defaultValue = 1,\n onChange,\n isDisabled = false,\n siblingCount = 1,\n label = 'Navigasi halaman',\n previousLabel = 'Sebelumnya',\n nextLabel = 'Berikutnya',\n pageLabel = 'Halaman',\n dir,\n id,\n}: PaginationProps) {\n const [local, setLocal] = useState(defaultValue);\n const { current, count, entries } = paginationModel(\n totalItems,\n pageSize,\n value ?? local,\n siblingCount,\n );\n function change(next: number) {\n if (isDisabled || next === current || next < 1 || next > count) return;\n setLocal(next);\n onChange?.(next);\n }\n return (\n <nav className=\"pagination\" aria-label={label} dir={dir} id={id}>\n <button\n type=\"button\"\n className=\"pagination__button\"\n disabled={isDisabled || current === 1}\n onClick={() => change(current - 1)}\n >\n {previousLabel}\n </button>\n {entries.map((entry) =>\n typeof entry === 'string' ? (\n <span className=\"pagination__gap\" aria-hidden=\"true\" key={entry}>\n ...\n </span>\n ) : (\n <button\n type=\"button\"\n key={entry}\n className=\"pagination__button\"\n aria-label={`${pageLabel} ${entry}`}\n aria-current={entry === current ? 'page' : undefined}\n disabled={isDisabled}\n onClick={() => change(entry)}\n >\n {entry}\n </button>\n ),\n )}\n <button\n type=\"button\"\n className=\"pagination__button\"\n disabled={isDisabled || current === count}\n onClick={() => change(current + 1)}\n >\n {nextLabel}\n </button>\n <span className=\"pagination__summary\" aria-live=\"polite\">\n {current} / {count}\n </span>\n </nav>\n );\n}\n","import type { TableHTMLAttributes } from 'react';\nexport interface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n caption: string;\n}\nexport function Table({ caption, children, className, ...props }: TableProps) {\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- The named overflow region must be keyboard-scrollable.\n <div className=\"table__scroll\" role=\"region\" aria-label={caption} tabIndex={0}>\n <table {...props} className={['table', className].filter(Boolean).join(' ')}>\n <caption className=\"table__caption\">{caption}</caption>\n {children}\n </table>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Table } from './Table.js';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\nexport interface DataTableProps {\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n onSortChange?: (sort: TableSort) => void;\n isLoading?: boolean;\n isDisabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n renderCell?: (row: DataTableRow, column: DataTableColumn) => ReactNode;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function DataTable({\n caption,\n columns,\n rows,\n sort = null,\n onSortChange,\n isLoading = false,\n isDisabled = false,\n emptyMessage = 'Tidak ada data.',\n loadingMessage = 'Memuat data...',\n errorMessage,\n renderCell,\n dir,\n id,\n}: DataTableProps) {\n function requestSort(column: DataTableColumn) {\n if (isLoading || isDisabled || !column.sortable) return;\n onSortChange?.({\n columnId: column.id,\n direction:\n sort?.columnId === column.id && sort.direction === 'ascending' ? 'descending' : 'ascending',\n });\n }\n return (\n <div className=\"data-table\" dir={dir} id={id}>\n <Table caption={caption} aria-busy={isLoading || undefined}>\n <thead>\n <tr>\n {columns.map((column) => (\n <th\n key={column.id}\n scope=\"col\"\n aria-sort={\n column.sortable\n ? sort?.columnId === column.id\n ? sort.direction\n : 'none'\n : undefined\n }\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className=\"table__sort\"\n disabled={isLoading || isDisabled}\n onClick={() => requestSort(column)}\n >\n {column.label}\n <span aria-hidden=\"true\">\n {sort?.columnId === column.id\n ? sort.direction === 'ascending'\n ? '\\u2191'\n : '\\u2193'\n : '\\u2195'}\n </span>\n </button>\n ) : (\n column.label\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.length ? (\n rows.map((row) => (\n <tr key={row.id}>\n {columns.map((column) => (\n <td key={column.id}>\n {renderCell ? renderCell(row, column) : (row.cells[column.id] ?? '')}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={Math.max(1, columns.length)} className=\"table__empty\">\n {isLoading ? loadingMessage : errorMessage || emptyMessage}\n </td>\n </tr>\n )}\n </tbody>\n </Table>\n {isLoading && (\n <p className=\"data-table__status\" role=\"status\">\n {loadingMessage}\n </p>\n )}\n {errorMessage && !isLoading && (\n <p className=\"input__error\" role=\"alert\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { BadgeTone } from './Badge.js';\nexport interface AlertProps {\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n children?: ReactNode;\n actions?: ReactNode;\n id?: string;\n}\nexport function Alert({\n title,\n description,\n tone = 'info',\n announcement = 'off',\n children,\n actions,\n id,\n}: AlertProps) {\n return (\n <div\n id={id}\n className=\"alert\"\n data-tone={tone}\n role={\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n }\n >\n <p className=\"alert__title\">{title}</p>\n {description && <p className=\"alert__description\">{description}</p>}\n {children}\n {actions && <div className=\"alert__actions\">{actions}</div>}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nexport interface EmptyProps {\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n actions?: ReactNode;\n children?: ReactNode;\n id?: string;\n}\nexport function Empty({ title, description, headingLevel = 3, actions, children, id }: EmptyProps) {\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n return (\n <div id={id} className=\"empty\">\n <Heading className=\"empty__title\">{title}</Heading>\n {description && <p className=\"empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"empty__actions\">{actions}</div>}\n </div>\n );\n}\n","import type { BreadcrumbItem } from './dashboard-types.js';\nexport interface BreadcrumbProps {\n items: BreadcrumbItem[];\n label?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Breadcrumb({ items, label = 'Jejak halaman', dir, id }: BreadcrumbProps) {\n return (\n <nav id={id} className=\"breadcrumb\" aria-label={label} dir={dir}>\n <ol>\n {items.map((item, index) => (\n <li key={index}>\n {index > 0 && (\n <span className=\"breadcrumb__separator\" aria-hidden=\"true\">\n /\n </span>\n )}\n {index === items.length - 1 ? (\n <span aria-current=\"page\">{item.label}</span>\n ) : item.href ? (\n <a href={item.href}>{item.label}</a>\n ) : (\n <span>{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n );\n}\n","import { useState } from 'react';\nexport function useDisclosure(\n open?: boolean,\n defaultOpen = false,\n onOpenChange?: (open: boolean) => void,\n) {\n const [local, setLocal] = useState(defaultOpen);\n const visible = open ?? local;\n function change(next: boolean) {\n if (next === visible) return;\n setLocal(next);\n onOpenChange?.(next);\n }\n return { visible, change };\n}\n","import { useId } from 'react';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\nexport interface SidebarProps {\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n}\nexport function Sidebar({\n label,\n items,\n currentId,\n open,\n defaultOpen = true,\n onOpenChange,\n toggleLabel = 'Menu navigasi',\n dir,\n id,\n}: SidebarProps) {\n const generated = useId(),\n navId = `${id ?? generated}-nav`;\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange);\n return (\n <aside id={id} className=\"sidebar\" dir={dir}>\n <div className=\"sidebar__header\">\n <span className=\"sidebar__title\">{label}</span>\n <button\n type=\"button\"\n className=\"sidebar__toggle\"\n aria-label={toggleLabel}\n aria-expanded={visible}\n aria-controls={navId}\n onClick={() => change(!visible)}\n >\n <span aria-hidden=\"true\">{visible ? '\\u2212' : '+'}</span>\n </button>\n </div>\n <nav id={navId} aria-label={label} hidden={!visible}>\n <ul>\n {items.map((item) => (\n <li key={item.id}>\n {item.isDisabled ? (\n <span className=\"sidebar__link\" aria-disabled=\"true\">\n {item.label}\n </span>\n ) : (\n <a\n className=\"sidebar__link\"\n href={item.href}\n aria-current={item.id === currentId ? 'page' : undefined}\n >\n {item.label}\n </a>\n )}\n </li>\n ))}\n </ul>\n </nav>\n </aside>\n );\n}\n","import type { ChartDatum } from './dashboard-types.js';\nexport function chartModel(data: ChartDatum[]) {\n const valid = data.filter((item) => Number.isFinite(item.value));\n const scale = valid.reduce((max, item) => Math.max(max, Math.abs(item.value)), 1);\n const min = valid.reduce((min, item) => Math.min(min, item.value / scale), 0),\n max = valid.reduce((max, item) => Math.max(max, item.value / scale), 0);\n const span = max - min || 1,\n step = 560 / Math.max(1, valid.length);\n const y = (value: number) => 180 - ((value / scale - min) / span) * 160;\n return {\n items: valid.map((item, index) => ({\n ...item,\n x: 20 + step * (index + 0.5),\n y: y(item.value),\n })),\n baseline: y(0),\n barWidth: Math.min(40, step * 0.7),\n };\n}\n","import { useId } from 'react';\nimport { chartModel } from './chart-model.js';\nimport { Table } from './Table.js';\nimport { Empty } from './Empty.js';\nimport type { ChartDatum } from './dashboard-types.js';\nexport interface ChartProps {\n label: string;\n data: ChartDatum[];\n type?: 'bar' | 'line';\n description?: string;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n categoryLabel?: string;\n valueLabel?: string;\n emptyMessage?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n}\nexport function Chart({\n label,\n data,\n type = 'bar',\n description,\n locale = 'id-ID',\n formatOptions,\n categoryLabel = 'Kategori',\n valueLabel = 'Nilai',\n emptyMessage = 'Belum ada data grafik.',\n id,\n dir,\n}: ChartProps) {\n const generated = useId(),\n labelId = `${id ?? generated}-label`,\n model = chartModel(data),\n format = new Intl.NumberFormat(locale, formatOptions);\n return (\n <figure id={id} className=\"chart\" dir={dir} aria-labelledby={labelId}>\n <figcaption id={labelId} className=\"chart__title\">\n {label}\n </figcaption>\n {description && <p className=\"chart__description\">{description}</p>}\n {model.items.length ? (\n <>\n <svg className=\"chart__plot\" viewBox=\"0 0 600 210\" aria-hidden=\"true\" focusable=\"false\">\n <line\n className=\"chart__axis\"\n x1=\"20\"\n x2=\"580\"\n y1={model.baseline}\n y2={model.baseline}\n />\n {type === 'line' ? (\n <polyline\n className=\"chart__line\"\n points={model.items.map((item) => `${item.x},${item.y}`).join(' ')}\n />\n ) : null}\n {model.items.map((item) => (\n <g key={item.id}>\n {type === 'bar' ? (\n <rect\n className=\"chart__bar\"\n x={item.x - model.barWidth / 2}\n y={Math.min(item.y, model.baseline)}\n width={model.barWidth}\n height={Math.abs(item.y - model.baseline)}\n />\n ) : (\n <circle className=\"chart__bar\" cx={item.x} cy={item.y} r=\"4\" />\n )}\n {model.items.length <= 12 && (\n <text className=\"chart__label\" x={item.x} y=\"202\" textAnchor=\"middle\">\n {item.label.slice(0, 12)}\n </text>\n )}\n </g>\n ))}\n </svg>\n <Table caption={label}>\n <thead>\n <tr>\n <th scope=\"col\">{categoryLabel}</th>\n <th scope=\"col\">{valueLabel}</th>\n </tr>\n </thead>\n <tbody>\n {model.items.map((item) => (\n <tr key={item.id}>\n <th scope=\"row\">{item.label}</th>\n <td>{format.format(item.value)}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n </>\n ) : (\n <Empty title={emptyMessage} />\n )}\n </figure>\n );\n}\n","import { OverlayDirection } from './OverlayDirection.js';\nimport { useId, type ReactNode } from 'react';\nimport { DialogTrigger, Dialog as AriaDialog, Heading } from 'react-aria-components/Dialog';\nimport { ModalOverlay, Modal } from 'react-aria-components/Modal';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nimport { CloseIcon } from './icons.js';\nimport type { ButtonVariant } from './Button.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\nexport interface DialogProps {\n triggerLabel: string;\n title: string;\n description?: string;\n children?: ReactNode;\n footer?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n}\nexport function Dialog(props: DialogProps) {\n const {\n triggerLabel,\n title,\n description,\n children,\n footer,\n isDisabled = false,\n closeLabel = 'Tutup',\n dir,\n size = 'md',\n placement = 'center',\n scroll = 'outside',\n backdrop = 'opaque',\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n showCloseButton = true,\n showFooterClose = true,\n } = props;\n const { visible, change } = useDisclosure(\n props.open,\n props.defaultOpen ?? false,\n props.onOpenChange,\n );\n const descriptionId = useId();\n return (\n <OverlayDirection dir={dir}>\n <DialogTrigger isOpen={visible} onOpenChange={change}>\n <Button\n className={`button button--${props.triggerVariant ?? 'secondary'}${props.triggerIconOnly ? ' button--icon-only' : ''}`}\n aria-label={triggerLabel}\n isDisabled={isDisabled}\n >\n {props.triggerContent ?? triggerLabel}\n </Button>\n <ModalOverlay\n className=\"dialog__backdrop dialog__viewport\"\n data-size={size}\n data-placement={placement}\n data-scroll={scroll}\n data-backdrop={backdrop}\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n >\n <Modal className=\"dialog__panel\" dir={dir}>\n <AriaDialog\n className=\"dialog__content\"\n aria-describedby={description ? descriptionId : undefined}\n >\n <div className=\"overlay__header\" data-close-button={showCloseButton || undefined}>\n <Heading level={2} slot=\"title\" className=\"overlay__title\">\n {title}\n </Heading>\n {description && (\n <p id={descriptionId} className=\"overlay__description\">\n {description}\n </p>\n )}\n {showCloseButton && (\n <Button\n className=\"dialog__close\"\n aria-label={props.closeIconLabel ?? `${closeLabel} dialog`}\n onPress={() => change(false)}\n >\n <CloseIcon />\n </Button>\n )}\n </div>\n <div className=\"overlay__body\">{children}</div>\n {(footer || showFooterClose) && (\n <div className=\"overlay__footer\">\n {footer}\n {showFooterClose && (\n <Button className=\"button button--secondary\" onPress={() => change(false)}>\n {closeLabel}\n </Button>\n )}\n </div>\n )}\n </AriaDialog>\n </Modal>\n </ModalOverlay>\n </DialogTrigger>\n </OverlayDirection>\n );\n}\n","import type { DropdownMenuItem } from './dashboard-types.js';\nexport type MenuSelectionMode = 'none' | 'single' | 'multiple';\nexport type MenuPlacement =\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end';\nexport function menuGroups(items: DropdownMenuItem[]) {\n const groups: { key: string; label?: string; items: DropdownMenuItem[] }[] = [];\n for (const item of items) {\n const previous = groups.at(-1);\n if (!previous || previous.label !== item.section || item.separatorBefore)\n groups.push({ key: item.id, label: item.section, items: [item] });\n else previous.items.push(item);\n }\n return groups;\n}\nexport function menuLeaves(items: DropdownMenuItem[], disabled = false): DropdownMenuItem[] {\n return items.flatMap((item) =>\n item.children?.length\n ? menuLeaves(item.children, disabled || !!item.isDisabled)\n : [{ ...item, isDisabled: disabled || item.isDisabled }],\n );\n}\nexport function menuSelection(keys: string[], items: DropdownMenuItem[], mode: MenuSelectionMode) {\n const wanted = new Set(keys);\n const result = menuLeaves(items)\n .filter((item) => wanted.has(item.id))\n .map((item) => item.id);\n return mode === 'none' ? [] : mode === 'single' ? result.slice(0, 1) : result;\n}\nexport type DialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'cover' | 'full';\nexport type DialogPlacement = 'auto' | 'top' | 'center' | 'bottom';\nexport type DialogScroll = 'inside' | 'outside';\nexport type DialogBackdrop = 'opaque' | 'blur' | 'transparent';\n","import { useState, type ReactNode } from 'react';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport {\n MenuTrigger,\n Menu,\n MenuItem,\n MenuSection,\n SubmenuTrigger,\n} from 'react-aria-components/Menu';\nimport { Header } from 'react-aria-components/Header';\nimport { Separator } from 'react-aria-components/Separator';\nimport { Popover, type PopoverProps } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nimport { CheckIcon, ChevronIcon } from './icons.js';\nimport {\n menuGroups,\n menuLeaves,\n menuSelection,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './Button.js';\nexport interface DropdownMenuProps {\n triggerLabel: string;\n items: DropdownMenuItem[];\n onAction?: (id: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n renderIcon?: (item: DropdownMenuItem) => ReactNode;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n onSelectionChange?: (keys: string[]) => void;\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n}\nexport function DropdownMenu(props: DropdownMenuProps) {\n const {\n triggerLabel,\n items,\n isDisabled = false,\n dir,\n selectionMode = 'none',\n placement = 'bottom-start',\n } = props;\n const { visible, change } = useDisclosure(\n props.open,\n props.defaultOpen ?? false,\n props.onOpenChange,\n );\n const [local, setLocal] = useState(props.defaultSelectedKeys ?? []);\n const selected = menuSelection(props.selectedKeys ?? local, items, selectionMode);\n const [side, align] = placement.split('-');\n const popoverPlacement =\n `${side} ${side === 'left' || side === 'right' ? (align === 'start' ? 'top' : 'bottom') : align}` as PopoverProps['placement'];\n const closeOnSelect = props.closeOnSelect ?? selectionMode !== 'multiple';\n const leaves = menuLeaves(items, isDisabled);\n function action(id: string) {\n const item = leaves.find((item) => item.id === id);\n if (item && !item.isDisabled) props.onAction?.(id);\n }\n function select(keys: string[], level: DropdownMenuItem[]) {\n if (isDisabled || selectionMode === 'none') return;\n const levelIds = new Set(level.filter((item) => !item.children?.length).map((item) => item.id));\n const next = menuSelection(\n selectionMode === 'multiple'\n ? [...selected.filter((id) => !levelIds.has(id)), ...keys]\n : keys,\n items,\n selectionMode,\n );\n setLocal(next);\n props.onSelectionChange?.(next);\n }\n function content(item: DropdownMenuItem) {\n const icon = props.renderIcon?.(item);\n return (\n <>\n {selectionMode !== 'none' && !item.children?.length && (\n <CheckIcon className=\"menu__check\" />\n )}\n {icon && (\n <span className=\"menu__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"menu__text\">\n <span>{item.label}</span>\n {item.description && <span className=\"menu__description\">{item.description}</span>}\n </span>\n {item.shortcut && (\n <kbd className=\"menu__shortcut\" aria-hidden=\"true\">\n {item.shortcut}\n </kbd>\n )}\n {!!item.children?.length && <ChevronIcon className=\"menu__arrow\" />}\n </>\n );\n }\n function renderMenu(level: DropdownMenuItem[], label: string, blocked = false): ReactNode {\n return (\n <Menu\n className=\"menu__list\"\n aria-label={label}\n selectionMode={selectionMode}\n selectedKeys={selected}\n onSelectionChange={(keys) =>\n select(\n keys === 'all'\n ? level.filter((i) => !i.isDisabled && !i.children?.length).map((i) => i.id)\n : Array.from(keys, String),\n level,\n )\n }\n disallowEmptySelection={selectionMode === 'single'}\n shouldCloseOnSelect={closeOnSelect}\n onAction={(key) => action(String(key))}\n >\n {menuGroups(level).flatMap((group, index) => {\n const rows = group.items.map((item) => {\n const disabled = isDisabled || blocked || !!item.isDisabled;\n const row = (\n <MenuItem\n key={item.id}\n id={item.id}\n textValue={item.label}\n className=\"menu__item\"\n isDisabled={disabled}\n data-tone={item.tone ?? 'default'}\n shouldCloseOnSelect={closeOnSelect}\n >\n {content(item)}\n </MenuItem>\n );\n return item.children?.length ? (\n <SubmenuTrigger key={item.id}>\n {row}\n <Popover className=\"menu__panel\" offset={4} containerPadding={16} dir={dir}>\n {renderMenu(item.children, item.label, disabled)}\n </Popover>\n </SubmenuTrigger>\n ) : (\n row\n );\n });\n return [\n index > 0 ? (\n <Separator key={`${group.key}-separator`} className=\"menu__separator\" />\n ) : null,\n <MenuSection key={group.key} aria-label={group.label}>\n {group.label && <Header className=\"menu__heading\">{group.label}</Header>}\n {rows}\n </MenuSection>,\n ];\n })}\n </Menu>\n );\n }\n return (\n <OverlayDirection dir={dir}>\n <MenuTrigger isOpen={visible} onOpenChange={change}>\n <Button\n className={`button button--${props.triggerVariant ?? 'secondary'}${props.triggerIconOnly ? ' button--icon-only' : ''}`}\n aria-label={triggerLabel}\n isDisabled={isDisabled || !items.length}\n >\n {props.triggerContent ?? triggerLabel}\n </Button>\n <Popover\n className=\"menu__panel\"\n placement={popoverPlacement}\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n {renderMenu(items, triggerLabel)}\n </Popover>\n </MenuTrigger>\n </OverlayDirection>\n );\n}\n","import { OverlayDirection } from './OverlayDirection.js';\nimport { useId, type ReactNode } from 'react';\nimport { DialogTrigger, Dialog, Heading } from 'react-aria-components/Dialog';\nimport { Popover as AriaPopover } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nexport interface PopoverProps {\n triggerLabel: string;\n title: string;\n description?: string;\n children?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n}\nexport function Popover({\n triggerLabel,\n title,\n description,\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n closeLabel = 'Tutup',\n dir,\n}: PopoverProps) {\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange),\n descriptionId = useId();\n return (\n <OverlayDirection dir={dir}>\n <DialogTrigger isOpen={visible} onOpenChange={change}>\n <Button className=\"button button--secondary\" isDisabled={isDisabled}>\n {triggerLabel}\n </Button>\n <AriaPopover\n className=\"popover__panel\"\n isNonModal\n placement=\"bottom start\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n <Dialog\n className=\"popover__content\"\n aria-describedby={description ? descriptionId : undefined}\n >\n <Heading level={2} slot=\"title\" className=\"overlay__title\">\n {title}\n </Heading>\n {description && (\n <p id={descriptionId} className=\"overlay__description\">\n {description}\n </p>\n )}\n <div className=\"overlay__body\">{children}</div>\n <div className=\"overlay__footer\">\n <Button className=\"button button--secondary\" onPress={() => change(false)}>\n {closeLabel}\n </Button>\n </div>\n </Dialog>\n </AriaPopover>\n </DialogTrigger>\n </OverlayDirection>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { ButtonVariant, ButtonSize } from './Button.js';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport { TooltipTrigger, Tooltip as AriaTooltip } from 'react-aria-components/Tooltip';\nimport { Button } from 'react-aria-components/Button';\nimport { useDisclosure } from './useDisclosure.js';\nexport interface TooltipProps {\n triggerLabel: string;\n text: string;\n triggerContent?: ReactNode;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\nexport function Tooltip({\n triggerLabel,\n text,\n triggerContent,\n triggerIconOnly = false,\n triggerVariant = 'secondary',\n triggerSize = 'md',\n open,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n dir,\n}: TooltipProps) {\n const { visible, change } = useDisclosure(open, defaultOpen, onOpenChange);\n return (\n <OverlayDirection dir={dir}>\n <TooltipTrigger\n isOpen={visible}\n onOpenChange={change}\n delay={300}\n closeDelay={0}\n isDisabled={isDisabled}\n >\n <Button\n className={[\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ]\n .filter(Boolean)\n .join(' ')}\n aria-label={triggerLabel}\n isDisabled={isDisabled}\n >\n {triggerContent ?? triggerLabel}\n </Button>\n <AriaTooltip\n className=\"tooltip__panel\"\n placement=\"top\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n {text}\n </AriaTooltip>\n </TooltipTrigger>\n </OverlayDirection>\n );\n}\n","export type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerColor = 'current' | 'primary';\nexport interface SpinnerProps {\n size?: SpinnerSize;\n color?: SpinnerColor;\n label?: string;\n id?: string;\n}\n/** Decorative by default. Use label for a standalone loading status; omit it inside a labeled Button. */\nexport function Spinner({ size = 'md', color = 'current', label, id }: SpinnerProps) {\n return (\n <span\n id={id}\n className={`spinner spinner--${size}`}\n data-color={color}\n role={label ? 'status' : undefined}\n aria-label={label || undefined}\n aria-hidden={!label || undefined}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle className=\"spinner__track\" cx=\"10\" cy=\"10\" r=\"8\" />\n <circle\n className=\"spinner__arc\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n strokeDasharray=\"36 64\"\n />\n </svg>\n {label && <span className=\"spinner__label\">{label}</span>}\n </span>\n );\n}\n","import { useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider } from 'react-aria-components/I18nProvider';\nimport {\n ComboBox as AriaComboBox,\n Input,\n Button,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n} from 'react-aria-components/ComboBox';\nimport { CloseIcon, ChevronIcon, CheckIcon } from './icons.js';\nimport { useFeedback } from './field.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { filterOptions, selectionIds, type SelectOption } from './selection-options.js';\nexport interface ComboboxProps {\n label: string;\n options: SelectOption[];\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n /** Decorative noninteractive icon before the value/input. */\n startContent?: ReactNode;\n placeholder?: string;\n name?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n isClearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n renderOption?: (option: SelectOption) => ReactNode;\n}\n/** Searchable single selection. Draft text is never submitted as a value. */\nexport function Combobox(props: ComboboxProps) {\n const [local, setLocal] = useState(props.defaultValue ?? null);\n const [draft, setDraft] = useState<string | null>(null);\n const [tried, setTried] = useState(false);\n const resetting = useRef(false);\n const input = useRef<HTMLInputElement>(null);\n const id =\n selectionIds(props.value !== undefined ? props.value : local, props.options, false)[0] ?? null;\n const selected = props.options.find((o) => o.id === id);\n const [previous, setPrevious] = useState(selected);\n if (previous !== selected) {\n setPrevious(selected);\n setDraft(null);\n }\n const text = draft ?? selected?.label ?? '';\n const invalid = props.isInvalid || (tried && props.isRequired && !id);\n const { describedBy, feedback } = useFeedback({\n description: props.description,\n isInvalid: invalid,\n errorMessage:\n props.errorMessage ??\n (props.isRequired && !id ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n });\n function change(value: unknown) {\n if (props.isDisabled || resetting.current) return;\n const next = selectionIds(value, props.options, false)[0] ?? null;\n setLocal(next);\n props.onChange?.(next);\n setDraft(null);\n }\n const content = (\n <AriaComboBox<SelectOption>\n className=\"select combobox\"\n value={id}\n onChange={change}\n inputValue={text}\n onInputChange={(text) => {\n if (resetting.current) return;\n setDraft(text);\n if (text === '' && id) {\n setLocal(null);\n props.onChange?.(null);\n }\n }}\n defaultItems={props.options}\n defaultFilter={(label, query) =>\n filterOptions(props.options, query).some((option) => option.label === label)\n }\n allowsEmptyCollection\n allowsCustomValue={false}\n isDisabled={props.isDisabled}\n isRequired={props.isRequired}\n isInvalid={!!invalid}\n validationBehavior=\"aria\"\n >\n <Label className=\"select__label\">\n {props.label}\n {props.isRequired && (\n <span className=\"selection__required\" aria-hidden=\"true\">\n {' '}\n *\n </span>\n )}\n </Label>\n <div\n className=\"combobox__control\"\n data-invalid={invalid || undefined}\n data-disabled={props.isDisabled || undefined}\n >\n {props.startContent && (\n <span className=\"selection__leading\" aria-hidden=\"true\">\n {props.startContent}\n </span>\n )}\n <Input\n ref={input}\n className=\"combobox__input\"\n placeholder={props.placeholder}\n aria-describedby={describedBy}\n />\n {props.isClearable && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n data-empty={(!id && !text) || undefined}\n aria-hidden={(!id && !text) || undefined}\n tabIndex={!id && !text ? -1 : undefined}\n disabled={props.isDisabled || (!id && !text)}\n aria-label={props.clearLabel ?? 'Hapus pilihan'}\n onClick={() => {\n change(null);\n input.current?.focus();\n }}\n >\n <CloseIcon className=\"selection__close-icon\" />\n </button>\n )}\n <Button className=\"combobox__toggle\" aria-label={props.toggleLabel ?? 'Buka pilihan'}>\n <ChevronIcon className=\"select__icon\" />\n </Button>\n </div>\n <Popover className=\"select__popover combobox__popover\">\n <ListBox<SelectOption>\n className=\"select__list\"\n renderEmptyState={() => (\n <span className=\"selection__empty\">{props.emptyMessage ?? 'Tidak ada pilihan.'}</span>\n )}\n >\n {(option) => (\n <ListBoxItem\n id={option.id}\n textValue={option.label}\n isDisabled={option.isDisabled}\n className=\"select__item\"\n >\n <span className=\"select__item-label\">\n {props.renderOption?.(option) ?? (\n <>\n {option.label}\n {option.description && (\n <span className=\"selection__description\">{option.description}</span>\n )}\n </>\n )}\n </span>\n <CheckIcon className=\"select__check\" />\n </ListBoxItem>\n )}\n </ListBox>\n </Popover>\n {feedback}\n {props.name && (\n <input type=\"hidden\" name={props.name} value={id ?? ''} disabled={props.isDisabled} />\n )}\n <SelectionValidation\n hasValue={!!id}\n required={props.isRequired}\n disabled={props.isDisabled}\n onInvalid={() => {\n setTried(true);\n input.current?.focus();\n }}\n onResetStart={() => {\n resetting.current = true;\n }}\n onReset={(cancelled) => {\n resetting.current = false;\n if (!cancelled) {\n setTried(false);\n setDraft(null);\n if (props.value === undefined) setLocal(props.defaultValue ?? null);\n }\n }}\n />\n </AriaComboBox>\n );\n return props.dir ? (\n <I18nProvider locale={props.dir === 'rtl' ? 'ar-EG' : 'en-US'}>{content}</I18nProvider>\n ) : (\n content\n );\n}\n","export interface ToggleGroupItem {\n id: string;\n label: string;\n isDisabled?: boolean;\n}\nexport type ToggleGroupMode = 'single' | 'multiple';\nexport type ToggleGroupVariant = 'outline' | 'ghost';\n/** Normalize IDs without discarding existing disabled selections. */\nexport function toggleIds(value: unknown, items: ToggleGroupItem[], multiple: boolean): string[] {\n const wanted = new Set(Array.isArray(value) ? value : typeof value === 'string' ? [value] : []);\n const result = [\n ...new Set(\n items.filter((item) => item.id !== '' && wanted.has(item.id)).map((item) => item.id),\n ),\n ];\n return multiple ? result : result.slice(0, 1);\n}\n","import { useState, type ReactNode } from 'react';\nimport { ToggleButtonGroup } from 'react-aria-components/ToggleButtonGroup';\nimport { ToggleButton } from 'react-aria-components/ToggleButton';\nimport { OverlayDirection } from './OverlayDirection.js';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './Button.js';\nexport type { ToggleGroupItem, ToggleGroupMode, ToggleGroupVariant } from './toggle-group-model.js';\ninterface ToggleGroupCommonProps {\n label: string;\n items: ToggleGroupItem[];\n isDisabled?: boolean;\n isIconOnly?: boolean;\n renderIcon?: (item: ToggleGroupItem) => ReactNode;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}\nexport type ToggleGroupProps = ToggleGroupCommonProps &\n (\n | {\n selectionMode?: 'single';\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n selectionMode: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n }\n );\nexport function ToggleGroup(\n props: Extract<ToggleGroupProps, { selectionMode: 'multiple' }>,\n): ReactNode;\nexport function ToggleGroup(\n props: Exclude<ToggleGroupProps, { selectionMode: 'multiple' }>,\n): ReactNode;\nexport function ToggleGroup(props: ToggleGroupProps) {\n const multiple = props.selectionMode === 'multiple';\n const [local, setLocal] = useState<unknown>(props.defaultValue);\n const ids = toggleIds(props.value !== undefined ? props.value : local, props.items, multiple);\n function update(keys: Set<string | number>) {\n if (props.isDisabled) return;\n const requested = new Set(Array.from(keys, String));\n // Keep disabled values parent-owned; user interaction cannot toggle them.\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple && ids.includes(item.id)) requested.add(item.id);\n else if (!ids.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple);\n if (next.length === ids.length && next.every((id, index) => id === ids[index])) return;\n if (props.disallowEmptySelection && ids.length && !next.length) return;\n const value = multiple ? next : (next[0] ?? null);\n setLocal(value);\n if (props.selectionMode === 'multiple') props.onChange?.(next);\n else props.onChange?.(next[0] ?? null);\n }\n return (\n <OverlayDirection dir={props.dir}>\n <ToggleButtonGroup\n className=\"toggle-group\"\n aria-label={props.label}\n dir={props.dir}\n selectionMode={multiple ? 'multiple' : 'single'}\n selectedKeys={ids}\n onSelectionChange={update}\n disallowEmptySelection={props.disallowEmptySelection}\n isDisabled={props.isDisabled}\n orientation={props.orientation ?? 'horizontal'}\n data-variant={props.variant ?? 'outline'}\n data-size={props.size ?? 'md'}\n data-icon-only={props.isIconOnly || undefined}\n >\n {props.items.map((item) => (\n <ToggleButton\n key={item.id}\n id={item.id}\n className=\"toggle-group__item\"\n aria-label={item.label}\n isDisabled={props.isDisabled || item.isDisabled}\n >\n {props.renderIcon && (\n <span className=\"toggle-group__icon\" aria-hidden=\"true\">\n {props.renderIcon(item)}\n </span>\n )}\n {!props.isIconOnly && <span>{item.label}</span>}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </OverlayDirection>\n );\n}\n","import {\n parseDate,\n today,\n getLocalTimeZone,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n} from '@internationalized/date';\n\nexport interface DateRange {\n start: string;\n end: string;\n}\nexport interface DateRangePreset {\n id: string;\n label: string;\n value: DateRange;\n}\nexport interface DateRangeConstraints {\n minDate?: string;\n maxDate?: string;\n minDays?: number;\n maxDays?: number;\n isDateUnavailable?: (date: string) => boolean;\n}\nexport type DateRangeSize = 'sm' | 'md' | 'lg';\nexport type DateRangeVariant = 'primary' | 'secondary' | 'outline';\nexport interface DateRangeOptions extends DateRangeConstraints {\n label: string;\n defaultValue?: DateRange | null;\n size?: DateRangeSize;\n variant?: DateRangeVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n locale?: string;\n dir?: 'ltr' | 'rtl';\n visibleMonths?: 1 | 2;\n weekStartsOn?: 0 | 1;\n display?: 'popover' | 'inline';\n showInputs?: boolean;\n showMonthYearPicker?: boolean;\n triggerDisplay?: 'text' | 'icon';\n presets?: DateRangePreset[];\n labels?: Partial<DateRangeLabels>;\n formatRange?: (value: DateRange, locale: string) => string;\n description?: string;\n errorMessage?: string;\n name?: string;\n referenceDate?: string;\n open?: boolean;\n defaultOpen?: boolean;\n}\nexport type DateRangeError = 'incomplete' | 'order' | 'bounds' | 'unavailable' | 'length';\nexport interface DateRangeLabels {\n title: string;\n start: string;\n end: string;\n apply: string;\n cancel: string;\n clear: string;\n previousMonth: string;\n nextMonth: string;\n presets: string;\n placeholder: string;\n incomplete: string;\n order: string;\n bounds: string;\n unavailable: string;\n length: string;\n required: string;\n}\nexport function dateRangeLabels(locale = 'id-ID'): DateRangeLabels {\n return locale.startsWith('id')\n ? {\n title: 'Pilih rentang tanggal',\n start: 'Tanggal mulai',\n end: 'Tanggal akhir',\n apply: 'Terapkan',\n cancel: 'Batal',\n clear: 'Kosongkan',\n previousMonth: 'Bulan sebelumnya',\n nextMonth: 'Bulan berikutnya',\n presets: 'Pilihan cepat',\n placeholder: 'Pilih tanggal',\n incomplete: 'Lengkapi tanggal mulai dan akhir.',\n order: 'Tanggal akhir harus setelah atau sama dengan tanggal mulai.',\n bounds: 'Tanggal berada di luar batas yang diizinkan.',\n unavailable: 'Rentang memuat tanggal yang tidak tersedia.',\n length: 'Durasi rentang tidak sesuai batas yang diizinkan.',\n required: 'Rentang tanggal wajib diisi.',\n }\n : {\n title: 'Select date range',\n start: 'Start date',\n end: 'End date',\n apply: 'Apply',\n cancel: 'Cancel',\n clear: 'Clear',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n presets: 'Quick selections',\n placeholder: 'Choose dates',\n incomplete: 'Enter both start and end dates.',\n order: 'End date must be on or after start date.',\n bounds: 'Dates are outside the allowed limits.',\n unavailable: 'The range includes an unavailable date.',\n length: 'The range duration is outside the allowed limits.',\n required: 'A date range is required.',\n };\n}\nexport function validDate(value: string): boolean {\n if (!/^(?!0000)\\d{4}-\\d{2}-\\d{2}$/.test(value)) return false;\n try {\n return parseDate(value).toString() === value;\n } catch {\n return false;\n }\n}\nexport function asDate(value?: string) {\n return value && validDate(value) ? parseDate(value) : undefined;\n}\nexport function currentDate() {\n return today(getLocalTimeZone()).toString();\n}\nexport function rangeError(\n value: DateRange | null,\n constraints: DateRangeConstraints = {},\n): DateRangeError | null {\n if (!value) return null;\n if (!validDate(value.start) || !validDate(value.end)) return 'incomplete';\n if (value.end < value.start) return 'order';\n if (\n (constraints.minDate && value.start < constraints.minDate) ||\n (constraints.maxDate && value.end > constraints.maxDate)\n )\n return 'bounds';\n const start = parseDate(value.start),\n end = parseDate(value.end);\n const days = end.calendar.toJulianDay(end) - start.calendar.toJulianDay(start) + 1;\n if (\n (constraints.minDays && days < constraints.minDays) ||\n (constraints.maxDays && days > constraints.maxDays)\n )\n return 'length';\n if (constraints.isDateUnavailable) {\n for (let day = start; day.compare(end) <= 0; day = day.add({ days: 1 })) {\n if (constraints.isDateUnavailable(day.toString())) return 'unavailable';\n if (day.compare(end) === 0) break;\n }\n }\n return null;\n}\nexport function rangeText(value: DateRange | null, locale = 'id-ID'): string {\n if (!value || !validDate(value.start) || !validDate(value.end)) return '';\n const formatter = new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC',\n calendar: 'gregory',\n });\n const date = (s: string) => parseDate(s).toDate('UTC');\n return value.start === value.end\n ? formatter.format(date(value.start))\n : `${formatter.format(date(value.start))} – ${formatter.format(date(value.end))}`;\n}\nexport function createDateRangePresets(\n referenceDate = currentDate(),\n locale = 'id-ID',\n weekStartsOn: 0 | 1 = 1,\n): DateRangePreset[] {\n const day = parseDate(referenceDate),\n week = startOfWeek(day, locale, weekStartsOn === 1 ? 'mon' : 'sun');\n const id = locale.startsWith('id');\n return [\n {\n id: 'this-week',\n label: id ? 'Minggu ini' : 'This Week',\n start: week,\n end: week.add({ days: 6 }),\n },\n {\n id: 'last-week',\n label: id ? 'Minggu lalu' : 'Last Week',\n start: week.subtract({ days: 7 }),\n end: week.subtract({ days: 1 }),\n },\n {\n id: 'last-7-days',\n label: id ? '7 hari terakhir' : 'Last 7 Days',\n start: day.subtract({ days: 6 }),\n end: day,\n },\n {\n id: 'last-30-days',\n label: id ? '30 hari terakhir' : 'Last 30 Days',\n start: day.subtract({ days: 29 }),\n end: day,\n },\n {\n id: 'this-month',\n label: id ? 'Bulan ini' : 'Current Month',\n start: startOfMonth(day),\n end: endOfMonth(day),\n },\n {\n id: 'next-month',\n label: id ? 'Bulan depan' : 'Next Month',\n start: startOfMonth(day.add({ months: 1 })),\n end: endOfMonth(day.add({ months: 1 })),\n },\n ].map(({ id, label, start, end }) => ({\n id,\n label,\n value: { start: start.toString(), end: end.toString() },\n }));\n}\n","import { useContext, useEffect, useId, useRef, useState, type ReactNode } from 'react';\nimport { I18nProvider, useLocale } from 'react-aria-components/I18nProvider';\nimport { Dialog, DialogTrigger } from 'react-aria-components/Dialog';\nimport { Popover } from 'react-aria-components/Popover';\nimport { Button } from 'react-aria-components/Button';\nimport {\n RangeCalendar,\n RangeCalendarStateContext,\n CalendarGrid,\n CalendarGridHeader,\n CalendarGridBody,\n CalendarHeaderCell,\n CalendarCell,\n CalendarHeading,\n} from 'react-aria-components/RangeCalendar';\nimport { GregorianCalendar } from '@internationalized/date';\nimport { useDisclosure } from './useDisclosure.js';\nimport { SelectionValidation } from './SelectionValidation.js';\nimport { ChevronIcon } from './icons.js';\nimport {\n asDate,\n currentDate,\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\n\nexport interface DateRangePickerProps extends DateRangeOptions {\n value?: DateRange | null;\n onChange?: (value: DateRange | null) => void;\n onApply?: (value: DateRange | null) => void;\n onOpenChange?: (open: boolean) => void;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n}\nconst empty = (): DateRange => ({ start: '', end: '' });\nfunction CalendarContent({\n onPending,\n dir,\n children,\n}: {\n onPending: (pending: boolean) => void;\n dir?: 'ltr' | 'rtl';\n children: ReactNode;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const { direction } = useLocale();\n const pending = !!state?.anchorDate;\n useEffect(() => onPending(pending), [pending, onPending]);\n // Some WebKit Intl versions ignore an explicit locale script when inferring direction.\n // Keep the headless calendar's focus methods, overriding only mismatched horizontal keys.\n return (\n <div\n onKeyDownCapture={(event) => {\n if (\n !state ||\n !dir ||\n dir === direction ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n !['ArrowLeft', 'ArrowRight'].includes(event.key) ||\n !(event.target as HTMLElement).closest('.date-range__day')\n )\n return;\n event.preventDefault();\n event.stopPropagation();\n if ((event.key === 'ArrowRight') === (dir === 'rtl')) state.focusPreviousDay();\n else state.focusNextDay();\n }}\n >\n {children}\n </div>\n );\n}\nexport function DateRangePicker(props: DateRangePickerProps) {\n const {\n label,\n locale = 'id-ID',\n dir,\n size = 'md',\n variant = 'primary',\n fullWidth = true,\n hideLabel = false,\n visibleMonths = 2,\n weekStartsOn = 1,\n display = 'popover',\n showInputs = true,\n presets = [],\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n } = props;\n const labels = { ...dateRangeLabels(locale), ...props.labels };\n const [local, setLocal] = useState(props.defaultValue ?? null);\n const committed = props.value !== undefined ? props.value : local;\n const start = committed?.start ?? '',\n end = committed?.end ?? '';\n const [draft, setDraft] = useState<DateRange>({ start, end });\n const initialFocus = () => {\n const date = asDate(start) ?? asDate(props.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.minDate),\n max = asDate(props.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n };\n const [focused, setFocused] = useState(initialFocus);\n const [formError, setFormError] = useState(false);\n const [pending, setPending] = useState(false),\n [calendarKey, setCalendarKey] = useState(0);\n const trigger = useRef<HTMLButtonElement>(null);\n const id = useId();\n const disclosure = useDisclosure(props.open, props.defaultOpen, props.onOpenChange);\n const visible = disclosure.visible && !isDisabled;\n useEffect(() => setDraft({ start, end }), [start, end]);\n function replaceDraft(next: DateRange) {\n setDraft(next);\n setPending(false);\n setCalendarKey((k) => k + 1);\n }\n function resetDraft() {\n replaceDraft({ start, end });\n setFocused(initialFocus());\n }\n function changeOpen(next: boolean) {\n if (isDisabled && next) return;\n resetDraft();\n disclosure.change(next);\n }\n const nullableDraft = draft.start || draft.end ? draft : null;\n const errorCode = pending\n ? 'incomplete'\n : (rangeError(nullableDraft, props) ?? (isRequired && !nullableDraft ? 'required' : null));\n const error = errorCode ? labels[errorCode] : undefined;\n const committedError = rangeError(committed, props);\n const outerError = props.isInvalid || committedError || formError;\n const matchingPreset = presets.find((p) => p.value.start === start && p.value.end === end);\n const text = committed\n ? (props.formatRange?.(committed, locale) ??\n matchingPreset?.label ??\n rangeText(committed, locale))\n : labels.placeholder;\n const feedbackId = outerError\n ? `${id}-error`\n : props.description\n ? `${id}-description`\n : undefined;\n function apply() {\n if (isDisabled || isReadOnly || errorCode) return;\n const next = nullableDraft ? { ...nullableDraft } : null;\n setLocal(next);\n setFormError(false);\n props.onChange?.(next);\n props.onApply?.(next);\n disclosure.change(false);\n }\n function edit(part: 'start' | 'end', value: string) {\n if (isDisabled || isReadOnly) return;\n replaceDraft({ ...draft, [part]: value });\n if (asDate(value)) setFocused(asDate(value)!);\n }\n const calendarValue =\n asDate(draft.start) && asDate(draft.end) && draft.start <= draft.end\n ? { start: asDate(draft.start)!, end: asDate(draft.end)! }\n : null;\n const panel = (\n <div className=\"date-range__content\" data-readonly={isReadOnly || undefined}>\n <header className=\"date-range__intro\">\n <h2 id={`${id}-title`}>{labels.title}</h2>\n <p className=\"date-range__summary\" aria-live=\"polite\">\n {pending ? labels.incomplete : rangeText(nullableDraft, locale) || labels.incomplete}\n </p>\n </header>\n <div className=\"date-range__body\">\n {presets.length > 0 && (\n <div className=\"date-range__presets\" role=\"group\" aria-label={labels.presets}>\n {presets.map((p) => (\n <button\n type=\"button\"\n key={p.id}\n className=\"date-range__preset\"\n disabled={isDisabled || isReadOnly || !!rangeError(p.value, props)}\n aria-pressed={\n !pending && draft.start === p.value.start && draft.end === p.value.end\n }\n onClick={() => {\n replaceDraft({ ...p.value });\n setFocused(asDate(p.value.start)!);\n }}\n >\n {p.label}\n </button>\n ))}\n </div>\n )}\n <div className=\"date-range__main\">\n {showInputs && (\n <div className=\"date-range__inputs\">\n {(['start', 'end'] as const).map((part) => (\n <label key={part} className=\"date-range__field\">\n <span>{labels[part]}</span>\n <input\n type=\"date\"\n form=\"\"\n value={draft[part]}\n min={props.minDate}\n max={props.maxDate}\n disabled={isDisabled}\n readOnly={isReadOnly}\n aria-invalid={!!errorCode}\n aria-describedby={error ? `${id}-draft-error` : undefined}\n onChange={(e) => edit(part, e.target.value)}\n />\n </label>\n ))}\n </div>\n )}\n {props.showMonthYearPicker && (\n <div className=\"date-range__jump\">\n <label>\n <span>{locale.startsWith('id') ? 'Bulan' : 'Month'}</span>\n <select\n form=\"\"\n disabled={isDisabled}\n aria-label={locale.startsWith('id') ? 'Bulan' : 'Month'}\n value={focused.month}\n onChange={(e) => setFocused(focused.set({ month: Number(e.target.value) }))}\n >\n {Array.from({ length: 12 }, (_, i) => (\n <option key={i} value={i + 1}>\n {new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month: i + 1, day: 1 }).toDate('UTC'))}\n </option>\n ))}\n </select>\n </label>\n <label>\n <span>{locale.startsWith('id') ? 'Tahun' : 'Year'}</span>\n <input\n key={focused.year}\n type=\"number\"\n form=\"\"\n disabled={isDisabled}\n min={asDate(props.minDate)?.year ?? 1}\n max={asDate(props.maxDate)?.year ?? 9999}\n defaultValue={focused.year}\n onBlur={(e) => {\n const year = Number(e.target.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n setFocused(focused.set({ year }));\n else e.target.value = String(focused.year);\n }}\n />\n </label>\n </div>\n )}\n <RangeCalendar\n dir={dir}\n key={calendarKey}\n className=\"date-range__calendar\"\n aria-label={labels.title}\n value={calendarValue}\n focusedValue={focused}\n onFocusChange={setFocused}\n createCalendar={() => new GregorianCalendar()}\n onChange={(v) => {\n if (v) setDraft({ start: v.start.toString(), end: v.end.toString() });\n }}\n visibleDuration={{ months: visibleMonths }}\n firstDayOfWeek={weekStartsOn === 1 ? 'mon' : 'sun'}\n pageBehavior=\"single\"\n minValue={asDate(props.minDate)}\n maxValue={asDate(props.maxDate)}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isDateUnavailable={\n props.isDateUnavailable ? (d) => props.isDateUnavailable!(d.toString()) : undefined\n }\n >\n <CalendarContent onPending={setPending} dir={dir}>\n <div className=\"date-range__navigation\">\n <Button\n slot=\"previous\"\n className=\"date-range__nav date-range__nav--previous\"\n aria-label={labels.previousMonth}\n >\n <ChevronIcon />\n </Button>\n <Button\n slot=\"next\"\n className=\"date-range__nav date-range__nav--next\"\n aria-label={labels.nextMonth}\n >\n <ChevronIcon />\n </Button>\n </div>\n <div className=\"date-range__months\">\n {Array.from({ length: visibleMonths }, (_, i) => (\n <div className=\"date-range__month\" key={i}>\n <CalendarHeading offset={{ months: i }} className=\"date-range__heading\" />\n <CalendarGrid\n offset={{ months: i }}\n className=\"date-range__grid\"\n weekdayStyle=\"short\"\n >\n <CalendarGridHeader>\n {(day) => (\n <CalendarHeaderCell className=\"date-range__weekday\">\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody>\n {(date) => <CalendarCell date={date} className=\"date-range__day\" />}\n </CalendarGridBody>\n </CalendarGrid>\n </div>\n ))}\n </div>\n </CalendarContent>\n </RangeCalendar>\n <div className=\"date-range__validation\" aria-live=\"polite\">\n {error && (\n <p id={`${id}-draft-error`} role=\"alert\">\n {error}\n </p>\n )}\n </div>\n </div>\n </div>\n <footer className=\"date-range__footer\">\n <button\n type=\"button\"\n className=\"button button--ghost button--sm\"\n disabled={isDisabled || isReadOnly}\n onClick={() => replaceDraft(empty())}\n >\n {labels.clear}\n </button>\n <div>\n <button\n type=\"button\"\n className=\"button button--secondary button--sm\"\n onClick={() => changeOpen(false)}\n >\n {labels.cancel}\n </button>\n <button\n type=\"button\"\n className=\"button button--primary button--sm\"\n disabled={isDisabled || isReadOnly || !!errorCode}\n onClick={apply}\n >\n {labels.apply}\n </button>\n </div>\n </footer>\n </div>\n );\n return (\n <I18nProvider\n locale={new Intl.Locale(locale, {\n calendar: 'gregory',\n ...(dir ? { script: dir === 'rtl' ? 'Arab' : 'Latn' } : {}),\n }).toString()}\n >\n <div\n className={[\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n props.triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ]\n .filter(Boolean)\n .join(' ')}\n dir={dir}\n data-disabled={isDisabled || undefined}\n >\n <span id={`${id}-label`} className=\"date-range__label\">\n {label}\n {isRequired && <span aria-hidden=\"true\"> *</span>}\n </span>\n {display === 'inline' ? (\n <section\n className=\"date-range__panel date-range__inline\"\n aria-labelledby={`${id}-title`}\n dir={dir}\n >\n {panel}\n </section>\n ) : (\n <DialogTrigger isOpen={visible} onOpenChange={changeOpen}>\n <Button\n ref={trigger}\n className=\"date-range__trigger\"\n isDisabled={isDisabled}\n aria-labelledby={`${id}-label ${id}-value`}\n aria-describedby={feedbackId}\n aria-invalid={!!outerError}\n >\n <svg\n className=\"date-range__icon\"\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" />\n </svg>\n <span\n id={`${id}-value`}\n className=\"date-range__value\"\n data-placeholder={!committed || undefined}\n >\n {text}\n </span>\n <ChevronIcon className=\"date-range__chevron\" />\n </Button>\n <Popover\n className=\"date-range__panel\"\n placement=\"bottom start\"\n offset={8}\n containerPadding={16}\n dir={dir}\n >\n <Dialog className=\"date-range__dialog\" aria-labelledby={`${id}-title`}>\n {panel}\n </Dialog>\n </Popover>\n </DialogTrigger>\n )}\n {props.description && (\n <span id={`${id}-description`} className=\"input__description\">\n {props.description}\n </span>\n )}\n {outerError && (\n <span id={`${id}-error`} className=\"input__error\" role=\"alert\">\n {props.errorMessage ?? (committedError ? labels[committedError] : labels.required)}\n </span>\n )}\n {props.name && (\n <>\n <input type=\"hidden\" name={`${props.name}.start`} value={start} disabled={isDisabled} />\n <input type=\"hidden\" name={`${props.name}.end`} value={end} disabled={isDisabled} />\n </>\n )}\n <SelectionValidation\n hasValue={!!committed && !committedError}\n required={isRequired || !!committedError}\n disabled={isDisabled}\n onInvalid={() => {\n setFormError(true);\n trigger.current?.focus();\n }}\n onResetStart={() => {}}\n onReset={(cancelled) => {\n if (!cancelled) {\n if (props.value === undefined) setLocal(props.defaultValue ?? null);\n setFormError(false);\n changeOpen(false);\n }\n }}\n />\n </div>\n </I18nProvider>\n );\n}\n","export type ToastTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';\nexport type ToastPlacement =\n 'top-start' | 'top-center' | 'top-end' | 'bottom-start' | 'bottom-center' | 'bottom-end';\nexport type ToastCloseReason =\n 'timeout' | 'dismiss' | 'action' | 'cancel' | 'swipe' | 'clear' | 'unmount';\nexport interface ToastAction {\n label: string;\n altText: string;\n onAction: () => void;\n dismiss?: boolean;\n}\nexport interface ToastOptions {\n id?: string;\n title: string;\n description?: string;\n tone?: ToastTone;\n duration?: number;\n isLoading?: boolean;\n action?: ToastAction;\n cancel?: ToastAction;\n onClose?: (reason: ToastCloseReason) => void;\n}\nexport interface ToastEntry extends Readonly<ToastOptions> {\n readonly id: string;\n readonly tone: ToastTone;\n readonly duration: number;\n readonly isLoading: boolean;\n readonly generation: number;\n readonly state: 'open' | 'closing';\n readonly createdAt: number;\n readonly visibleAt: number | null;\n readonly remaining: number;\n readonly paused: boolean;\n}\nexport interface ToastManagerOptions {\n maxVisible?: number;\n maxPending?: number;\n duration?: number;\n exitDuration?: number;\n}\ntype ToastMessage = string | ToastOptions;\nexport interface ToastPromiseMessages<T> {\n loading: ToastMessage;\n success: ToastMessage | ((value: T) => ToastMessage);\n error: ToastMessage | ((error: unknown) => ToastMessage);\n}\nexport interface ToastManager {\n add(options: ToastOptions): string | null;\n update(id: string, options: Partial<ToastOptions>): boolean;\n dismiss(id: string, reason?: ToastCloseReason): void;\n clear(reason?: ToastCloseReason): void;\n pause(reason: string): void;\n resume(reason: string): void;\n attach(): () => void;\n dispose(): void;\n subscribe(listener: () => void): () => void;\n getSnapshot(): readonly ToastEntry[];\n getServerSnapshot(): readonly ToastEntry[];\n promise<T>(\n promise: Promise<T>,\n messages: ToastPromiseMessages<T>,\n options?: Partial<ToastOptions>,\n ): { id: string | null; promise: Promise<T> };\n}\n\ninterface RecordState {\n entry: ToastEntry;\n timer?: ReturnType<typeof setTimeout>;\n startedAt: number | null;\n exitRemaining: number;\n}\nconst EMPTY: readonly ToastEntry[] = Object.freeze([]);\nconst messageOptions = (message: ToastMessage): ToastOptions =>\n typeof message === 'string' ? { title: message } : message;\nconst milliseconds = (value: number, fallback: number) =>\n Number.isFinite(value) && value >= 0 ? value : fallback;\n\n/** Complete required notifications/cleanup before reporting user callback failures. */\nconst complete = (operations: readonly (() => void)[]) => {\n const errors: unknown[] = [];\n for (const operation of operations) {\n try {\n operation();\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast lifecycle callbacks failed.');\n};\n\n/** Create per application/provider; no browser globals or timers are used until attached. */\nexport function createToastManager(options: ToastManagerOptions = {}): ToastManager {\n const maxVisible = Math.max(1, Math.floor(options.maxVisible ?? 3));\n const maxPending = Math.max(0, Math.floor(options.maxPending ?? 50));\n const duration = milliseconds(options.duration ?? 5000, 5000);\n const exitDuration = milliseconds(options.exitDuration ?? 200, 200);\n const records = new Map<string, RecordState>();\n const visible: string[] = [];\n const pending: string[] = [];\n const listeners = new Set<() => void>();\n const pauses = new Map<string, number>();\n let snapshot = EMPTY;\n let attached = false;\n let disposed = false;\n let sequence = 0;\n let generation = 0;\n const paused = () => !attached || pauses.size > 0;\n const freeze = (entry: ToastEntry): ToastEntry =>\n Object.freeze({\n ...entry,\n action: entry.action ? Object.freeze({ ...entry.action }) : undefined,\n cancel: entry.cancel ? Object.freeze({ ...entry.cancel }) : undefined,\n });\n const publish = () => {\n const next = visible.map((id) => records.get(id)!.entry);\n if (next.length === snapshot.length && next.every((entry, index) => entry === snapshot[index]))\n return;\n snapshot = Object.freeze(next);\n complete([...listeners]);\n };\n const stop = (record: RecordState) => {\n if (record.timer !== undefined) clearTimeout(record.timer);\n record.timer = undefined;\n if (record.startedAt !== null) {\n const elapsed = Math.max(0, Date.now() - record.startedAt);\n if (record.entry.state === 'closing')\n record.exitRemaining = Math.max(0, record.exitRemaining - elapsed);\n else\n record.entry = freeze({\n ...record.entry,\n remaining: Math.max(0, record.entry.remaining - elapsed),\n });\n }\n record.startedAt = null;\n };\n const promote = () => {\n while (visible.length < maxVisible && pending.length) {\n const id = pending.shift()!;\n const record = records.get(id)!;\n visible.push(id);\n record.entry = freeze({ ...record.entry, visibleAt: Date.now(), paused: paused() });\n start(record);\n }\n };\n const remove = (id: string) => {\n const record = records.get(id);\n if (!record) return;\n stop(record);\n records.delete(id);\n const index = visible.indexOf(id);\n if (index >= 0) visible.splice(index, 1);\n const waiting = pending.indexOf(id);\n if (waiting >= 0) pending.splice(waiting, 1);\n promote();\n publish();\n };\n const start = (record: RecordState) => {\n if (!attached || record.entry.visibleAt === null || record.timer !== undefined) return;\n const closing = record.entry.state === 'closing';\n if (!closing && (paused() || record.entry.isLoading || record.entry.duration === 0)) return;\n record.startedAt = Date.now();\n record.timer = setTimeout(\n () => {\n record.timer = undefined;\n record.startedAt = null;\n if (closing) remove(record.entry.id);\n else manager.dismiss(record.entry.id, 'timeout');\n },\n closing ? record.exitRemaining : record.entry.remaining,\n );\n };\n const refreshPause = () => {\n for (const id of visible) {\n const record = records.get(id)!;\n stop(record);\n record.entry = freeze({\n ...record.entry,\n paused: paused() || record.entry.state === 'closing',\n });\n start(record);\n }\n publish();\n };\n const update = (\n id: string,\n changes: Partial<ToastOptions>,\n invalidate: boolean,\n onGeneration?: (value: number) => void,\n ) => {\n const record = records.get(id);\n if (!record || record.entry.state === 'closing' || disposed) return false;\n stop(record);\n const before = record.entry;\n const settled = before.isLoading && changes.isLoading === false;\n const nextDuration =\n changes.duration !== undefined\n ? milliseconds(changes.duration, duration)\n : settled\n ? duration\n : before.duration;\n record.entry = freeze({\n ...before,\n ...changes,\n id,\n tone: changes.tone ?? before.tone,\n duration: nextDuration,\n isLoading: changes.isLoading ?? before.isLoading,\n remaining: changes.duration !== undefined || settled ? nextDuration : before.remaining,\n generation: invalidate ? ++generation : before.generation,\n });\n onGeneration?.(record.entry.generation);\n start(record);\n publish();\n return true;\n };\n const add = (value: ToastOptions, onGeneration?: (value: number) => void): string | null => {\n if (disposed) return null;\n if (value.id !== undefined && records.has(value.id))\n return update(value.id, value, true, onGeneration) ? value.id : null;\n if (visible.length >= maxVisible && pending.length >= maxPending) return null;\n let id = value.id;\n if (id === undefined) {\n do {\n id = `toast-${++sequence}`;\n } while (records.has(id));\n }\n const entry = freeze({\n ...value,\n id,\n tone: value.tone ?? 'neutral',\n duration: milliseconds(value.duration ?? duration, duration),\n isLoading: value.isLoading ?? false,\n generation: ++generation,\n state: 'open',\n createdAt: Date.now(),\n visibleAt: visible.length < maxVisible ? Date.now() : null,\n remaining: milliseconds(value.duration ?? duration, duration),\n paused: paused(),\n });\n const record: RecordState = { entry, startedAt: null, exitRemaining: exitDuration };\n records.set(id, record);\n if (visible.length < maxVisible) {\n visible.push(id);\n start(record);\n } else pending.push(id);\n onGeneration?.(entry.generation);\n publish();\n return id;\n };\n const manager: ToastManager = {\n add,\n update: (id, changes) => update(id, changes, true),\n dismiss(id, reason = 'dismiss') {\n const record = records.get(id);\n if (!record || record.entry.state === 'closing') return;\n stop(record);\n record.entry = freeze({\n ...record.entry,\n state: 'closing',\n paused: true,\n remaining: reason === 'timeout' ? 0 : record.entry.remaining,\n });\n complete([\n () => {\n if (record.entry.visibleAt === null) remove(id);\n else {\n start(record);\n publish();\n }\n },\n () => record.entry.onClose?.(reason),\n ]);\n },\n clear(reason = 'clear') {\n // Remove waiting entries first so visible exits cannot promote cleared work.\n complete([...pending, ...visible].map((id) => () => manager.dismiss(id, reason)));\n },\n pause(reason) {\n if (disposed) return;\n pauses.set(reason, (pauses.get(reason) ?? 0) + 1);\n if (pauses.size === 1 && pauses.get(reason) === 1) refreshPause();\n },\n resume(reason) {\n const count = pauses.get(reason);\n if (!count || disposed) return;\n if (count === 1) pauses.delete(reason);\n else pauses.set(reason, count - 1);\n if (!pauses.size) refreshPause();\n },\n attach() {\n if (disposed) throw new Error('Cannot attach a disposed ToastManager.');\n if (attached) throw new Error('A ToastManager may attach to only one provider.');\n attached = true;\n try {\n refreshPause();\n } catch (error) {\n attached = false;\n // Rollback also publishes the detached snapshot; report all subscriber failures.\n complete([\n () => {\n throw error;\n },\n refreshPause,\n ]);\n }\n let detached = false;\n return () => {\n if (detached || disposed) return;\n detached = true;\n attached = false;\n refreshPause();\n };\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n attached = false;\n const closing = [...records.values()].filter((record) => record.entry.state === 'open');\n for (const record of records.values()) stop(record);\n records.clear();\n visible.length = 0;\n pending.length = 0;\n pauses.clear();\n complete([\n publish,\n () => listeners.clear(),\n ...closing.map((record) => () => record.entry.onClose?.('unmount')),\n ]);\n },\n subscribe(listener) {\n if (!disposed) listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n getSnapshot: () => snapshot,\n getServerSnapshot: () => EMPTY,\n promise(task, messages, promiseOptions = {}) {\n let expected: number | undefined;\n const id = add(\n {\n ...promiseOptions,\n ...messageOptions(messages.loading),\n isLoading: true,\n },\n (value) => {\n expected = value;\n },\n );\n const settle = (message: ToastMessage | (() => ToastMessage), tone: ToastTone) => {\n if (\n id === null ||\n records.get(id)?.entry.generation !== expected ||\n records.get(id)?.entry.state !== 'open'\n )\n return;\n const content = typeof message === 'function' ? message() : message;\n // Result factories may reentrantly update, dismiss, dispose, or reuse this ID.\n if (\n records.get(id)?.entry.generation !== expected ||\n records.get(id)?.entry.state !== 'open'\n )\n return;\n update(\n id,\n {\n tone,\n duration: promiseOptions.duration ?? duration,\n ...messageOptions(content),\n isLoading: false,\n },\n false,\n );\n };\n return {\n id,\n promise: task.then(\n (value) => {\n const message = messages.success;\n settle(typeof message === 'function' ? () => message(value) : message, 'success');\n return value;\n },\n (error: unknown) => {\n const message = messages.error;\n settle(typeof message === 'function' ? () => message(error) : message, 'danger');\n throw error;\n },\n ),\n };\n },\n };\n return manager;\n}\n","import {\n createContext,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport {\n Button,\n I18nProvider,\n Text,\n UNSTABLE_Toast as AriaToast,\n UNSTABLE_ToastContent as ToastContent,\n UNSTABLE_ToastList as ToastList,\n UNSTABLE_ToastQueue as ToastQueue,\n UNSTABLE_ToastRegion as ToastRegion,\n} from 'react-aria-components';\nimport {\n createToastManager,\n type ToastAction,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\n\n/** Keeps upstream accessibility/focus behavior while Kazee owns every timer and queue decision. */\nclass QueueAdapter extends ToastQueue<ToastEntry> {\n private regionPaused = false;\n constructor(private manager: ToastManager) {\n super();\n this.refresh();\n }\n private refresh() {\n this.visibleToasts = this.manager\n .getSnapshot()\n .map((content) => ({ key: content.id, content }));\n }\n override subscribe(listener: () => void) {\n return this.manager.subscribe(() => {\n this.refresh();\n listener();\n });\n }\n override add(content: ToastEntry): string {\n return this.manager.add(content) ?? '';\n }\n override close(key: string) {\n this.manager.dismiss(key);\n }\n override clear() {\n this.manager.clear();\n }\n override pauseAll() {\n if (!this.regionPaused) {\n this.regionPaused = true;\n this.manager.pause('region');\n }\n }\n override resumeAll() {\n if (this.regionPaused) {\n this.regionPaused = false;\n this.manager.resume('region');\n }\n }\n}\n\ninterface ToastContextValue {\n manager: ToastManager;\n closeLabel: string;\n placement: ToastPlacement;\n dir: 'ltr' | 'rtl';\n showProgress: boolean;\n showCloseButton: boolean;\n swipeThreshold: number;\n restoreFocus: () => void;\n}\nconst ToastContext = createContext<ToastContextValue | null>(null);\nexport interface ToastProviderProps {\n children?: ReactNode;\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n /** Modifier names followed by a key. An empty array disables the shortcut. */\n hotkey?: readonly string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n /** Show the dismiss button. Hidden by default; timers and keyboard dismissal still work. */\n showCloseButton?: boolean;\n swipeThreshold?: number;\n /** Customize presentation with the exported Toast component, retaining region behavior. */\n renderToast?: (entry: ToastEntry) => ReactNode;\n}\n\nexport function ToastProvider({\n children,\n manager: suppliedManager,\n placement = 'bottom-end',\n label = 'Notifikasi / Notifications',\n closeLabel = 'Tutup notifikasi / Close notification',\n hotkey = ['Alt', 't'],\n dir = 'ltr',\n showProgress = false,\n showCloseButton = false,\n swipeThreshold = 50,\n renderToast,\n}: ToastProviderProps) {\n const [ownedManager] = useState(() => createToastManager());\n const manager = suppliedManager ?? ownedManager;\n const queue = useMemo(() => new QueueAdapter(manager), [manager]);\n const region = useRef<HTMLDivElement>(null);\n const entries = useSyncExternalStore(\n manager.subscribe,\n manager.getSnapshot,\n manager.getServerSnapshot,\n );\n const positions = useRef(new Map<string, number>());\n useLayoutEffect(() => {\n const nodes = region.current?.querySelectorAll<HTMLElement>('.toast');\n const previous = positions.current;\n const next = new Map<string, number>();\n const animations: Animation[] = [];\n const regionTop = region.current?.getBoundingClientRect().top ?? 0;\n const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n for (const node of nodes ?? []) {\n const id = node.dataset.toastId;\n if (!id) continue;\n // Fixed bottom placement changes the region origin as its height grows.\n // Include that origin so a stationary toast does not falsely animate.\n const top = node.offsetTop + regionTop;\n next.set(id, top);\n const before = previous.get(id);\n if (\n before !== undefined &&\n before !== top &&\n node.dataset.state === 'open' &&\n !reducedMotion &&\n node.animate\n ) {\n const style = getComputedStyle(node);\n const token = style.getPropertyValue('--ds-motion-duration-normal').trim();\n const duration = token.endsWith('ms') ? parseFloat(token) : parseFloat(token) * 1000;\n animations.push(\n node.animate([{ translate: `0 ${before - top}px` }, { translate: '0 0' }], {\n duration: Number.isFinite(duration) ? duration : 160,\n easing: style.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease-out',\n }),\n );\n }\n }\n positions.current = next;\n return () => {\n for (const animation of animations) animation.cancel();\n };\n }, [entries]);\n const lastFocused = useRef<HTMLElement | null>(null);\n const lifetime = useRef({ generation: 0 });\n const hotkeySignature = hotkey.join('+');\n useEffect(() => {\n const keys = hotkeySignature ? hotkeySignature.split('+') : [];\n const detach = manager.attach();\n let documentPaused = false;\n let windowPaused = false;\n const visibility = () => {\n if (document.hidden && !documentPaused) {\n documentPaused = true;\n manager.pause('document');\n } else if (!document.hidden && documentPaused) {\n documentPaused = false;\n manager.resume('document');\n }\n };\n const blur = () => {\n if (!windowPaused) {\n windowPaused = true;\n manager.pause('window');\n }\n };\n const focus = () => {\n if (windowPaused) {\n windowPaused = false;\n manager.resume('window');\n }\n };\n visibility();\n const keydown = (event: KeyboardEvent) => {\n if (event.defaultPrevented) return;\n if (event.key === 'Escape' && region.current?.contains(event.target as Node)) {\n const target = event.target as HTMLElement;\n if (target.closest('input,textarea,select,[contenteditable=\"true\"]')) return;\n const focused = target.closest<HTMLElement>('.toast[data-state=\"open\"]');\n const latest = [...manager.getSnapshot()].reverse().find((entry) => entry.state === 'open');\n const id = focused?.dataset.toastId ?? latest?.id;\n if (id) {\n event.preventDefault();\n event.stopPropagation();\n manager.dismiss(id);\n }\n return;\n }\n if (!keys.length) return;\n const key = keys[keys.length - 1].toLowerCase();\n const modifiers = keys.slice(0, -1).map((value) => value.toLowerCase());\n if (\n event.key.toLowerCase() === key &&\n event.altKey === modifiers.includes('alt') &&\n event.ctrlKey === modifiers.includes('control') &&\n event.metaKey === modifiers.includes('meta') &&\n event.shiftKey === modifiers.includes('shift')\n ) {\n const target = region.current?.querySelector<HTMLElement>('.toast[data-state=\"open\"]');\n if (target) {\n event.preventDefault();\n target.focus();\n }\n }\n };\n const focusIn = (event: FocusEvent) => {\n if (\n region.current?.contains(event.target as Node) &&\n !region.current.contains(event.relatedTarget as Node | null)\n )\n lastFocused.current = event.relatedTarget as HTMLElement | null;\n };\n document.addEventListener('focusin', focusIn);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keydown);\n window.addEventListener('blur', blur);\n window.addEventListener('focus', focus);\n return () => {\n document.removeEventListener('focusin', focusIn);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keydown);\n window.removeEventListener('blur', blur);\n window.removeEventListener('focus', focus);\n detach();\n if (documentPaused) manager.resume('document');\n if (windowPaused) manager.resume('window');\n queue.resumeAll();\n };\n }, [manager, hotkeySignature, queue]);\n useEffect(() => {\n const lifecycle = lifetime.current;\n const token = ++lifecycle.generation;\n return () => {\n // React StrictMode immediately mounts again; only a real unmount disposes owned state.\n queueMicrotask(() => {\n if (lifecycle.generation === token) ownedManager.dispose();\n });\n };\n }, [ownedManager]);\n const context = {\n manager,\n closeLabel,\n placement,\n dir,\n showProgress,\n showCloseButton,\n swipeThreshold,\n restoreFocus: () => {\n const next = region.current?.querySelector<HTMLElement>('.toast[data-state=\"open\"]');\n if (next) next.focus();\n else if (lastFocused.current?.isConnected) lastFocused.current.focus();\n },\n };\n return (\n <ToastContext.Provider value={context}>\n {children}\n <I18nProvider locale={dir === 'rtl' ? 'ar' : 'en'}>\n <ToastRegion\n queue={queue}\n ref={region}\n className=\"toast-region\"\n data-placement={placement}\n aria-label={label}\n aria-keyshortcuts={hotkey.length ? hotkey.join('+') : undefined}\n >\n <ToastList<ToastEntry> className=\"toast-list\">\n {({ toast }) => (\n <>{renderToast ? renderToast(toast.content) : <Toast entry={toast.content} />}</>\n )}\n </ToastList>\n </ToastRegion>\n </I18nProvider>\n </ToastContext.Provider>\n );\n}\n\nexport function useToast(): ToastManager {\n const context = useContext(ToastContext);\n if (!context) throw new Error('useToast must be used within a ToastProvider.');\n return context.manager;\n}\nexport interface ToastProps {\n entry: ToastEntry;\n /** Override the provider's close button visibility for this toast. */\n showCloseButton?: boolean;\n /** Override the provider's progress visibility for this toast. */\n showProgress?: boolean;\n indicator?: ReactNode;\n children?: ReactNode;\n /** Additional class appended to the shared toast class. */\n className?: string;\n}\n\nfunction Indicator({ entry }: { entry: ToastEntry }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n aria-hidden=\"true\"\n >\n {entry.isLoading ? (\n <circle cx=\"12\" cy=\"12\" r=\"8\" strokeDasharray=\"36 14\" />\n ) : entry.tone === 'success' ? (\n <path d=\"m5 12 4 4L19 6\" />\n ) : entry.tone === 'warning' || entry.tone === 'danger' ? (\n <>\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v5m0 3v1\" />\n </>\n ) : (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 10v7m0-11v1\" />\n </>\n )}\n </svg>\n );\n}\n\nexport function Toast({\n entry,\n indicator,\n children,\n className,\n showCloseButton: closeOverride,\n showProgress: progressOverride,\n}: ToastProps) {\n const actionDescriptionId = useId();\n const cancelDescriptionId = useId();\n const context = useContext(ToastContext);\n if (!context) throw new Error('Toast must be used within a ToastProvider region.');\n const { manager, closeLabel, placement, dir, swipeThreshold, restoreFocus } = context;\n const showCloseButton = closeOverride ?? context.showCloseButton;\n const showProgress = progressOverride ?? context.showProgress;\n const ref = useRef<HTMLDivElement>(null);\n const drag = useRef<{\n x: number;\n y: number;\n id: number;\n cancelled: boolean;\n offset: number;\n } | null>(null);\n const [offset, setOffset] = useState(0);\n const [swipe, setSwipe] = useState<'move' | 'cancel' | 'end'>();\n const closing = entry.state === 'closing';\n const direction = (placement.endsWith('start') ? -1 : 1) * (dir === 'rtl' ? -1 : 1);\n useEffect(() => {\n if (closing && ref.current?.contains(document.activeElement)) restoreFocus?.();\n }, [closing, restoreFocus]);\n const action = (item: ToastAction, reason: 'action' | 'cancel') => {\n item.onAction();\n if (item.dismiss !== false) manager.dismiss(entry.id, reason);\n };\n const finishSwipe = (commit: boolean) => {\n const current = drag.current;\n drag.current = null;\n if (!current) return;\n if (current && !current.cancelled) manager.resume('swipe');\n if (commit && !current.cancelled && current.offset * direction >= swipeThreshold) {\n setSwipe('end');\n setOffset(current.offset);\n manager.dismiss(entry.id, 'swipe');\n } else {\n setSwipe('cancel');\n setOffset(0);\n }\n };\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const handlers = {\n pointerdown: (event: PointerEvent) => {\n if (\n closing ||\n drag.current ||\n event.button !== 0 ||\n (event.target as HTMLElement).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable=\"true\"]',\n )\n )\n return;\n // WebKit starts native text selection/drag before a later pointermove can\n // establish a swipe. Preserve touch pan-y, but suppress mouse text dragging.\n if (event.pointerType === 'mouse') event.preventDefault();\n drag.current = {\n x: event.clientX,\n y: event.clientY,\n id: event.pointerId,\n cancelled: false,\n offset: 0,\n };\n ref.current?.setPointerCapture?.(event.pointerId);\n manager.pause('swipe');\n },\n selectstart: (event: Event) => {\n if (drag.current && !drag.current.cancelled) event.preventDefault();\n },\n dragstart: (event: Event) => {\n if (drag.current && !drag.current.cancelled) event.preventDefault();\n },\n pointermove: (event: PointerEvent) => {\n const current = drag.current;\n if (!current || current.id !== event.pointerId || current.cancelled) return;\n const x = event.clientX - current.x;\n const y = event.clientY - current.y;\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n current.cancelled = true;\n setOffset(0);\n manager.resume('swipe');\n return;\n }\n if (Math.abs(x) > 8) {\n current.offset = Math.max(0, x * direction) * direction;\n setSwipe('move');\n setOffset(current.offset);\n }\n },\n pointerup: () => finishSwipe(true),\n pointercancel: () => finishSwipe(false),\n lostpointercapture: () => {\n if (drag.current) finishSwipe(false);\n },\n };\n for (const [name, handler] of Object.entries(handlers))\n node.addEventListener(name, handler as EventListener);\n return () => {\n for (const [name, handler] of Object.entries(handlers))\n node.removeEventListener(name, handler as EventListener);\n };\n });\n useEffect(\n () => () => {\n if (drag.current) {\n const active = !drag.current.cancelled;\n drag.current = null;\n if (active) manager.resume('swipe');\n }\n },\n [manager],\n );\n return (\n <AriaToast\n toast={{ key: entry.id, content: entry }}\n ref={ref}\n className={`toast${className ? ` ${className}` : ''}`}\n data-toast-id={entry.id}\n data-tone={entry.tone}\n data-has-close={showCloseButton || undefined}\n data-loading={entry.isLoading || undefined}\n data-state={entry.state}\n data-placement={placement}\n data-paused={entry.paused || undefined}\n data-swipe={swipe}\n inert={closing || undefined}\n aria-hidden={closing || undefined}\n style={{ '--toast-swipe-x': `${offset}px`, touchAction: 'pan-y' } as CSSProperties}\n >\n <span className=\"toast__indicator\" aria-hidden=\"true\">\n {indicator ?? <Indicator entry={entry} />}\n </span>\n <ToastContent className=\"toast__body\" role=\"status\" aria-live=\"polite\">\n <Text slot=\"title\" className=\"toast__title\">\n {entry.title}\n </Text>\n {entry.description && (\n <Text slot=\"description\" className=\"toast__description\">\n {entry.description}\n </Text>\n )}\n {children}\n {(entry.action || entry.cancel) && (\n <div className=\"toast__actions\">\n {entry.action && (\n <span id={actionDescriptionId} hidden>\n {entry.action.altText}\n </span>\n )}\n {entry.cancel && (\n <span id={cancelDescriptionId} hidden>\n {entry.cancel.altText}\n </span>\n )}\n {entry.action && (\n <Button\n className=\"toast__action\"\n aria-describedby={actionDescriptionId}\n isDisabled={closing}\n onPress={() => action(entry.action!, 'action')}\n >\n {entry.action.label}\n </Button>\n )}\n {entry.cancel && (\n <Button\n className=\"toast__action\"\n data-cancel\n aria-describedby={cancelDescriptionId}\n isDisabled={closing}\n onPress={() => action(entry.cancel!, 'cancel')}\n >\n {entry.cancel.label}\n </Button>\n )}\n </div>\n )}\n </ToastContent>\n {showCloseButton && (\n <Button slot=\"close\" className=\"toast__close\" aria-label={closeLabel} isDisabled={closing}>\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </Button>\n )}\n {showProgress && entry.duration > 0 && !entry.isLoading && (\n <span\n key={`${entry.generation}-${entry.remaining}-${entry.paused}`}\n className=\"toast__progress\"\n aria-hidden=\"true\"\n style={\n {\n '--toast-progress': entry.remaining / entry.duration,\n '--toast-remaining': `${entry.remaining}ms`,\n } as CSSProperties\n }\n />\n )}\n </AriaToast>\n );\n}\n"],"mappings":"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"}
|