@kazee-ds/vue 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +35 -33
  2. package/dist/index.js +2842 -1346
  3. package/dist/index.js.map +1 -1
  4. package/dist/types/Alert.vue.d.ts +2 -1
  5. package/dist/types/Badge.vue.d.ts +2 -1
  6. package/dist/types/Breadcrumb.vue.d.ts +2 -1
  7. package/dist/types/Button.vue.d.ts +2 -1
  8. package/dist/types/ButtonGroup.d.ts +9 -0
  9. package/dist/types/Card.vue.d.ts +3 -2
  10. package/dist/types/Chart.vue.d.ts +2 -1
  11. package/dist/types/Checkbox.vue.d.ts +2 -1
  12. package/dist/types/CheckboxIndicator.vue.d.ts +14 -0
  13. package/dist/types/Combobox.vue.d.ts +2 -1
  14. package/dist/types/CompositionListBox.vue.d.ts +32 -0
  15. package/dist/types/CompositionListBoxItem.vue.d.ts +23 -0
  16. package/dist/types/CompositionListBoxItemIndicator.vue.d.ts +15 -0
  17. package/dist/types/CompositionListBoxSection.vue.d.ts +15 -0
  18. package/dist/types/DataTable.vue.d.ts +2 -1
  19. package/dist/types/DataTableRoot.vue.d.ts +26 -0
  20. package/dist/types/DataTableSortButton.vue.d.ts +18 -0
  21. package/dist/types/DateRangePanel.vue.d.ts +4 -3
  22. package/dist/types/DateRangePicker.vue.d.ts +5 -3
  23. package/dist/types/Description.vue.d.ts +16 -0
  24. package/dist/types/Dialog.vue.d.ts +3 -2
  25. package/dist/types/DropdownMenu.vue.d.ts +3 -2
  26. package/dist/types/DropdownMenuBranch.vue.d.ts +2 -1
  27. package/dist/types/Empty.vue.d.ts +2 -1
  28. package/dist/types/Field.vue.d.ts +2 -1
  29. package/dist/types/FieldError.vue.d.ts +16 -0
  30. package/dist/types/FieldFeedback.vue.d.ts +2 -1
  31. package/dist/types/Form.vue.d.ts +2 -1
  32. package/dist/types/Input.vue.d.ts +3 -2
  33. package/dist/types/InputControl.vue.d.ts +40 -0
  34. package/dist/types/InputLabel.vue.d.ts +13 -0
  35. package/dist/types/InputRoot.vue.d.ts +37 -0
  36. package/dist/types/Label.vue.d.ts +2 -1
  37. package/dist/types/Listbox.vue.d.ts +2 -1
  38. package/dist/types/MenuItemContent.vue.d.ts +2 -1
  39. package/dist/types/NumberField.vue.d.ts +2 -1
  40. package/dist/types/Pagination.vue.d.ts +2 -1
  41. package/dist/types/Popover.vue.d.ts +2 -1
  42. package/dist/types/RadioGroup.vue.d.ts +2 -1
  43. package/dist/types/Select.vue.d.ts +3 -2
  44. package/dist/types/SelectClearButton.vue.d.ts +15 -0
  45. package/dist/types/SelectGroup.d.ts +9 -0
  46. package/dist/types/SelectPopover.vue.d.ts +13 -0
  47. package/dist/types/SelectRoot.vue.d.ts +44 -0
  48. package/dist/types/SelectTrigger.vue.d.ts +13 -0
  49. package/dist/types/SelectValue.vue.d.ts +19 -0
  50. package/dist/types/Separator.vue.d.ts +2 -1
  51. package/dist/types/Sidebar.vue.d.ts +2 -1
  52. package/dist/types/SidebarNavigation.vue.d.ts +13 -0
  53. package/dist/types/SidebarRoot.vue.d.ts +26 -0
  54. package/dist/types/SidebarToggle.vue.d.ts +15 -0
  55. package/dist/types/Skeleton.vue.d.ts +2 -1
  56. package/dist/types/Spinner.vue.d.ts +2 -1
  57. package/dist/types/Switch.vue.d.ts +2 -1
  58. package/dist/types/Table.vue.d.ts +2 -1
  59. package/dist/types/Tabs.vue.d.ts +2 -1
  60. package/dist/types/TabsListView.vue.d.ts +2 -1
  61. package/dist/types/Textarea.vue.d.ts +2 -1
  62. package/dist/types/TextareaControl.vue.d.ts +13 -0
  63. package/dist/types/Toast.vue.d.ts +3 -1
  64. package/dist/types/ToastActionButton.vue.d.ts +16 -0
  65. package/dist/types/ToastCloseButton.vue.d.ts +13 -0
  66. package/dist/types/ToastProvider.vue.d.ts +6 -1
  67. package/dist/types/ToggleButton.vue.d.ts +2 -1
  68. package/dist/types/ToggleButtonGroup.vue.d.ts +3 -2
  69. package/dist/types/ToggleGroup.vue.d.ts +3 -2
  70. package/dist/types/Tooltip.vue.d.ts +2 -1
  71. package/dist/types/composition-factory.d.ts +20 -0
  72. package/dist/types/composition.d.ts +581 -0
  73. package/dist/types/data-table-composition-context.d.ts +8 -0
  74. package/dist/types/feedback-context.d.ts +8 -0
  75. package/dist/types/index.d.ts +312 -30
  76. package/dist/types/input-composition-context.d.ts +15 -0
  77. package/dist/types/select-composition-context.d.ts +18 -0
  78. package/dist/types/sidebar-composition-context.d.ts +7 -0
  79. package/dist/types/styling.d.ts +5 -0
  80. package/dist/types/toast-composition-context.d.ts +9 -0
  81. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_hoisted_1","_openBlock","_createElementBlock","_normalizeClass","_renderSlot","_sfc_main","Button","$attrs","_unref","_openBlock","_createBlock","_mergeProps","_withCtx","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createBlock","_unref","_normalizeClass","_withCtx","_createElementVNode","_renderSlot","_sfc_main","_sfc_main","_hoisted_1","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_sfc_main","_hoisted_1","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_toDisplayString","_createCommentVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_withModifiers","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_unref","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","_withCtx","_renderSlot","_Fragment","ChevronIcon","CloseIcon","_renderList","_createBlock","CheckIcon","FieldFeedback","SelectionValidation","_sfc_main","Select","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_useModel","_openBlock","_createElementBlock","_normalizeClass","_createVNode","_unref","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_renderSlot","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_useModel","_openBlock","_createElementBlock","_createVNode","_unref","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_createCommentVNode","_sfc_main","_openBlock","_createBlock","_unref","RekaLabel","_withCtx","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_unref","_withCtx","CheckIcon","_createTextVNode","_toDisplayString","_createCommentVNode","FieldFeedback","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_useModel","_openBlock","_createBlock","_unref","_withCtx","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","FieldFeedback","_sfc_main","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_unref","_withCtx","_createTextVNode","_toDisplayString","FieldFeedback","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_unref","_withCtx","_createTextVNode","_toDisplayString","_renderSlot","FieldFeedback","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_unref","_withCtx","_Fragment","_renderList","_createBlock","CheckIcon","_createCommentVNode","FieldFeedback","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createVNode","_unref","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","FieldFeedback","_createCommentVNode","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_openBlock","_createElementBlock","_renderSlot","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_createElementVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_renderSlot","_sfc_main","$attrs","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_sfc_main","$attrs","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_unref","_withCtx","_Fragment","_renderList","_createBlock","_createCommentVNode","_renderSlot","_toDisplayString","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createBlock","_unref","_normalizeClass","_withCtx","_createElementBlock","_createElementVNode","TabsListView","_createSlots","_renderSlot","_createCommentVNode","_Fragment","_renderList","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_Fragment","_renderList","_sfc_main","$attrs","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","_mergeProps","_toDisplayString","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_openBlock","_createElementBlock","_createVNode","Table","_withCtx","_createElementVNode","_Fragment","_renderList","_createTextVNode","_toDisplayString","_renderSlot","_createCommentVNode","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createCommentVNode","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_openBlock","_createElementBlock","_Fragment","_createVNode","_unref","_withCtx","_createElementVNode","_normalizeStyle","_renderSlot","_createTextVNode","_toDisplayString","_createBlock","_createCommentVNode","RekaToastAction","_sfc_main","$slots","_hoisted_1","_openBlock","_createBlock","_unref","RekaToastProvider","_withCtx","_renderSlot","_createElementVNode","_createVNode","_createElementBlock","_Fragment","_renderList","Toast","_createSlots","_mergeProps","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_createCommentVNode","_toDisplayString","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_Fragment","_renderList","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_createVNode","Table","_withCtx","_createBlock","Empty","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","_mergeProps","_createElementVNode","_createCommentVNode","CloseIcon","_createElementBlock","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_Fragment","_createBlock","CheckIcon","_createCommentVNode","_renderSlot","_createElementVNode","_toDisplayString","ChevronIcon","_sfc_main","$slots","_resolveComponent","_openBlock","_createBlock","_unref","_withCtx","_createElementBlock","_Fragment","_renderList","_createCommentVNode","_createVNode","_createTextVNode","_toDisplayString","MenuItemContent","_createSlots","_renderSlot","_mergeProps","_sfc_main","$slots","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","DropdownMenuBranch","_createSlots","_normalizeProps","_guardReactiveProps","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_createTextVNode","_toDisplayString","_createElementVNode","_createElementBlock","_createCommentVNode","_renderSlot","_sfc_main","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","_sfc_main","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode","_sfc_main","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_openBlock","_createElementBlock","_createElementVNode","_unref","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","_withCtx","_renderSlot","CloseIcon","ChevronIcon","_Fragment","_renderList","_createBlock","CheckIcon","FieldFeedback","SelectionValidation","_sfc_main","$slots","_hoisted_1","_hoisted_2","_openBlock","_createBlock","_unref","_withCtx","_createElementBlock","_Fragment","_renderList","RekaItem","_renderSlot","_createCommentVNode","_toDisplayString","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_Fragment","_renderList","_createCommentVNode","_createVNode","_withCtx","ChevronIcon","_createBlock","_createTextVNode","_sfc_main","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_unref","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","DateRangePanel","_createBlock","_withCtx","ChevronIcon","_Fragment","SelectionValidation","_sfc_main"],"sources":["../src/Button.vue","../src/Button.vue","../src/ButtonGroup.ts","../src/ButtonGroupSeparator.ts","../src/button-family-context.ts","../src/ToggleButton.vue","../src/ToggleButton.vue","../src/ToggleButtonGroup.vue","../src/ToggleButtonGroup.vue","../src/CheckIcon.vue","../src/ChevronIcon.vue","../src/CloseIcon.vue","../src/FieldFeedback.vue","../src/FieldFeedback.vue","../src/SelectionValidation.vue","../src/SelectionValidation.vue","../src/useFeedback.ts","../src/selection-options.ts","../src/Select.vue","../src/Select.vue","../src/SelectGroup.ts","../src/Input.vue","../src/Input.vue","../src/Textarea.vue","../src/Textarea.vue","../src/Label.vue","../src/Label.vue","../src/Checkbox.vue","../src/Checkbox.vue","../src/RadioGroup.vue","../src/RadioGroup.vue","../src/Switch.vue","../src/Switch.vue","../src/form-context.ts","../src/Field.vue","../src/Field.vue","../src/Form.vue","../src/Form.vue","../src/listbox-selection.ts","../src/Listbox.vue","../src/Listbox.vue","../src/NumberField.vue","../src/NumberField.vue","../src/Card.vue","../src/Card.vue","../src/Badge.vue","../src/Badge.vue","../src/Skeleton.vue","../src/Skeleton.vue","../src/Separator.vue","../src/Separator.vue","../src/tabs-indicator.ts","../src/TabsListView.vue","../src/TabsListView.vue","../src/Tabs.vue","../src/Tabs.vue","../src/pagination-model.ts","../src/Pagination.vue","../src/Pagination.vue","../src/Table.vue","../src/Table.vue","../src/DataTable.vue","../src/DataTable.vue","../src/Alert.vue","../src/Alert.vue","../src/useToast.ts","../src/Toast.vue","../src/Toast.vue","../src/toast-model.ts","../src/ToastProvider.vue","../src/ToastProvider.vue","../src/Empty.vue","../src/Empty.vue","../src/Breadcrumb.vue","../src/Breadcrumb.vue","../src/useDisclosure.ts","../src/Sidebar.vue","../src/Sidebar.vue","../src/chart-model.ts","../src/Chart.vue","../src/Chart.vue","../src/Dialog.vue","../src/Dialog.vue","../src/MenuItemContent.vue","../src/MenuItemContent.vue","../src/overlay-model.ts","../src/DropdownMenuBranch.vue","../src/DropdownMenuBranch.vue","../src/DropdownMenu.vue","../src/DropdownMenu.vue","../src/Popover.vue","../src/Popover.vue","../src/Tooltip.vue","../src/Tooltip.vue","../src/Spinner.vue","../src/Spinner.vue","../src/Combobox.vue","../src/Combobox.vue","../src/toggle-group-model.ts","../src/ToggleGroup.vue","../src/ToggleGroup.vue","../src/date-range-model.ts","../src/DateRangePanel.vue","../src/DateRangePanel.vue","../src/DateRangePicker.vue","../src/DateRangePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nconst props = withDefaults(\n defineProps<{\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Accessible name for icon-only buttons. */\n ariaLabel?: string;\n /** ID of an element supplying the accessible name. */\n ariaLabelledby?: string;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Disables the button. Vue uses `disabled`, where the React package uses `isDisabled`. */\n disabled?: boolean;\n /** Square icon button; supply aria-label or aria-labelledby. */\n iconOnly?: boolean;\n /** Blocks actions while retaining keyboard focus. */\n pending?: boolean;\n }>(),\n {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n type: 'button',\n disabled: false,\n iconOnly: false,\n pending: false,\n },\n);\n\ndefineSlots<{\n default?: (state: {\n pending: boolean;\n disabled: boolean;\n hovered: boolean;\n pressed: boolean;\n focused: boolean;\n focusVisible: boolean;\n }) => unknown;\n}>();\n\nconst hovered = ref(false),\n pressed = ref(false),\n focused = ref(false),\n focusVisible = ref(false);\nwatch(\n () => [props.disabled, props.pending],\n ([disabled, pending]) => {\n if (disabled || pending) {\n hovered.value = false;\n pressed.value = false;\n }\n if (props.disabled) {\n focused.value = false;\n focusVisible.value = false;\n }\n },\n);\nfunction hover(event: PointerEvent) {\n if (!props.disabled && !props.pending && event.pointerType !== 'touch') hovered.value = true;\n}\nfunction pointerdown(event: PointerEvent) {\n focusVisible.value = false;\n if (!props.disabled && !props.pending && event.button === 0) pressed.value = true;\n}\nfunction leave() {\n hovered.value = false;\n pressed.value = false;\n}\nfunction focus(event: FocusEvent) {\n focused.value = true;\n focusVisible.value = (event.target as HTMLButtonElement).matches(':focus-visible');\n}\nfunction blur() {\n focused.value = false;\n focusVisible.value = false;\n pressed.value = false;\n}\n\nconst emit = defineEmits<{\n /** Emitted when the button is clicked. Listen with `@press`, where React uses `onPress`. */\n press: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n 'button',\n `button--${props.variant}`,\n props.size !== 'md' && `button--${props.size}`,\n props.iconOnly && 'button--icon-only',\n props.fullWidth && !props.iconOnly && 'button--full-width',\n]);\nfunction press(event: MouseEvent) {\n if (props.disabled || props.pending) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n emit('press', event);\n}\nfunction keydown(event: KeyboardEvent) {\n if (focused.value) focusVisible.value = true;\n if (props.pending && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n if (!props.disabled && (event.key === 'Enter' || event.key === ' ')) pressed.value = true;\n}\n</script>\n\n<template>\n <button\n :class=\"classes\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :type=\"pending ? 'button' : type\"\n :disabled=\"disabled\"\n :aria-disabled=\"pending || undefined\"\n :data-pending=\"pending || undefined\"\n @click=\"press\"\n @keydown=\"keydown\"\n @keyup=\"pressed = false\"\n @pointerenter=\"hover\"\n @pointerleave=\"leave\"\n @pointerdown=\"pointerdown\"\n @pointerup=\"pressed = false\"\n @pointercancel=\"pressed = false\"\n @focus=\"focus\"\n @blur=\"blur\"\n >\n <slot\n :pending=\"pending\"\n :disabled=\"disabled\"\n :hovered=\"hovered\"\n :pressed=\"pressed\"\n :focused=\"focused\"\n :focus-visible=\"focusVisible\"\n />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nconst props = withDefaults(\n defineProps<{\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Accessible name for icon-only buttons. */\n ariaLabel?: string;\n /** ID of an element supplying the accessible name. */\n ariaLabelledby?: string;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Disables the button. Vue uses `disabled`, where the React package uses `isDisabled`. */\n disabled?: boolean;\n /** Square icon button; supply aria-label or aria-labelledby. */\n iconOnly?: boolean;\n /** Blocks actions while retaining keyboard focus. */\n pending?: boolean;\n }>(),\n {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n type: 'button',\n disabled: false,\n iconOnly: false,\n pending: false,\n },\n);\n\ndefineSlots<{\n default?: (state: {\n pending: boolean;\n disabled: boolean;\n hovered: boolean;\n pressed: boolean;\n focused: boolean;\n focusVisible: boolean;\n }) => unknown;\n}>();\n\nconst hovered = ref(false),\n pressed = ref(false),\n focused = ref(false),\n focusVisible = ref(false);\nwatch(\n () => [props.disabled, props.pending],\n ([disabled, pending]) => {\n if (disabled || pending) {\n hovered.value = false;\n pressed.value = false;\n }\n if (props.disabled) {\n focused.value = false;\n focusVisible.value = false;\n }\n },\n);\nfunction hover(event: PointerEvent) {\n if (!props.disabled && !props.pending && event.pointerType !== 'touch') hovered.value = true;\n}\nfunction pointerdown(event: PointerEvent) {\n focusVisible.value = false;\n if (!props.disabled && !props.pending && event.button === 0) pressed.value = true;\n}\nfunction leave() {\n hovered.value = false;\n pressed.value = false;\n}\nfunction focus(event: FocusEvent) {\n focused.value = true;\n focusVisible.value = (event.target as HTMLButtonElement).matches(':focus-visible');\n}\nfunction blur() {\n focused.value = false;\n focusVisible.value = false;\n pressed.value = false;\n}\n\nconst emit = defineEmits<{\n /** Emitted when the button is clicked. Listen with `@press`, where React uses `onPress`. */\n press: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n 'button',\n `button--${props.variant}`,\n props.size !== 'md' && `button--${props.size}`,\n props.iconOnly && 'button--icon-only',\n props.fullWidth && !props.iconOnly && 'button--full-width',\n]);\nfunction press(event: MouseEvent) {\n if (props.disabled || props.pending) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n emit('press', event);\n}\nfunction keydown(event: KeyboardEvent) {\n if (focused.value) focusVisible.value = true;\n if (props.pending && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n if (!props.disabled && (event.key === 'Enter' || event.key === ' ')) pressed.value = true;\n}\n</script>\n\n<template>\n <button\n :class=\"classes\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :type=\"pending ? 'button' : type\"\n :disabled=\"disabled\"\n :aria-disabled=\"pending || undefined\"\n :data-pending=\"pending || undefined\"\n @click=\"press\"\n @keydown=\"keydown\"\n @keyup=\"pressed = false\"\n @pointerenter=\"hover\"\n @pointerleave=\"leave\"\n @pointerdown=\"pointerdown\"\n @pointerup=\"pressed = false\"\n @pointercancel=\"pressed = false\"\n @focus=\"focus\"\n @blur=\"blur\"\n >\n <slot\n :pending=\"pending\"\n :disabled=\"disabled\"\n :hovered=\"hovered\"\n :pressed=\"pressed\"\n :focused=\"focused\"\n :focus-visible=\"focusVisible\"\n />\n </button>\n</template>\n","import { cloneVNode, defineComponent, Fragment, h, type PropType, type VNode } from 'vue';\nimport Button from './Button.vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nexport default /* @__PURE__ */ defineComponent({\n name: 'ButtonGroup',\n inheritAttrs: false,\n props: {\n label: { type: String, required: true },\n variant: { type: String as PropType<ButtonVariant>, default: undefined },\n size: { type: String as PropType<ButtonSize>, default: undefined },\n disabled: { type: Boolean, default: undefined },\n fullWidth: Boolean,\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n function defaults(nodes: VNode[]): VNode[] {\n return nodes.map((child) => {\n if (child.type === Fragment && Array.isArray(child.children)) {\n const fragment = cloneVNode(child);\n fragment.children = defaults(child.children as VNode[]);\n return fragment;\n }\n if (child.type !== Button) return child;\n return cloneVNode(child, {\n variant: child.props?.variant ?? props.variant,\n size: child.props?.size ?? props.size,\n disabled: child.props?.disabled ?? props.disabled,\n });\n });\n }\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'group',\n 'aria-label': props.label,\n dir: props.dir,\n 'data-orientation': props.orientation,\n class: ['button-group', props.fullWidth && 'button-group--full-width'],\n },\n defaults(slots.default?.() ?? []),\n );\n },\n});\n","import { defineComponent, h } from 'vue';\nexport default /* @__PURE__ */ defineComponent({\n name: 'ButtonGroupSeparator',\n setup: () => () => h('span', { class: 'button-group__separator', 'aria-hidden': 'true' }),\n});\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { ButtonSize } from './types.js';\nexport const toggleButtonGroupKey: InjectionKey<\n ComputedRef<{\n size: ButtonSize;\n radio: boolean;\n selectedIds: string[];\n disabled: boolean;\n }>\n> = Symbol('KazeeToggleButtonGroup');\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, inject, ref } from 'vue';\nimport { Toggle, ToggleGroupItem } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n id?: string;\n variant?: 'default' | 'ghost';\n size?: ButtonSize;\n iconOnly?: boolean;\n modelValue?: boolean;\n defaultSelected?: boolean;\n disabled?: boolean;\n }>(),\n { id: undefined, size: undefined, variant: 'default', modelValue: undefined },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [selected: boolean];\n press: [event: MouseEvent];\n}>();\ndefineSlots<{ default?: (state: { selected: boolean; disabled: boolean }) => unknown }>();\nconst group = inject(toggleButtonGroupKey, undefined);\nif (group && !props.id) throw new Error('A grouped ToggleButton requires a unique nonempty id.');\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultSelected ?? false);\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst selected = computed(() => (controlled() ? !!props.modelValue : local.value));\nconst classes = computed(() => {\n const size = props.size ?? group?.value.size ?? 'md';\n return [\n 'button',\n 'toggle-button',\n `toggle-button--${props.variant}`,\n size !== 'md' && `button--${size}`,\n props.iconOnly && 'button--icon-only',\n ];\n});\nfunction update(value: boolean) {\n if (props.disabled) return;\n if (!controlled()) local.value = value;\n emit('update:modelValue', value);\n}\nfunction press(event: MouseEvent) {\n if (!props.disabled && !group?.value.disabled) emit('press', event);\n}\n</script>\n<template>\n <ToggleGroupItem\n v-if=\"group\"\n v-bind=\"$attrs\"\n :id=\"id\"\n :value=\"id ?? ''\"\n :class=\"classes\"\n :disabled=\"disabled\"\n :role=\"group.radio ? 'radio' : undefined\"\n :aria-checked=\"group.radio ? group.selectedIds.includes(id ?? '') : undefined\"\n :aria-pressed=\"group.radio ? undefined : group.selectedIds.includes(id ?? '')\"\n @click=\"press\"\n >\n <template #default=\"state\"\n ><slot :selected=\"!!state.modelValue\" :disabled=\"state.disabled\"\n /></template>\n </ToggleGroupItem>\n <Toggle\n v-else\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"classes\"\n :model-value=\"selected\"\n :disabled=\"disabled\"\n @update:model-value=\"update\"\n @click=\"press\"\n >\n <slot :selected=\"selected\" :disabled=\"!!disabled\" />\n </Toggle>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, inject, ref } from 'vue';\nimport { Toggle, ToggleGroupItem } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n id?: string;\n variant?: 'default' | 'ghost';\n size?: ButtonSize;\n iconOnly?: boolean;\n modelValue?: boolean;\n defaultSelected?: boolean;\n disabled?: boolean;\n }>(),\n { id: undefined, size: undefined, variant: 'default', modelValue: undefined },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [selected: boolean];\n press: [event: MouseEvent];\n}>();\ndefineSlots<{ default?: (state: { selected: boolean; disabled: boolean }) => unknown }>();\nconst group = inject(toggleButtonGroupKey, undefined);\nif (group && !props.id) throw new Error('A grouped ToggleButton requires a unique nonempty id.');\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultSelected ?? false);\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst selected = computed(() => (controlled() ? !!props.modelValue : local.value));\nconst classes = computed(() => {\n const size = props.size ?? group?.value.size ?? 'md';\n return [\n 'button',\n 'toggle-button',\n `toggle-button--${props.variant}`,\n size !== 'md' && `button--${size}`,\n props.iconOnly && 'button--icon-only',\n ];\n});\nfunction update(value: boolean) {\n if (props.disabled) return;\n if (!controlled()) local.value = value;\n emit('update:modelValue', value);\n}\nfunction press(event: MouseEvent) {\n if (!props.disabled && !group?.value.disabled) emit('press', event);\n}\n</script>\n<template>\n <ToggleGroupItem\n v-if=\"group\"\n v-bind=\"$attrs\"\n :id=\"id\"\n :value=\"id ?? ''\"\n :class=\"classes\"\n :disabled=\"disabled\"\n :role=\"group.radio ? 'radio' : undefined\"\n :aria-checked=\"group.radio ? group.selectedIds.includes(id ?? '') : undefined\"\n :aria-pressed=\"group.radio ? undefined : group.selectedIds.includes(id ?? '')\"\n @click=\"press\"\n >\n <template #default=\"state\"\n ><slot :selected=\"!!state.modelValue\" :disabled=\"state.disabled\"\n /></template>\n </ToggleGroupItem>\n <Toggle\n v-else\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"classes\"\n :model-value=\"selected\"\n :disabled=\"disabled\"\n @update:model-value=\"update\"\n @click=\"press\"\n >\n <slot :selected=\"selected\" :disabled=\"!!disabled\" />\n </Toggle>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, getCurrentInstance, provide, ref } from 'vue';\nimport { ToggleGroupRoot } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<{\n label: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n detached?: boolean;\n fullWidth?: boolean;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ default?: () => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() => {\n const value = controlled() ? props.modelValue : local.value;\n return Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n});\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n if (!controlled()) local.value = result;\n emit('update:modelValue', result);\n}\nconst radio = computed(() => !multiple.value);\nprovide(\n toggleButtonGroupKey,\n computed(() => ({\n size: props.size ?? 'md',\n radio: radio.value,\n selectedIds: ids.value,\n disabled: !!props.disabled,\n })),\n);\n</script>\n<template>\n <ToggleGroupRoot\n as-child\n class=\"button-group toggle-button-group\"\n :class=\"{ 'button-group--detached': detached, 'button-group--full-width': fullWidth }\"\n :aria-label=\"label\"\n :aria-orientation=\"orientation ?? 'horizontal'\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div :role=\"radio ? 'radiogroup' : 'toolbar'\"><slot /></div>\n </ToggleGroupRoot>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, getCurrentInstance, provide, ref } from 'vue';\nimport { ToggleGroupRoot } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<{\n label: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n detached?: boolean;\n fullWidth?: boolean;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ default?: () => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() => {\n const value = controlled() ? props.modelValue : local.value;\n return Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n});\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n if (!controlled()) local.value = result;\n emit('update:modelValue', result);\n}\nconst radio = computed(() => !multiple.value);\nprovide(\n toggleButtonGroupKey,\n computed(() => ({\n size: props.size ?? 'md',\n radio: radio.value,\n selectedIds: ids.value,\n disabled: !!props.disabled,\n })),\n);\n</script>\n<template>\n <ToggleGroupRoot\n as-child\n class=\"button-group toggle-button-group\"\n :class=\"{ 'button-group--detached': detached, 'button-group--full-width': fullWidth }\"\n :aria-label=\"label\"\n :aria-orientation=\"orientation ?? 'horizontal'\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div :role=\"radio ? 'radiogroup' : 'toolbar'\"><slot /></div>\n </ToggleGroupRoot>\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3.5 8.5l3 3 6-6.5\" />\n </svg>\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n</template>\n","<script setup lang=\"ts\">\nwithDefaults(\n defineProps<{\n controlId: string;\n description?: string;\n errorMessage?: string;\n showError: boolean;\n }>(),\n { description: undefined, errorMessage: undefined },\n);\n</script>\n<template>\n <div v-if=\"description || showError\" class=\"field-feedback\">\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <span v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</span>\n </div>\n</template>\n","<script setup lang=\"ts\">\nwithDefaults(\n defineProps<{\n controlId: string;\n description?: string;\n errorMessage?: string;\n showError: boolean;\n }>(),\n { description: undefined, errorMessage: undefined },\n);\n</script>\n<template>\n <div v-if=\"description || showError\" class=\"field-feedback\">\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <span v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</span>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount } from 'vue';\ndefineProps<{ hasValue: boolean; required?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ invalid: []; reset: [cancelled: boolean] }>();\nconst input = ref<HTMLInputElement>();\nlet form: HTMLFormElement | null | undefined;\nconst reset = (event: Event) => setTimeout(() => emit('reset', event.defaultPrevented), 0);\nonMounted(() => {\n form = input.value?.form;\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <input\n ref=\"input\"\n class=\"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 @invalid.prevent=\"emit('invalid')\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount } from 'vue';\ndefineProps<{ hasValue: boolean; required?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ invalid: []; reset: [cancelled: boolean] }>();\nconst input = ref<HTMLInputElement>();\nlet form: HTMLFormElement | null | undefined;\nconst reset = (event: Event) => setTimeout(() => emit('reset', event.defaultPrevented), 0);\nonMounted(() => {\n form = input.value?.form;\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <input\n ref=\"input\"\n class=\"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 @invalid.prevent=\"emit('invalid')\"\n />\n</template>\n","import { computed } from 'vue';\nimport { useId } from 'reka-ui';\nexport function useFeedback(props: {\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n}) {\n const generated = useId();\n const controlId = computed(() => props.id ?? generated);\n const showError = computed(() => !!(props.invalid && props.errorMessage));\n const describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n );\n return { controlId, showError, describedBy };\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","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, ref, getCurrentInstance } from 'vue';\nimport {\n SelectContent,\n SelectItem,\n SelectItemText,\n SelectPortal,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n} from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nimport type { SelectSize, SelectVariant } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | undefined;\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n placeholder?: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n clearable?: boolean;\n clearLabel?: string;\n }>(),\n {\n fullWidth: true,\n size: 'md',\n variant: 'primary',\n placeholder: undefined,\n selectionMode: undefined,\n modelValue: undefined,\n defaultValue: undefined,\n description: undefined,\n errorMessage: undefined,\n requiredMessage: undefined,\n name: undefined,\n dir: undefined,\n clearLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: Value]; clear: []; close: [] }>();\nfunction afterClose() {\n queueMicrotask(() => emit('close'));\n}\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n value?: (props: { selected: SelectOption[] }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n selectionIds(controlled() ? props.modelValue : local.value, props.options, multiple.value),\n);\nconst selected = computed(() => props.options.filter((o) => ids.value.includes(o.id)));\nconst invalid = computed(\n () => props.invalid || (tried.value && props.required && ids.value.length === 0),\n);\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && ids.value.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLButtonElement>('.select__trigger')?.focus();\n}\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, multiple.value);\n const result = (multiple.value ? next : next[0]) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\nfunction clear() {\n update(multiple.value ? [] : undefined);\n emit('clear');\n focus();\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div\n ref=\"wrapper\"\n :class=\"[\n 'select',\n `select--${size ?? 'md'}`,\n `select--${variant ?? 'primary'}`,\n hideLabel && 'select--label-hidden',\n fullWidth === false && 'select--fit',\n ]\"\n :data-multiple=\"multiple || undefined\"\n :dir=\"dir\"\n >\n <label class=\"select__label\" :for=\"controlId\"\n >{{ label\n }}<span v-if=\"required\" class=\"selection__required\" aria-hidden=\"true\"> *</span></label\n >\n <SelectRoot\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div class=\"select__control\" :data-clearable=\"clearable || undefined\">\n <SelectTrigger\n :id=\"controlId\"\n class=\"select__trigger\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n >\n <span v-if=\"$slots.start\" class=\"selection__leading\" aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <SelectValue class=\"select__value\" :placeholder=\"placeholder\"\n ><slot v-if=\"selected.length\" name=\"value\" :selected=\"selected\">{{\n selected.map((o) => o.label).join(', ')\n }}</slot\n ><template v-else>{{ placeholder }}</template></SelectValue\n >\n <ChevronIcon class=\"select__icon\" />\n </SelectTrigger>\n <button\n v-if=\"clearable\"\n type=\"button\"\n class=\"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 ?? 'Hapus pilihan'\"\n :disabled=\"disabled || ids.length === 0\"\n @click=\"clear\"\n >\n <CloseIcon class=\"selection__close-icon\" />\n </button>\n </div>\n <SelectPortal\n ><SelectContent\n class=\"select__popover\"\n position=\"popper\"\n :side-offset=\"4\"\n @close-auto-focus=\"afterClose\"\n ><SelectViewport class=\"select__list\">\n <SelectItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n class=\"select__item\"\n >\n <SelectItemText class=\"select__item-label\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span v-if=\"option.description\" class=\"selection__description\">{{\n option.description\n }}</span></slot\n ></SelectItemText\n ><CheckIcon class=\"select__check\" />\n </SelectItem> </SelectViewport></SelectContent\n ></SelectPortal>\n </SelectRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"(id, i) in multiple ? ids : [ids[0] ?? '']\"\n :key=\"i\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"id\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"ids.length > 0\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, ref, getCurrentInstance } from 'vue';\nimport {\n SelectContent,\n SelectItem,\n SelectItemText,\n SelectPortal,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n} from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nimport type { SelectSize, SelectVariant } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | undefined;\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n placeholder?: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n clearable?: boolean;\n clearLabel?: string;\n }>(),\n {\n fullWidth: true,\n size: 'md',\n variant: 'primary',\n placeholder: undefined,\n selectionMode: undefined,\n modelValue: undefined,\n defaultValue: undefined,\n description: undefined,\n errorMessage: undefined,\n requiredMessage: undefined,\n name: undefined,\n dir: undefined,\n clearLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: Value]; clear: []; close: [] }>();\nfunction afterClose() {\n queueMicrotask(() => emit('close'));\n}\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n value?: (props: { selected: SelectOption[] }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n selectionIds(controlled() ? props.modelValue : local.value, props.options, multiple.value),\n);\nconst selected = computed(() => props.options.filter((o) => ids.value.includes(o.id)));\nconst invalid = computed(\n () => props.invalid || (tried.value && props.required && ids.value.length === 0),\n);\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && ids.value.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLButtonElement>('.select__trigger')?.focus();\n}\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, multiple.value);\n const result = (multiple.value ? next : next[0]) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\nfunction clear() {\n update(multiple.value ? [] : undefined);\n emit('clear');\n focus();\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div\n ref=\"wrapper\"\n :class=\"[\n 'select',\n `select--${size ?? 'md'}`,\n `select--${variant ?? 'primary'}`,\n hideLabel && 'select--label-hidden',\n fullWidth === false && 'select--fit',\n ]\"\n :data-multiple=\"multiple || undefined\"\n :dir=\"dir\"\n >\n <label class=\"select__label\" :for=\"controlId\"\n >{{ label\n }}<span v-if=\"required\" class=\"selection__required\" aria-hidden=\"true\"> *</span></label\n >\n <SelectRoot\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div class=\"select__control\" :data-clearable=\"clearable || undefined\">\n <SelectTrigger\n :id=\"controlId\"\n class=\"select__trigger\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n >\n <span v-if=\"$slots.start\" class=\"selection__leading\" aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <SelectValue class=\"select__value\" :placeholder=\"placeholder\"\n ><slot v-if=\"selected.length\" name=\"value\" :selected=\"selected\">{{\n selected.map((o) => o.label).join(', ')\n }}</slot\n ><template v-else>{{ placeholder }}</template></SelectValue\n >\n <ChevronIcon class=\"select__icon\" />\n </SelectTrigger>\n <button\n v-if=\"clearable\"\n type=\"button\"\n class=\"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 ?? 'Hapus pilihan'\"\n :disabled=\"disabled || ids.length === 0\"\n @click=\"clear\"\n >\n <CloseIcon class=\"selection__close-icon\" />\n </button>\n </div>\n <SelectPortal\n ><SelectContent\n class=\"select__popover\"\n position=\"popper\"\n :side-offset=\"4\"\n @close-auto-focus=\"afterClose\"\n ><SelectViewport class=\"select__list\">\n <SelectItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n class=\"select__item\"\n >\n <SelectItemText class=\"select__item-label\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span v-if=\"option.description\" class=\"selection__description\">{{\n option.description\n }}</span></slot\n ></SelectItemText\n ><CheckIcon class=\"select__check\" />\n </SelectItem> </SelectViewport></SelectContent\n ></SelectPortal>\n </SelectRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"(id, i) in multiple ? ids : [ids[0] ?? '']\"\n :key=\"i\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"id\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"ids.length > 0\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","import { cloneVNode, defineComponent, Fragment, h, type PropType, type VNode } from 'vue';\nimport Select from './Select.vue';\nimport type { SelectSize, SelectVariant } from './types.js';\nexport default /* @__PURE__ */ defineComponent({\n name: 'SelectGroup',\n inheritAttrs: false,\n props: {\n label: { type: String, required: true },\n size: { type: String as PropType<SelectSize>, default: undefined },\n variant: { type: String as PropType<SelectVariant>, default: undefined },\n fullWidth: { type: Boolean, default: true },\n disabled: Boolean,\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n },\n setup(props, { slots }) {\n function defaults(nodes: VNode[]): VNode[] {\n return nodes.map((child) => {\n if (child.type === Fragment && Array.isArray(child.children)) {\n const fragment = cloneVNode(child);\n fragment.children = defaults(child.children as VNode[]);\n return fragment;\n }\n if (child.type !== Select) return child;\n return cloneVNode(child, {\n size: child.props?.size ?? props.size,\n variant: child.props?.variant ?? props.variant,\n hideLabel: child.props?.hideLabel ?? child.props?.['hide-label'] ?? true,\n fullWidth: child.props?.fullWidth ?? child.props?.['full-width'] ?? props.fullWidth,\n disabled: props.disabled || child.props?.disabled,\n dir: child.props?.dir ?? props.dir,\n });\n });\n }\n return () =>\n h(\n 'fieldset',\n {\n class: ['select-group', !props.fullWidth && 'select-group--fit'],\n disabled: props.disabled,\n dir: props.dir,\n },\n [\n h('legend', { class: 'select-group__legend' }, props.label),\n h('div', { class: 'select-group__controls' }, defaults(slots.default?.() ?? [])),\n ],\n );\n },\n});\n","<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\nimport type { InputSize, InputType, InputVariant, InputMode, InputEnterKeyHint } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<{\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n fullWidth?: boolean;\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 dir?: 'ltr' | 'rtl';\n }>(),\n {\n type: 'text',\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n minLength: undefined,\n pattern: undefined,\n inputMode: undefined,\n enterKeyHint: undefined,\n spellCheck: undefined,\n form: undefined,\n dir: undefined,\n },\n);\ndefineSlots<{ prefix?: () => unknown; suffix?: () => unknown }>();\nconst emit = defineEmits<{\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n keydown: [event: KeyboardEvent];\n keyup: [event: KeyboardEvent];\n}>();\nconst control = ref<HTMLInputElement>();\nfunction focus() {\n if (!props.disabled) control.value?.focus();\n}\nfunction select() {\n if (!props.disabled) control.value?.select();\n}\ndefineExpose({ focus, select, element: control });\nonMounted(() => {\n if (props.autoFocus) focus();\n});\nfunction pointerdown(event: PointerEvent) {\n if (\n !props.disabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n focus();\n }\n}\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLInputElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n :class=\"['input', `input--${size}`, `input--${variant}`, !fullWidth && 'input--fit']\"\n :dir=\"dir\"\n >\n <Label class=\"input__label\" :for=\"controlId\">{{ label }}</Label>\n <fieldset class=\"input__boundary\" role=\"presentation\" :disabled=\"disabled\">\n <div\n :class=\"$slots.prefix || $slots.suffix ? 'input__group' : 'input__plain'\"\n :data-invalid=\"invalid || undefined\"\n :data-readonly=\"readonly || undefined\"\n @pointerdown=\"pointerdown\"\n >\n <span v-if=\"$slots.prefix\" class=\"input__prefix\"><slot name=\"prefix\" /></span>\n <input\n :id=\"controlId\"\n ref=\"control\"\n class=\"input__control\"\n :type=\"type\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n :minlength=\"minLength\"\n :pattern=\"pattern\"\n :inputmode=\"inputMode\"\n :enterkeyhint=\"enterKeyHint\"\n :autofocus=\"autoFocus\"\n :spellcheck=\"spellCheck\"\n :form=\"form\"\n @input=\"onInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @keyup=\"emit('keyup', $event)\"\n />\n <span v-if=\"$slots.suffix\" class=\"input__suffix\"><slot name=\"suffix\" /></span>\n </div>\n </fieldset>\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <div v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\nimport type { InputSize, InputType, InputVariant, InputMode, InputEnterKeyHint } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<{\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n fullWidth?: boolean;\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 dir?: 'ltr' | 'rtl';\n }>(),\n {\n type: 'text',\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n minLength: undefined,\n pattern: undefined,\n inputMode: undefined,\n enterKeyHint: undefined,\n spellCheck: undefined,\n form: undefined,\n dir: undefined,\n },\n);\ndefineSlots<{ prefix?: () => unknown; suffix?: () => unknown }>();\nconst emit = defineEmits<{\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n keydown: [event: KeyboardEvent];\n keyup: [event: KeyboardEvent];\n}>();\nconst control = ref<HTMLInputElement>();\nfunction focus() {\n if (!props.disabled) control.value?.focus();\n}\nfunction select() {\n if (!props.disabled) control.value?.select();\n}\ndefineExpose({ focus, select, element: control });\nonMounted(() => {\n if (props.autoFocus) focus();\n});\nfunction pointerdown(event: PointerEvent) {\n if (\n !props.disabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n focus();\n }\n}\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLInputElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n :class=\"['input', `input--${size}`, `input--${variant}`, !fullWidth && 'input--fit']\"\n :dir=\"dir\"\n >\n <Label class=\"input__label\" :for=\"controlId\">{{ label }}</Label>\n <fieldset class=\"input__boundary\" role=\"presentation\" :disabled=\"disabled\">\n <div\n :class=\"$slots.prefix || $slots.suffix ? 'input__group' : 'input__plain'\"\n :data-invalid=\"invalid || undefined\"\n :data-readonly=\"readonly || undefined\"\n @pointerdown=\"pointerdown\"\n >\n <span v-if=\"$slots.prefix\" class=\"input__prefix\"><slot name=\"prefix\" /></span>\n <input\n :id=\"controlId\"\n ref=\"control\"\n class=\"input__control\"\n :type=\"type\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n :minlength=\"minLength\"\n :pattern=\"pattern\"\n :inputmode=\"inputMode\"\n :enterkeyhint=\"enterKeyHint\"\n :autofocus=\"autoFocus\"\n :spellcheck=\"spellCheck\"\n :form=\"form\"\n @input=\"onInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @keyup=\"emit('keyup', $event)\"\n />\n <span v-if=\"$slots.suffix\" class=\"input__suffix\"><slot name=\"suffix\" /></span>\n </div>\n </fieldset>\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <div v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<{\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: 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 {\n rows: 3,\n resize: 'vertical',\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n dir: undefined,\n },\n);\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLTextAreaElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div class=\"input textarea\" :data-resize=\"resize\" :dir=\"dir\">\n <Label class=\"input__label\" :for=\"controlId\">{{ label }}</Label>\n <textarea\n :id=\"controlId\"\n class=\"input__control textarea__control\"\n :rows=\"rows\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n @input=\"onInput\"\n />\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <div v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<{\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: 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 {\n rows: 3,\n resize: 'vertical',\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n dir: undefined,\n },\n);\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLTextAreaElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div class=\"input textarea\" :data-resize=\"resize\" :dir=\"dir\">\n <Label class=\"input__label\" :for=\"controlId\">{{ label }}</Label>\n <textarea\n :id=\"controlId\"\n class=\"input__control textarea__control\"\n :rows=\"rows\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n @input=\"onInput\"\n />\n <span v-if=\"description\" :id=\"`${controlId}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <div v-if=\"showError\" :id=\"`${controlId}-error`\" class=\"input__error\">{{ errorMessage }}</div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { Label as RekaLabel } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(defineProps<{ for?: string; id?: string }>(), {\n for: undefined,\n id: undefined,\n});\n</script>\n<template>\n <RekaLabel :id=\"id\" class=\"label\" :for=\"props.for\"><slot /></RekaLabel>\n</template>\n","<script setup lang=\"ts\">\nimport { Label as RekaLabel } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(defineProps<{ for?: string; id?: string }>(), {\n for: undefined,\n id: undefined,\n});\n</script>\n<template>\n <RekaLabel :id=\"id\" class=\"label\" :for=\"props.for\"><slot /></RekaLabel>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { CheckboxRoot, Label } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n required: false,\n invalid: false,\n indeterminate: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => (props.indeterminate ? 'indeterminate' : selected.value));\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean | 'indeterminate') {\n if (props.disabled) return;\n const next = props.indeterminate ? !selected.value : value === true;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input\" :dir=\"dir\">\n <div class=\"choice\" :data-disabled=\"disabled || undefined\">\n <CheckboxRoot\n :id=\"controlId\"\n class=\"checkbox__control\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"indeterminate ? undefined : name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <CheckIcon class=\"checkbox__check\" /><span class=\"checkbox__dash\" />\n </CheckboxRoot>\n <Label class=\"choice__label\" :for=\"controlId\">{{ label }}</Label>\n </div>\n <!-- Keep mixed presentation separate from the boolean form value. -->\n <input\n v-if=\"indeterminate && selected && name && !disabled\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n />\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { CheckboxRoot, Label } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n required: false,\n invalid: false,\n indeterminate: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => (props.indeterminate ? 'indeterminate' : selected.value));\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean | 'indeterminate') {\n if (props.disabled) return;\n const next = props.indeterminate ? !selected.value : value === true;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input\" :dir=\"dir\">\n <div class=\"choice\" :data-disabled=\"disabled || undefined\">\n <CheckboxRoot\n :id=\"controlId\"\n class=\"checkbox__control\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"indeterminate ? undefined : name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <CheckIcon class=\"checkbox__check\" /><span class=\"checkbox__dash\" />\n </CheckboxRoot>\n <Label class=\"choice__label\" :for=\"controlId\">{{ label }}</Label>\n </div>\n <!-- Keep mixed presentation separate from the boolean form value. -->\n <input\n v-if=\"indeterminate && selected && name && !disabled\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n />\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { RadioGroupRoot, RadioGroupItem, Label } from 'reka-ui';\nimport type { RadioOption } from './types.js';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: RadioOption[];\n defaultValue?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n defaultValue: '',\n disabled: false,\n required: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n orientation: 'vertical',\n dir: undefined,\n },\n);\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue);\nconst value = computed(() => model.value ?? local.value);\nconst { controlId, describedBy, showError } = useFeedback(props);\nfunction update(next: unknown) {\n if (props.disabled || typeof next !== 'string') return;\n local.value = next;\n model.value = next;\n}\n</script>\n<template>\n <RadioGroupRoot\n :id=\"controlId\"\n class=\"input radio-group\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :orientation=\"orientation\"\n :dir=\"dir\"\n :aria-labelledby=\"`${controlId}-label`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :id=\"`${controlId}-label`\" class=\"label\">{{ label }}</span>\n <div class=\"radio-group__items\" :data-orientation=\"orientation\">\n <div\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n class=\"choice\"\n :data-disabled=\"disabled || option.isDisabled || undefined\"\n >\n <RadioGroupItem\n :id=\"`${controlId}-option-${index}`\"\n class=\"radio__control\"\n :value=\"option.id\"\n :disabled=\"option.isDisabled\"\n :data-invalid=\"invalid || undefined\"\n ><span class=\"radio__dot\"\n /></RadioGroupItem>\n <Label class=\"choice__label\" :for=\"`${controlId}-option-${index}`\">{{\n option.label\n }}</Label>\n </div>\n </div>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </RadioGroupRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { RadioGroupRoot, RadioGroupItem, Label } from 'reka-ui';\nimport type { RadioOption } from './types.js';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: RadioOption[];\n defaultValue?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n defaultValue: '',\n disabled: false,\n required: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n orientation: 'vertical',\n dir: undefined,\n },\n);\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue);\nconst value = computed(() => model.value ?? local.value);\nconst { controlId, describedBy, showError } = useFeedback(props);\nfunction update(next: unknown) {\n if (props.disabled || typeof next !== 'string') return;\n local.value = next;\n model.value = next;\n}\n</script>\n<template>\n <RadioGroupRoot\n :id=\"controlId\"\n class=\"input radio-group\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :orientation=\"orientation\"\n :dir=\"dir\"\n :aria-labelledby=\"`${controlId}-label`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :id=\"`${controlId}-label`\" class=\"label\">{{ label }}</span>\n <div class=\"radio-group__items\" :data-orientation=\"orientation\">\n <div\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n class=\"choice\"\n :data-disabled=\"disabled || option.isDisabled || undefined\"\n >\n <RadioGroupItem\n :id=\"`${controlId}-option-${index}`\"\n class=\"radio__control\"\n :value=\"option.id\"\n :disabled=\"option.isDisabled\"\n :data-invalid=\"invalid || undefined\"\n ><span class=\"radio__dot\"\n /></RadioGroupItem>\n <Label class=\"choice__label\" :for=\"`${controlId}-option-${index}`\">{{\n option.label\n }}</Label>\n </div>\n </div>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </RadioGroupRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { SwitchRoot, Label } from 'reka-ui';\n\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n\n disabled?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => selected.value);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean) {\n if (props.disabled) return;\n const next = value;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input\" :dir=\"dir\">\n <div class=\"choice\" :data-disabled=\"disabled || undefined\">\n <SwitchRoot\n :id=\"controlId\"\n class=\"switch__control\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span class=\"switch__thumb\" />\n </SwitchRoot>\n <Label class=\"choice__label\" :for=\"controlId\">{{ label }}</Label>\n </div>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { SwitchRoot, Label } from 'reka-ui';\n\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n\n disabled?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => selected.value);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean) {\n if (props.disabled) return;\n const next = value;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input\" :dir=\"dir\">\n <div class=\"choice\" :data-disabled=\"disabled || undefined\">\n <SwitchRoot\n :id=\"controlId\"\n class=\"switch__control\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span class=\"switch__thumb\" />\n </SwitchRoot>\n <Label class=\"choice__label\" :for=\"controlId\">{{ label }}</Label>\n </div>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { ValidationErrors } from './types.js';\nexport const formErrorsKey: InjectionKey<ComputedRef<ValidationErrors>> =\n /* @__PURE__ */ Symbol('KazeeFormErrors');\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { formErrorsKey } from './form-context.js';\nimport type { FieldControlProps, FieldSlotProps, ValidationErrors } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n name: string;\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n id: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n dir: undefined,\n },\n);\ndefineSlots<{ default(props: FieldSlotProps): unknown }>();\nconst errors = inject(\n formErrorsKey,\n computed<ValidationErrors>(() => ({})),\n);\nconst error = computed(() => {\n const map = errors.value;\n return Object.hasOwn(map, props.name) && typeof map[props.name] === 'string'\n ? map[props.name] || undefined\n : undefined;\n});\nconst invalidState = computed(() => props.invalid || !!error.value);\nconst message = computed(() => (props.invalid && props.errorMessage) || error.value || undefined);\nconst { controlId, showError, describedBy } = useFeedback({\n get id() {\n return props.id;\n },\n get description() {\n return props.description;\n },\n get invalid() {\n return invalidState.value;\n },\n get errorMessage() {\n return message.value;\n },\n});\nconst controlProps = computed<FieldControlProps>(() => ({\n id: controlId.value,\n name: props.name,\n class: 'input__control field__control',\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n 'aria-required': props.required || undefined,\n 'aria-invalid': invalidState.value || undefined,\n 'aria-describedby': describedBy.value,\n}));\n</script>\n<template>\n <div class=\"input field\" :dir=\"dir\">\n <Label class=\"label\" :for=\"controlId\">{{ label }}</Label>\n <slot :control-props=\"controlProps\" :invalid=\"invalidState\" :error-message=\"message\" />\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"message\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { formErrorsKey } from './form-context.js';\nimport type { FieldControlProps, FieldSlotProps, ValidationErrors } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n name: string;\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n id: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n dir: undefined,\n },\n);\ndefineSlots<{ default(props: FieldSlotProps): unknown }>();\nconst errors = inject(\n formErrorsKey,\n computed<ValidationErrors>(() => ({})),\n);\nconst error = computed(() => {\n const map = errors.value;\n return Object.hasOwn(map, props.name) && typeof map[props.name] === 'string'\n ? map[props.name] || undefined\n : undefined;\n});\nconst invalidState = computed(() => props.invalid || !!error.value);\nconst message = computed(() => (props.invalid && props.errorMessage) || error.value || undefined);\nconst { controlId, showError, describedBy } = useFeedback({\n get id() {\n return props.id;\n },\n get description() {\n return props.description;\n },\n get invalid() {\n return invalidState.value;\n },\n get errorMessage() {\n return message.value;\n },\n});\nconst controlProps = computed<FieldControlProps>(() => ({\n id: controlId.value,\n name: props.name,\n class: 'input__control field__control',\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n 'aria-required': props.required || undefined,\n 'aria-invalid': invalidState.value || undefined,\n 'aria-describedby': describedBy.value,\n}));\n</script>\n<template>\n <div class=\"input field\" :dir=\"dir\">\n <Label class=\"label\" :for=\"controlId\">{{ label }}</Label>\n <slot :control-props=\"controlProps\" :invalid=\"invalidState\" :error-message=\"message\" />\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"message\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport { formErrorsKey } from './form-context.js';\nimport type { ValidationErrors } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n validationErrors?: ValidationErrors;\n noValidate?: boolean;\n id?: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n validationErrors: () => ({}),\n noValidate: false,\n id: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ submit: [data: FormData, event: SubmitEvent]; reset: [event: Event] }>();\nprovide(\n formErrorsKey,\n computed(() => props.validationErrors),\n);\nfunction submit(event: SubmitEvent) {\n event.preventDefault();\n const form = event.currentTarget as HTMLFormElement;\n const noValidate = props.noValidate;\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 emit('submit', new FormData(form, event.submitter), event);\n}\n</script>\n<template>\n <form\n :id=\"id\"\n class=\"form\"\n :dir=\"dir\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :novalidate=\"noValidate\"\n @submit=\"submit\"\n @reset=\"emit('reset', $event)\"\n >\n <slot />\n </form>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport { formErrorsKey } from './form-context.js';\nimport type { ValidationErrors } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n validationErrors?: ValidationErrors;\n noValidate?: boolean;\n id?: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n validationErrors: () => ({}),\n noValidate: false,\n id: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ submit: [data: FormData, event: SubmitEvent]; reset: [event: Event] }>();\nprovide(\n formErrorsKey,\n computed(() => props.validationErrors),\n);\nfunction submit(event: SubmitEvent) {\n event.preventDefault();\n const form = event.currentTarget as HTMLFormElement;\n const noValidate = props.noValidate;\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 emit('submit', new FormData(form, event.submitter), event);\n}\n</script>\n<template>\n <form\n :id=\"id\"\n class=\"form\"\n :dir=\"dir\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :novalidate=\"noValidate\"\n @submit=\"submit\"\n @reset=\"emit('reset', $event)\"\n >\n <slot />\n </form>\n</template>\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","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { ListboxRoot, ListboxContent, ListboxItem, useId } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: ListboxOption[];\n modelValue?: string[];\n defaultValue?: string[];\n selectionMode?: ListboxSelectionMode;\n disabled?: boolean;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: () => [],\n selectionMode: 'single',\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n dir: undefined,\n emptyMessage: 'Tidak ada pilihan.',\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string[]] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() =>\n listboxSelection(props.modelValue ?? local.value, props.options, props.selectionMode),\n);\nconst model = computed(() =>\n props.selectionMode === 'multiple' ? selected.value : (selected.value[0] ?? null),\n);\nconst generated = useId();\nconst labelId = computed(() => `${props.id ?? generated}-label`);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const values = Array.isArray(value)\n ? value.filter((id): id is string => typeof id === 'string')\n : typeof value === 'string'\n ? [value]\n : [];\n const next = listboxSelection(values, props.options, props.selectionMode);\n if (\n next.length === selected.value.length &&\n next.every((key, index) => key === selected.value[index])\n )\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input listbox\" :dir=\"dir\">\n <span :id=\"labelId\" class=\"label\">{{ label }}</span>\n <ListboxRoot\n :model-value=\"model\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :selection-behavior=\"selectionMode === 'single' ? 'replace' : 'toggle'\"\n highlight-on-hover\n @update:model-value=\"update\"\n >\n <ListboxContent\n :id=\"id\"\n class=\"listbox__list\"\n :aria-labelledby=\"labelId\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n >\n <ListboxItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :disabled=\"disabled || option.isDisabled\"\n :aria-disabled=\"disabled || option.isDisabled || undefined\"\n class=\"listbox__item\"\n >\n <span class=\"listbox__text\">{{ option.label }}</span\n ><CheckIcon class=\"listbox__check\" />\n </ListboxItem>\n <span\n v-if=\"!options.length\"\n class=\"listbox__empty\"\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n >{{ emptyMessage }}</span\n >\n </ListboxContent>\n </ListboxRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"key in selected\"\n :key=\"key\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"key\"\n :disabled=\"disabled\"\n /></template>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { ListboxRoot, ListboxContent, ListboxItem, useId } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n options: ListboxOption[];\n modelValue?: string[];\n defaultValue?: string[];\n selectionMode?: ListboxSelectionMode;\n disabled?: boolean;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: () => [],\n selectionMode: 'single',\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n dir: undefined,\n emptyMessage: 'Tidak ada pilihan.',\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string[]] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() =>\n listboxSelection(props.modelValue ?? local.value, props.options, props.selectionMode),\n);\nconst model = computed(() =>\n props.selectionMode === 'multiple' ? selected.value : (selected.value[0] ?? null),\n);\nconst generated = useId();\nconst labelId = computed(() => `${props.id ?? generated}-label`);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const values = Array.isArray(value)\n ? value.filter((id): id is string => typeof id === 'string')\n : typeof value === 'string'\n ? [value]\n : [];\n const next = listboxSelection(values, props.options, props.selectionMode);\n if (\n next.length === selected.value.length &&\n next.every((key, index) => key === selected.value[index])\n )\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input listbox\" :dir=\"dir\">\n <span :id=\"labelId\" class=\"label\">{{ label }}</span>\n <ListboxRoot\n :model-value=\"model\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :selection-behavior=\"selectionMode === 'single' ? 'replace' : 'toggle'\"\n highlight-on-hover\n @update:model-value=\"update\"\n >\n <ListboxContent\n :id=\"id\"\n class=\"listbox__list\"\n :aria-labelledby=\"labelId\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n >\n <ListboxItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :disabled=\"disabled || option.isDisabled\"\n :aria-disabled=\"disabled || option.isDisabled || undefined\"\n class=\"listbox__item\"\n >\n <span class=\"listbox__text\">{{ option.label }}</span\n ><CheckIcon class=\"listbox__check\" />\n </ListboxItem>\n <span\n v-if=\"!options.length\"\n class=\"listbox__empty\"\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n >{{ emptyMessage }}</span\n >\n </ListboxContent>\n </ListboxRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"key in selected\"\n :key=\"key\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"key\"\n :disabled=\"disabled\"\n /></template>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n Label,\n} from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: number | null;\n defaultValue?: number | null;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: null,\n min: undefined,\n max: undefined,\n step: 1,\n locale: 'id-ID',\n formatOptions: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n name: undefined,\n id: undefined,\n dir: undefined,\n incrementLabel: undefined,\n decrementLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: number | null] }>();\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nconst local = ref(finite(props.defaultValue));\nconst selected = computed(() =>\n finite(props.modelValue === undefined ? local.value : props.modelValue),\n);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: number | undefined) {\n if (props.disabled || props.readonly) return;\n const next = finite(value);\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input number-field\" :dir=\"dir\">\n <Label class=\"label\" :for=\"controlId\">{{ label }}</Label>\n <NumberFieldRoot\n :id=\"controlId\"\n :model-value=\"selected\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :locale=\"locale\"\n :format-options=\"formatOptions\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n disable-wheel-change\n @update:model-value=\"update\"\n >\n <div class=\"number-field__group\">\n <NumberFieldDecrement\n class=\"number-field__step\"\n :aria-label=\"decrementLabel ?? `Kurangi ${label}`\"\n >&#8722;</NumberFieldDecrement\n >\n <NumberFieldInput\n class=\"number-field__control\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n />\n <NumberFieldIncrement\n class=\"number-field__step\"\n :aria-label=\"incrementLabel ?? `Tambah ${label}`\"\n >+</NumberFieldIncrement\n >\n </div>\n </NumberFieldRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"selected === null ? '' : String(selected)\"\n :disabled=\"disabled\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n Label,\n} from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n modelValue?: number | null;\n defaultValue?: number | null;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: null,\n min: undefined,\n max: undefined,\n step: 1,\n locale: 'id-ID',\n formatOptions: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n name: undefined,\n id: undefined,\n dir: undefined,\n incrementLabel: undefined,\n decrementLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: number | null] }>();\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nconst local = ref(finite(props.defaultValue));\nconst selected = computed(() =>\n finite(props.modelValue === undefined ? local.value : props.modelValue),\n);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: number | undefined) {\n if (props.disabled || props.readonly) return;\n const next = finite(value);\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div class=\"input number-field\" :dir=\"dir\">\n <Label class=\"label\" :for=\"controlId\">{{ label }}</Label>\n <NumberFieldRoot\n :id=\"controlId\"\n :model-value=\"selected\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :locale=\"locale\"\n :format-options=\"formatOptions\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n disable-wheel-change\n @update:model-value=\"update\"\n >\n <div class=\"number-field__group\">\n <NumberFieldDecrement\n class=\"number-field__step\"\n :aria-label=\"decrementLabel ?? `Kurangi ${label}`\"\n >&#8722;</NumberFieldDecrement\n >\n <NumberFieldInput\n class=\"number-field__control\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n />\n <NumberFieldIncrement\n class=\"number-field__step\"\n :aria-label=\"incrementLabel ?? `Tambah ${label}`\"\n >+</NumberFieldIncrement\n >\n </div>\n </NumberFieldRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"selected === null ? '' : String(selected)\"\n :disabled=\"disabled\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nwithDefaults(\n defineProps<{ title?: string; description?: string; headingLevel?: 2 | 3 | 4 | 5 | 6 }>(),\n { title: undefined, description: undefined, headingLevel: 3 },\n);\ndefineSlots<{\n default?: () => unknown;\n header?: () => unknown;\n 'title-extras'?: () => unknown;\n actions?: () => unknown;\n footer?: () => unknown;\n}>();\n</script>\n<template>\n <div class=\"card\">\n <div\n v-if=\"title || description || $slots.actions || $slots.header || $slots['title-extras']\"\n class=\"card__header\"\n >\n <div\n v-if=\"title || description || $slots.header || $slots['title-extras']\"\n class=\"card__heading\"\n >\n <slot name=\"header\">\n <div v-if=\"$slots['title-extras']\" class=\"card__title-row\">\n <component :is=\"`h${headingLevel}`\" v-if=\"title\" class=\"card__title\">{{\n title\n }}</component\n ><slot name=\"title-extras\" />\n </div>\n <component :is=\"`h${headingLevel}`\" v-else-if=\"title\" class=\"card__title\">{{\n title\n }}</component>\n <p v-if=\"description\" class=\"card__description\">{{ description }}</p>\n </slot>\n </div>\n <div v-if=\"$slots.actions\" class=\"card__actions\"><slot name=\"actions\" /></div>\n </div>\n <div class=\"card__content\"><slot /></div>\n <div v-if=\"$slots.footer\" class=\"card__footer\"><slot name=\"footer\" /></div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nwithDefaults(\n defineProps<{ title?: string; description?: string; headingLevel?: 2 | 3 | 4 | 5 | 6 }>(),\n { title: undefined, description: undefined, headingLevel: 3 },\n);\ndefineSlots<{\n default?: () => unknown;\n header?: () => unknown;\n 'title-extras'?: () => unknown;\n actions?: () => unknown;\n footer?: () => unknown;\n}>();\n</script>\n<template>\n <div class=\"card\">\n <div\n v-if=\"title || description || $slots.actions || $slots.header || $slots['title-extras']\"\n class=\"card__header\"\n >\n <div\n v-if=\"title || description || $slots.header || $slots['title-extras']\"\n class=\"card__heading\"\n >\n <slot name=\"header\">\n <div v-if=\"$slots['title-extras']\" class=\"card__title-row\">\n <component :is=\"`h${headingLevel}`\" v-if=\"title\" class=\"card__title\">{{\n title\n }}</component\n ><slot name=\"title-extras\" />\n </div>\n <component :is=\"`h${headingLevel}`\" v-else-if=\"title\" class=\"card__title\">{{\n title\n }}</component>\n <p v-if=\"description\" class=\"card__description\">{{ description }}</p>\n </slot>\n </div>\n <div v-if=\"$slots.actions\" class=\"card__actions\"><slot name=\"actions\" /></div>\n </div>\n <div class=\"card__content\"><slot /></div>\n <div v-if=\"$slots.footer\" class=\"card__footer\"><slot name=\"footer\" /></div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { BadgeTone } from './types.js';\nwithDefaults(defineProps<{ tone?: BadgeTone }>(), { tone: 'neutral' });\n</script>\n<template>\n <span class=\"badge\" :data-tone=\"tone\"><slot /></span>\n</template>\n","<script setup lang=\"ts\">\nimport type { BadgeTone } from './types.js';\nwithDefaults(defineProps<{ tone?: BadgeTone }>(), { tone: 'neutral' });\n</script>\n<template>\n <span class=\"badge\" :data-tone=\"tone\"><slot /></span>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(defineProps<{ shape?: 'rectangle' | 'circle'; animated?: boolean }>(), {\n shape: 'rectangle',\n animated: true,\n});\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n class=\"skeleton\"\n :data-shape=\"shape\"\n :data-animated=\"animated ? 'true' : undefined\"\n aria-hidden=\"true\"\n />\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(defineProps<{ shape?: 'rectangle' | 'circle'; animated?: boolean }>(), {\n shape: 'rectangle',\n animated: true,\n});\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n class=\"skeleton\"\n :data-shape=\"shape\"\n :data-animated=\"animated ? 'true' : undefined\"\n aria-hidden=\"true\"\n />\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(defineProps<{ orientation?: 'horizontal' | 'vertical'; decorative?: boolean }>(), {\n orientation: 'horizontal',\n decorative: true,\n});\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n class=\"separator\"\n :data-orientation=\"orientation\"\n :role=\"decorative ? 'presentation' : 'separator'\"\n :aria-hidden=\"decorative ? 'true' : undefined\"\n :aria-orientation=\"decorative ? undefined : orientation\"\n />\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(defineProps<{ orientation?: 'horizontal' | 'vertical'; decorative?: boolean }>(), {\n orientation: 'horizontal',\n decorative: true,\n});\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n class=\"separator\"\n :data-orientation=\"orientation\"\n :role=\"decorative ? 'presentation' : 'separator'\"\n :aria-hidden=\"decorative ? 'true' : undefined\"\n :aria-orientation=\"decorative ? undefined : orientation\"\n />\n</template>\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","<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport { TabsList, TabsTrigger } from 'reka-ui';\nimport type { TabItem } from './types.js';\nimport { mountTabsIndicator } from './tabs-indicator.js';\ndefineProps<{\n label: string;\n items: TabItem[];\n showSeparators: boolean;\n previousLabel: string;\n nextLabel: string;\n}>();\ndefineSlots<{ icon?: (props: { item: TabItem }) => unknown }>();\nconst container = ref<HTMLDivElement>();\nlet cleanup: (() => void) | undefined;\nonMounted(() => {\n if (container.value) cleanup = mountTabsIndicator(container.value);\n});\nonBeforeUnmount(() => cleanup?.());\n</script>\n<template>\n <div ref=\"container\" class=\"tabs__list-container\">\n <button\n type=\"button\"\n class=\"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\"><path d=\"m14 6-6 6 6 6\" /></svg>\n </button>\n <TabsList class=\"tabs__list\" :aria-label=\"label\">\n <TabsTrigger\n v-for=\"(item, index) in items\"\n :key=\"item.id\"\n class=\"tabs__trigger\"\n :value=\"item.id\"\n :disabled=\"item.isDisabled\"\n >\n <span v-if=\"showSeparators && index > 0\" class=\"tabs__separator\" aria-hidden=\"true\" />\n <span v-if=\"$slots.icon\" class=\"tabs__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span class=\"tabs__label\">{{ item.label }}</span>\n </TabsTrigger>\n </TabsList>\n <button\n type=\"button\"\n class=\"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\"><path d=\"m10 6 6 6-6 6\" /></svg>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport { TabsList, TabsTrigger } from 'reka-ui';\nimport type { TabItem } from './types.js';\nimport { mountTabsIndicator } from './tabs-indicator.js';\ndefineProps<{\n label: string;\n items: TabItem[];\n showSeparators: boolean;\n previousLabel: string;\n nextLabel: string;\n}>();\ndefineSlots<{ icon?: (props: { item: TabItem }) => unknown }>();\nconst container = ref<HTMLDivElement>();\nlet cleanup: (() => void) | undefined;\nonMounted(() => {\n if (container.value) cleanup = mountTabsIndicator(container.value);\n});\nonBeforeUnmount(() => cleanup?.());\n</script>\n<template>\n <div ref=\"container\" class=\"tabs__list-container\">\n <button\n type=\"button\"\n class=\"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\"><path d=\"m14 6-6 6 6 6\" /></svg>\n </button>\n <TabsList class=\"tabs__list\" :aria-label=\"label\">\n <TabsTrigger\n v-for=\"(item, index) in items\"\n :key=\"item.id\"\n class=\"tabs__trigger\"\n :value=\"item.id\"\n :disabled=\"item.isDisabled\"\n >\n <span v-if=\"showSeparators && index > 0\" class=\"tabs__separator\" aria-hidden=\"true\" />\n <span v-if=\"$slots.icon\" class=\"tabs__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span class=\"tabs__label\">{{ item.label }}</span>\n </TabsTrigger>\n </TabsList>\n <button\n type=\"button\"\n class=\"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\"><path d=\"m10 6 6 6-6 6\" /></svg>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { TabsRoot, TabsContent } from 'reka-ui';\nimport TabsListView from './TabsListView.vue';\nimport type { TabItem, ButtonSize, TabsVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\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. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n previousLabel?: string;\n nextLabel?: string;\n items: TabItem[];\n modelValue?: string;\n defaultValue?: string;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: undefined,\n activationMode: 'manual',\n variant: 'primary',\n size: 'md',\n orientation: 'horizontal',\n align: 'center',\n fullWidth: false,\n inset: 'default',\n showSeparators: false,\n previousLabel: 'Tab sebelumnya / Previous tabs',\n nextLabel: 'Tab berikutnya / Next tabs',\n dir: undefined,\n id: undefined,\n },\n);\ndefineSlots<{\n default?: (props: { item: TabItem }) => unknown;\n extras?: () => unknown;\n actions?: () => unknown;\n icon?: (props: { item: TabItem }) => unknown;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(\n () =>\n props.items.find((item) => item.id === (props.modelValue ?? local.value) && !item.isDisabled)\n ?.id ?? props.items.find((item) => !item.isDisabled)?.id,\n);\nfunction update(value: string | number) {\n const next = String(value);\n if (next !== selected.value && props.items.some((item) => item.id === next && !item.isDisabled)) {\n local.value = next;\n emit('update:modelValue', next);\n }\n}\n</script>\n<template>\n <TabsRoot\n :id=\"id\"\n :class=\"[\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 :model-value=\"selected ?? ''\"\n :activation-mode=\"activationMode\"\n :dir=\"dir\"\n :orientation=\"orientation\"\n :data-orientation=\"orientation\"\n @update:model-value=\"update\"\n >\n <div v-if=\"$slots.extras || $slots.actions\" class=\"tabs__toolbar\">\n <div class=\"tabs__navigation\">\n <TabsListView\n v-if=\"items.length\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <div v-if=\"$slots.extras\" class=\"tabs__extras\"><slot name=\"extras\" /></div>\n </div>\n <div v-if=\"$slots.actions\" class=\"tabs__actions\"><slot name=\"actions\" /></div>\n </div>\n <TabsListView\n v-else-if=\"items.length\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <TabsContent v-for=\"item in items\" :key=\"item.id\" class=\"tabs__panel\" :value=\"item.id\"\n ><slot :item=\"item\"\n /></TabsContent>\n </TabsRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { TabsRoot, TabsContent } from 'reka-ui';\nimport TabsListView from './TabsListView.vue';\nimport type { TabItem, ButtonSize, TabsVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\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. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n previousLabel?: string;\n nextLabel?: string;\n items: TabItem[];\n modelValue?: string;\n defaultValue?: string;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n modelValue: undefined,\n defaultValue: undefined,\n activationMode: 'manual',\n variant: 'primary',\n size: 'md',\n orientation: 'horizontal',\n align: 'center',\n fullWidth: false,\n inset: 'default',\n showSeparators: false,\n previousLabel: 'Tab sebelumnya / Previous tabs',\n nextLabel: 'Tab berikutnya / Next tabs',\n dir: undefined,\n id: undefined,\n },\n);\ndefineSlots<{\n default?: (props: { item: TabItem }) => unknown;\n extras?: () => unknown;\n actions?: () => unknown;\n icon?: (props: { item: TabItem }) => unknown;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(\n () =>\n props.items.find((item) => item.id === (props.modelValue ?? local.value) && !item.isDisabled)\n ?.id ?? props.items.find((item) => !item.isDisabled)?.id,\n);\nfunction update(value: string | number) {\n const next = String(value);\n if (next !== selected.value && props.items.some((item) => item.id === next && !item.isDisabled)) {\n local.value = next;\n emit('update:modelValue', next);\n }\n}\n</script>\n<template>\n <TabsRoot\n :id=\"id\"\n :class=\"[\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 :model-value=\"selected ?? ''\"\n :activation-mode=\"activationMode\"\n :dir=\"dir\"\n :orientation=\"orientation\"\n :data-orientation=\"orientation\"\n @update:model-value=\"update\"\n >\n <div v-if=\"$slots.extras || $slots.actions\" class=\"tabs__toolbar\">\n <div class=\"tabs__navigation\">\n <TabsListView\n v-if=\"items.length\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <div v-if=\"$slots.extras\" class=\"tabs__extras\"><slot name=\"extras\" /></div>\n </div>\n <div v-if=\"$slots.actions\" class=\"tabs__actions\"><slot name=\"actions\" /></div>\n </div>\n <TabsListView\n v-else-if=\"items.length\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <TabsContent v-for=\"item in items\" :key=\"item.id\" class=\"tabs__panel\" :value=\"item.id\"\n ><slot :item=\"item\"\n /></TabsContent>\n </TabsRoot>\n</template>\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","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { paginationModel } from './pagination-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n totalItems: number;\n pageSize?: number;\n modelValue?: number;\n defaultValue?: number;\n disabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n pageSize: 10,\n modelValue: undefined,\n defaultValue: 1,\n disabled: false,\n siblingCount: 1,\n label: 'Navigasi halaman',\n previousLabel: 'Sebelumnya',\n nextLabel: 'Berikutnya',\n pageLabel: 'Halaman',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [page: number] }>();\nconst local = ref(props.defaultValue);\nconst model = computed(() =>\n paginationModel(\n props.totalItems,\n props.pageSize,\n props.modelValue ?? local.value,\n props.siblingCount,\n ),\n);\nfunction change(next: number) {\n if (props.disabled || next === model.value.current || next < 1 || next > model.value.count)\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <nav :id=\"id\" class=\"pagination\" :aria-label=\"label\" :dir=\"dir\">\n <button\n type=\"button\"\n class=\"pagination__button\"\n :disabled=\"disabled || model.current === 1\"\n @click=\"change(model.current - 1)\"\n >\n {{ previousLabel }}\n </button>\n <template v-for=\"entry in model.entries\" :key=\"entry\">\n <span v-if=\"typeof entry === 'string'\" class=\"pagination__gap\" aria-hidden=\"true\">...</span>\n <button\n v-else\n type=\"button\"\n class=\"pagination__button\"\n :aria-label=\"`${pageLabel} ${entry}`\"\n :aria-current=\"entry === model.current ? 'page' : undefined\"\n :disabled=\"disabled\"\n @click=\"change(entry)\"\n >\n {{ entry }}\n </button>\n </template>\n <button\n type=\"button\"\n class=\"pagination__button\"\n :disabled=\"disabled || model.current === model.count\"\n @click=\"change(model.current + 1)\"\n >\n {{ nextLabel }}\n </button>\n <span class=\"pagination__summary\" aria-live=\"polite\"\n >{{ model.current }} / {{ model.count }}</span\n >\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport { paginationModel } from './pagination-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n totalItems: number;\n pageSize?: number;\n modelValue?: number;\n defaultValue?: number;\n disabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n pageSize: 10,\n modelValue: undefined,\n defaultValue: 1,\n disabled: false,\n siblingCount: 1,\n label: 'Navigasi halaman',\n previousLabel: 'Sebelumnya',\n nextLabel: 'Berikutnya',\n pageLabel: 'Halaman',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [page: number] }>();\nconst local = ref(props.defaultValue);\nconst model = computed(() =>\n paginationModel(\n props.totalItems,\n props.pageSize,\n props.modelValue ?? local.value,\n props.siblingCount,\n ),\n);\nfunction change(next: number) {\n if (props.disabled || next === model.value.current || next < 1 || next > model.value.count)\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <nav :id=\"id\" class=\"pagination\" :aria-label=\"label\" :dir=\"dir\">\n <button\n type=\"button\"\n class=\"pagination__button\"\n :disabled=\"disabled || model.current === 1\"\n @click=\"change(model.current - 1)\"\n >\n {{ previousLabel }}\n </button>\n <template v-for=\"entry in model.entries\" :key=\"entry\">\n <span v-if=\"typeof entry === 'string'\" class=\"pagination__gap\" aria-hidden=\"true\">...</span>\n <button\n v-else\n type=\"button\"\n class=\"pagination__button\"\n :aria-label=\"`${pageLabel} ${entry}`\"\n :aria-current=\"entry === model.current ? 'page' : undefined\"\n :disabled=\"disabled\"\n @click=\"change(entry)\"\n >\n {{ entry }}\n </button>\n </template>\n <button\n type=\"button\"\n class=\"pagination__button\"\n :disabled=\"disabled || model.current === model.count\"\n @click=\"change(model.current + 1)\"\n >\n {{ nextLabel }}\n </button>\n <span class=\"pagination__summary\" aria-live=\"polite\"\n >{{ model.current }} / {{ model.count }}</span\n >\n </nav>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\ndefineProps<{ caption: string }>();\n</script>\n<template>\n <div class=\"table__scroll\" role=\"region\" :aria-label=\"caption\" tabindex=\"0\">\n <table v-bind=\"$attrs\" class=\"table\">\n <caption class=\"table__caption\">\n {{\n caption\n }}\n </caption>\n <slot />\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\ndefineProps<{ caption: string }>();\n</script>\n<template>\n <div class=\"table__scroll\" role=\"region\" :aria-label=\"caption\" tabindex=\"0\">\n <table v-bind=\"$attrs\" class=\"table\">\n <caption class=\"table__caption\">\n {{\n caption\n }}\n </caption>\n <slot />\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport Table from './Table.vue';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n loading?: boolean;\n disabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n sort: null,\n loading: false,\n disabled: false,\n emptyMessage: 'Tidak ada data.',\n loadingMessage: 'Memuat data...',\n errorMessage: undefined,\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nfunction requestSort(column: DataTableColumn) {\n if (props.loading || props.disabled || !column.sortable) return;\n emit('update:sort', {\n columnId: column.id,\n direction:\n props.sort?.columnId === column.id && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n}\n</script>\n<template>\n <div :id=\"id\" class=\"data-table\" :dir=\"dir\">\n <Table :caption=\"caption\" :aria-busy=\"loading || undefined\">\n <thead>\n <tr>\n <th\n v-for=\"column in columns\"\n :key=\"column.id\"\n scope=\"col\"\n :aria-sort=\"\n column.sortable ? (sort?.columnId === column.id ? sort.direction : 'none') : undefined\n \"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n class=\"table__sort\"\n :disabled=\"loading || disabled\"\n @click=\"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></button\n ><template v-else>{{ column.label }}</template>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"row in rows\" :key=\"row.id\">\n <td v-for=\"column in columns\" :key=\"column.id\">\n <slot name=\"cell\" :row=\"row\" :column=\"column\" :value=\"row.cells[column.id]\">{{\n row.cells[column.id] ?? ''\n }}</slot>\n </td>\n </tr>\n <tr v-if=\"!rows.length\">\n <td :colspan=\"Math.max(1, columns.length)\" class=\"table__empty\">\n {{ loading ? loadingMessage : errorMessage || emptyMessage }}\n </td>\n </tr>\n </tbody>\n </Table>\n <p v-if=\"loading\" class=\"data-table__status\" role=\"status\">{{ loadingMessage }}</p>\n <p v-if=\"errorMessage && !loading\" class=\"input__error\" role=\"alert\">{{ errorMessage }}</p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport Table from './Table.vue';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n loading?: boolean;\n disabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n sort: null,\n loading: false,\n disabled: false,\n emptyMessage: 'Tidak ada data.',\n loadingMessage: 'Memuat data...',\n errorMessage: undefined,\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nfunction requestSort(column: DataTableColumn) {\n if (props.loading || props.disabled || !column.sortable) return;\n emit('update:sort', {\n columnId: column.id,\n direction:\n props.sort?.columnId === column.id && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n}\n</script>\n<template>\n <div :id=\"id\" class=\"data-table\" :dir=\"dir\">\n <Table :caption=\"caption\" :aria-busy=\"loading || undefined\">\n <thead>\n <tr>\n <th\n v-for=\"column in columns\"\n :key=\"column.id\"\n scope=\"col\"\n :aria-sort=\"\n column.sortable ? (sort?.columnId === column.id ? sort.direction : 'none') : undefined\n \"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n class=\"table__sort\"\n :disabled=\"loading || disabled\"\n @click=\"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></button\n ><template v-else>{{ column.label }}</template>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"row in rows\" :key=\"row.id\">\n <td v-for=\"column in columns\" :key=\"column.id\">\n <slot name=\"cell\" :row=\"row\" :column=\"column\" :value=\"row.cells[column.id]\">{{\n row.cells[column.id] ?? ''\n }}</slot>\n </td>\n </tr>\n <tr v-if=\"!rows.length\">\n <td :colspan=\"Math.max(1, columns.length)\" class=\"table__empty\">\n {{ loading ? loadingMessage : errorMessage || emptyMessage }}\n </td>\n </tr>\n </tbody>\n </Table>\n <p v-if=\"loading\" class=\"data-table__status\" role=\"status\">{{ loadingMessage }}</p>\n <p v-if=\"errorMessage && !loading\" class=\"input__error\" role=\"alert\">{{ errorMessage }}</p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { BadgeTone } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n id?: string;\n }>(),\n { description: undefined, tone: 'info', announcement: 'off', id: undefined },\n);\n</script>\n<template>\n <div\n :id=\"id\"\n class=\"alert\"\n :data-tone=\"tone\"\n :role=\"\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n \"\n >\n <p class=\"alert__title\">{{ title }}</p>\n <p v-if=\"description\" class=\"alert__description\">{{ description }}</p>\n <slot />\n <div v-if=\"$slots.actions\" class=\"alert__actions\"><slot name=\"actions\" /></div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { BadgeTone } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n id?: string;\n }>(),\n { description: undefined, tone: 'info', announcement: 'off', id: undefined },\n);\n</script>\n<template>\n <div\n :id=\"id\"\n class=\"alert\"\n :data-tone=\"tone\"\n :role=\"\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n \"\n >\n <p class=\"alert__title\">{{ title }}</p>\n <p v-if=\"description\" class=\"alert__description\">{{ description }}</p>\n <slot />\n <div v-if=\"$slots.actions\" class=\"alert__actions\"><slot name=\"actions\" /></div>\n </div>\n</template>\n","import { inject, type InjectionKey } from 'vue';\nimport type { ToastManager } from './toast-model.js';\n\nexport const toastManagerKey: InjectionKey<ToastManager> = Symbol('KazeeToastManager');\n\n/** Access the nearest provider's manager. Create imperative managers per application. */\nexport function useToast(): ToastManager {\n const manager = inject(toastManagerKey);\n if (!manager) throw new Error('useToast must be used inside ToastProvider.');\n return manager;\n}\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport {\n ToastRoot,\n ToastTitle,\n ToastDescription,\n ToastAction as RekaToastAction,\n ToastClose,\n} from 'reka-ui';\nimport type { ToastAction, ToastEntry, ToastManager, ToastPlacement } from './toast-model.js';\nimport { useToast } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n entry: ToastEntry;\n manager?: ToastManager;\n placement?: ToastPlacement;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }>(),\n {\n manager: undefined,\n placement: 'bottom-end',\n closeLabel: 'Tutup',\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\nconst manager = props.manager ?? useToast();\nconst closing = computed(() => props.entry.state === 'closing');\nconst swipe = ref<'start' | 'move' | 'cancel' | 'end'>();\nconst delta = ref(0);\nconst announcement = ref('');\nwatch(\n () => [props.entry.title, props.entry.description, props.entry.isLoading],\n () => {\n if (!closing.value)\n announcement.value = [props.entry.title, props.entry.description].filter(Boolean).join('. ');\n },\n);\nconst style = computed(() => ({\n touchAction: 'pan-y',\n '--toast-progress': props.entry.duration > 0 ? props.entry.remaining / props.entry.duration : 0,\n '--toast-remaining': `${props.entry.remaining}ms`,\n '--toast-duration': `${props.entry.duration}ms`,\n '--toast-swipe-x': `${delta.value}px`,\n '--reka-toast-swipe-move-x': `${delta.value}px`,\n '--reka-toast-swipe-end-x': `${delta.value}px`,\n}));\nfunction viewport(element: Element | null) {\n return element?.closest('.toast-list') as HTMLElement | null;\n}\nfunction dismiss() {\n const element = document.activeElement;\n if (\n element instanceof HTMLElement &&\n element.closest('[data-toast-id]')?.getAttribute('data-toast-id') === props.entry.id\n )\n viewport(element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id);\n}\nfunction action(value: ToastAction, reason: 'action' | 'cancel', event: MouseEvent) {\n // Prevent native primitive close; only a successful application action closes.\n event.preventDefault();\n value.onAction();\n if (value.dismiss !== false) {\n viewport(event.currentTarget as Element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id, reason);\n }\n}\nlet pointer: { id: number; x: number; y: number; direction: number; started: boolean } | undefined;\nfunction pointerDown(event: PointerEvent) {\n if (closing.value || event.button !== 0 || event.isPrimary === false) return;\n if (\n (event.target as Element).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable]:not([contenteditable=\"false\"]),[data-no-swipe]',\n )\n )\n return;\n const rtl =\n props.dir === 'rtl' ||\n (!props.dir && getComputedStyle(event.currentTarget as Element).direction === 'rtl');\n const start = props.placement.endsWith('start');\n pointer = {\n id: event.pointerId,\n x: event.clientX,\n y: event.clientY,\n direction: start !== rtl ? -1 : 1,\n started: false,\n };\n}\nfunction pointerMove(event: PointerEvent) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const x = event.clientX - pointer.x;\n const y = event.clientY - pointer.y;\n if (!pointer.started) {\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n pointer = undefined;\n return;\n }\n if (Math.abs(x) < 8) return;\n if (x * pointer.direction < 0) {\n pointer = undefined;\n return;\n }\n pointer.started = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n swipe.value = 'start';\n }\n delta.value = Math.max(0, x * pointer.direction) * pointer.direction;\n swipe.value = 'move';\n}\nfunction pointerEnd(event: PointerEvent, cancel = false) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const started = pointer.started;\n pointer = undefined;\n const node = event.currentTarget as HTMLElement;\n if (node.hasPointerCapture?.(event.pointerId)) node.releasePointerCapture(event.pointerId);\n if (!started) return;\n if (!cancel && Math.abs(delta.value) >= props.swipeThreshold) {\n swipe.value = 'end';\n manager.dismiss(props.entry.id, 'swipe');\n } else {\n swipe.value = 'cancel';\n delta.value = 0;\n }\n node.addEventListener(\n 'click',\n (click) => {\n click.preventDefault();\n click.stopPropagation();\n },\n { once: true },\n );\n}\n</script>\n\n<template>\n <!-- asChild lets Kazee closing/inert attributes override the primitive's native open/limited attributes. -->\n <ToastRoot :open=\"!closing\" :force-mount=\"true\" :duration=\"Infinity\" type=\"background\" as-child>\n <li\n class=\"toast\"\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 :dir=\"dir\"\n :inert=\"closing || undefined\"\n :aria-hidden=\"closing || undefined\"\n :tabindex=\"closing ? -1 : 0\"\n :style=\"style\"\n @pointerdown=\"pointerDown\"\n @pointermove=\"pointerMove\"\n @pointerup=\"pointerEnd($event)\"\n @pointercancel=\"pointerEnd($event, true)\"\n >\n <span class=\"toast__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\" :entry=\"entry\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"entry.isLoading\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\".25\" />\n <path d=\"M12 3a9 9 0 0 1 9 9\" />\n </template>\n <template v-else-if=\"entry.tone === 'success'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m8 12 3 3 5-6\" />\n </template>\n <template v-else-if=\"entry.tone === 'warning'\">\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v4m0 4h.01\" />\n </template>\n <template v-else-if=\"entry.tone === 'danger'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m9 9 6 6m0-6-6 6\" />\n </template>\n <template v-else>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 11v6m0-10h.01\" />\n </template>\n </svg>\n </slot>\n </span>\n <div class=\"toast__body\">\n <slot :entry=\"entry\" :dismiss=\"dismiss\">\n <ToastTitle class=\"toast__title\">{{ entry.title }}</ToastTitle>\n <ToastDescription v-if=\"entry.description\" class=\"toast__description\">{{\n entry.description\n }}</ToastDescription>\n <div v-if=\"entry.action || entry.cancel\" class=\"toast__actions\">\n <RekaToastAction\n v-if=\"entry.action\"\n class=\"toast__action\"\n :alt-text=\"entry.action.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.action, 'action', $event)\"\n >{{ entry.action.label }}</RekaToastAction\n >\n <RekaToastAction\n v-if=\"entry.cancel\"\n class=\"toast__action\"\n data-cancel\n :alt-text=\"entry.cancel.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.cancel, 'cancel', $event)\"\n >{{ entry.cancel.label }}</RekaToastAction\n >\n </div>\n </slot>\n </div>\n <ToastClose\n v-if=\"showCloseButton\"\n class=\"toast__close\"\n :aria-label=\"closeLabel\"\n :disabled=\"closing\"\n @click=\"dismiss\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </ToastClose>\n <span\n v-if=\"showProgress && entry.duration > 0 && !entry.isLoading\"\n :key=\"`${entry.generation}-${entry.remaining}-${entry.paused}`\"\n class=\"toast__progress\"\n aria-hidden=\"true\"\n />\n </li>\n </ToastRoot>\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style=\"\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n \"\n >{{ announcement }}</span\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport {\n ToastRoot,\n ToastTitle,\n ToastDescription,\n ToastAction as RekaToastAction,\n ToastClose,\n} from 'reka-ui';\nimport type { ToastAction, ToastEntry, ToastManager, ToastPlacement } from './toast-model.js';\nimport { useToast } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n entry: ToastEntry;\n manager?: ToastManager;\n placement?: ToastPlacement;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }>(),\n {\n manager: undefined,\n placement: 'bottom-end',\n closeLabel: 'Tutup',\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\nconst manager = props.manager ?? useToast();\nconst closing = computed(() => props.entry.state === 'closing');\nconst swipe = ref<'start' | 'move' | 'cancel' | 'end'>();\nconst delta = ref(0);\nconst announcement = ref('');\nwatch(\n () => [props.entry.title, props.entry.description, props.entry.isLoading],\n () => {\n if (!closing.value)\n announcement.value = [props.entry.title, props.entry.description].filter(Boolean).join('. ');\n },\n);\nconst style = computed(() => ({\n touchAction: 'pan-y',\n '--toast-progress': props.entry.duration > 0 ? props.entry.remaining / props.entry.duration : 0,\n '--toast-remaining': `${props.entry.remaining}ms`,\n '--toast-duration': `${props.entry.duration}ms`,\n '--toast-swipe-x': `${delta.value}px`,\n '--reka-toast-swipe-move-x': `${delta.value}px`,\n '--reka-toast-swipe-end-x': `${delta.value}px`,\n}));\nfunction viewport(element: Element | null) {\n return element?.closest('.toast-list') as HTMLElement | null;\n}\nfunction dismiss() {\n const element = document.activeElement;\n if (\n element instanceof HTMLElement &&\n element.closest('[data-toast-id]')?.getAttribute('data-toast-id') === props.entry.id\n )\n viewport(element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id);\n}\nfunction action(value: ToastAction, reason: 'action' | 'cancel', event: MouseEvent) {\n // Prevent native primitive close; only a successful application action closes.\n event.preventDefault();\n value.onAction();\n if (value.dismiss !== false) {\n viewport(event.currentTarget as Element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id, reason);\n }\n}\nlet pointer: { id: number; x: number; y: number; direction: number; started: boolean } | undefined;\nfunction pointerDown(event: PointerEvent) {\n if (closing.value || event.button !== 0 || event.isPrimary === false) return;\n if (\n (event.target as Element).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable]:not([contenteditable=\"false\"]),[data-no-swipe]',\n )\n )\n return;\n const rtl =\n props.dir === 'rtl' ||\n (!props.dir && getComputedStyle(event.currentTarget as Element).direction === 'rtl');\n const start = props.placement.endsWith('start');\n pointer = {\n id: event.pointerId,\n x: event.clientX,\n y: event.clientY,\n direction: start !== rtl ? -1 : 1,\n started: false,\n };\n}\nfunction pointerMove(event: PointerEvent) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const x = event.clientX - pointer.x;\n const y = event.clientY - pointer.y;\n if (!pointer.started) {\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n pointer = undefined;\n return;\n }\n if (Math.abs(x) < 8) return;\n if (x * pointer.direction < 0) {\n pointer = undefined;\n return;\n }\n pointer.started = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n swipe.value = 'start';\n }\n delta.value = Math.max(0, x * pointer.direction) * pointer.direction;\n swipe.value = 'move';\n}\nfunction pointerEnd(event: PointerEvent, cancel = false) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const started = pointer.started;\n pointer = undefined;\n const node = event.currentTarget as HTMLElement;\n if (node.hasPointerCapture?.(event.pointerId)) node.releasePointerCapture(event.pointerId);\n if (!started) return;\n if (!cancel && Math.abs(delta.value) >= props.swipeThreshold) {\n swipe.value = 'end';\n manager.dismiss(props.entry.id, 'swipe');\n } else {\n swipe.value = 'cancel';\n delta.value = 0;\n }\n node.addEventListener(\n 'click',\n (click) => {\n click.preventDefault();\n click.stopPropagation();\n },\n { once: true },\n );\n}\n</script>\n\n<template>\n <!-- asChild lets Kazee closing/inert attributes override the primitive's native open/limited attributes. -->\n <ToastRoot :open=\"!closing\" :force-mount=\"true\" :duration=\"Infinity\" type=\"background\" as-child>\n <li\n class=\"toast\"\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 :dir=\"dir\"\n :inert=\"closing || undefined\"\n :aria-hidden=\"closing || undefined\"\n :tabindex=\"closing ? -1 : 0\"\n :style=\"style\"\n @pointerdown=\"pointerDown\"\n @pointermove=\"pointerMove\"\n @pointerup=\"pointerEnd($event)\"\n @pointercancel=\"pointerEnd($event, true)\"\n >\n <span class=\"toast__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\" :entry=\"entry\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"entry.isLoading\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\".25\" />\n <path d=\"M12 3a9 9 0 0 1 9 9\" />\n </template>\n <template v-else-if=\"entry.tone === 'success'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m8 12 3 3 5-6\" />\n </template>\n <template v-else-if=\"entry.tone === 'warning'\">\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v4m0 4h.01\" />\n </template>\n <template v-else-if=\"entry.tone === 'danger'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m9 9 6 6m0-6-6 6\" />\n </template>\n <template v-else>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 11v6m0-10h.01\" />\n </template>\n </svg>\n </slot>\n </span>\n <div class=\"toast__body\">\n <slot :entry=\"entry\" :dismiss=\"dismiss\">\n <ToastTitle class=\"toast__title\">{{ entry.title }}</ToastTitle>\n <ToastDescription v-if=\"entry.description\" class=\"toast__description\">{{\n entry.description\n }}</ToastDescription>\n <div v-if=\"entry.action || entry.cancel\" class=\"toast__actions\">\n <RekaToastAction\n v-if=\"entry.action\"\n class=\"toast__action\"\n :alt-text=\"entry.action.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.action, 'action', $event)\"\n >{{ entry.action.label }}</RekaToastAction\n >\n <RekaToastAction\n v-if=\"entry.cancel\"\n class=\"toast__action\"\n data-cancel\n :alt-text=\"entry.cancel.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.cancel, 'cancel', $event)\"\n >{{ entry.cancel.label }}</RekaToastAction\n >\n </div>\n </slot>\n </div>\n <ToastClose\n v-if=\"showCloseButton\"\n class=\"toast__close\"\n :aria-label=\"closeLabel\"\n :disabled=\"closing\"\n @click=\"dismiss\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </ToastClose>\n <span\n v-if=\"showProgress && entry.duration > 0 && !entry.isLoading\"\n :key=\"`${entry.generation}-${entry.remaining}-${entry.paused}`\"\n class=\"toast__progress\"\n aria-hidden=\"true\"\n />\n </li>\n </ToastRoot>\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style=\"\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n \"\n >{{ announcement }}</span\n >\n</template>\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","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, provide, ref, shallowRef } from 'vue';\nimport { ToastProvider as RekaToastProvider, ToastViewport } from 'reka-ui';\nimport Toast from './Toast.vue';\nimport {\n createToastManager,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\nimport { toastManagerKey } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n hotkey?: string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }>(),\n {\n manager: undefined,\n placement: 'bottom-end',\n label: 'Notifikasi',\n closeLabel: 'Tutup',\n hotkey: () => ['altKey', 'KeyT'],\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { toast: ToastManager }) => unknown;\n toast?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\n// Capture ownership at setup; replacing a mounted provider's manager is unsupported.\nconst manager = props.manager ?? createToastManager();\nconst owned = !props.manager;\nprovide(toastManagerKey, manager);\nconst entries = shallowRef<readonly ToastEntry[]>(manager.getServerSnapshot());\nconst region = ref<HTMLElement>();\nconst active = ref(false);\nconst causes = new Set<string>();\nlet unsubscribe: (() => void) | undefined;\nlet detach: (() => void) | undefined;\nlet previousFocus: HTMLElement | undefined;\nconst positions = new Map<string, { x: number; y: number }>();\nconst movements = new Map<HTMLElement, Animation>();\nlet reflowQueued = false;\nconst hotkeyText = computed(() =>\n props.hotkey\n .map(\n (key) =>\n ({ altKey: 'Alt', ctrlKey: 'Ctrl', metaKey: 'Meta', shiftKey: 'Shift' })[key] ??\n key.replace(/^Key|^Digit/, ''),\n )\n .join('+'),\n);\nconst viewportLabel = computed(() =>\n hotkeyText.value ? `${props.label} (${hotkeyText.value})` : props.label,\n);\nfunction pause(cause: string) {\n if (!causes.has(cause)) {\n causes.add(cause);\n manager.pause(`vue:${cause}`);\n }\n}\nfunction resume(cause: string) {\n if (causes.delete(cause)) manager.resume(`vue:${cause}`);\n}\nfunction focusOut(event: FocusEvent) {\n if (!region.value?.contains(event.relatedTarget as Node | null)) resume('focus');\n}\nfunction focusIn(event: FocusEvent) {\n if (event.relatedTarget instanceof HTMLElement && !region.value?.contains(event.relatedTarget)) {\n previousFocus = event.relatedTarget;\n }\n pause('focus');\n}\nfunction windowBlur() {\n pause('window');\n}\nfunction windowFocus() {\n resume('window');\n}\nfunction visibility() {\n if (document.hidden) pause('document');\n else resume('document');\n}\nfunction list() {\n return region.value?.querySelector<HTMLElement>('.toast-list');\n}\nfunction restoreIfEmpty() {\n const focused = document.activeElement;\n if (!region.value?.contains(focused)) return;\n if (!entries.value.some((entry) => entry.state === 'open')) {\n if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n else if (focused instanceof HTMLElement) focused.blur();\n return;\n }\n const id =\n focused instanceof Element\n ? focused.closest<HTMLElement>('[data-toast-id]')?.dataset.toastId\n : undefined;\n if (id && !entries.value.some((entry) => entry.id === id && entry.state === 'open')) {\n list()?.focus({ preventScroll: true });\n }\n}\nfunction keyboard(event: KeyboardEvent) {\n if (\n !props.hotkey.length ||\n event.defaultPrevented ||\n !entries.value.some((entry) => entry.state === 'open')\n )\n return;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'] as const;\n const matches = props.hotkey.every((key) =>\n modifiers.includes(key as (typeof modifiers)[number])\n ? event[key as (typeof modifiers)[number]]\n : event.code === key ||\n (typeof event.key === 'string' && event.key.toLowerCase() === key.toLowerCase()),\n );\n if (!matches || modifiers.some((key) => event[key] !== props.hotkey.includes(key))) return;\n previousFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement : undefined;\n list()?.focus({ preventScroll: true });\n event.preventDefault();\n}\nfunction escape(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n const target =\n event.target instanceof Element ? event.target.closest<HTMLElement>('[data-toast-id]') : null;\n const entry = target\n ? entries.value.find((item) => item.id === target.dataset.toastId && item.state === 'open')\n : [...entries.value].reverse().find((item) => item.state === 'open');\n if (!entry) return;\n event.preventDefault();\n event.stopPropagation();\n list()?.focus({ preventScroll: true });\n manager.dismiss(entry.id);\n restoreIfEmpty();\n}\nfunction capturePositions() {\n positions.clear();\n if (!active.value || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n // Layout offsets exclude the CSS entry/swipe transform and any current FLIP translation.\n if (element.dataset.toastId)\n positions.set(element.dataset.toastId, {\n x: element.offsetLeft + (origin?.left ?? 0),\n y: element.offsetTop + (origin?.top ?? 0),\n });\n });\n}\nfunction animateMovement(previous: Map<string, { x: number; y: number }>) {\n if (!active.value) return;\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (reduced) {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n return;\n }\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n const before = previous.get(element.dataset.toastId ?? '');\n if (!before || element.dataset.state !== 'open' || !element.animate) return;\n const x = before.x - element.offsetLeft - (origin?.left ?? 0);\n const y = before.y - element.offsetTop - (origin?.top ?? 0);\n if (!x && !y) return;\n movements.get(element)?.cancel();\n const css = getComputedStyle(element);\n const token = css.getPropertyValue('--ds-motion-duration-normal').trim();\n const parsed = Number.parseFloat(token);\n const duration = Number.isFinite(parsed) ? parsed * (token.endsWith('ms') ? 1 : 1000) : 200;\n const animation = element.animate([{ translate: `${x}px ${y}px` }, { translate: '0px 0px' }], {\n duration,\n easing: css.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease',\n });\n movements.set(element, animation);\n const remove = () => {\n if (movements.get(element) === animation) movements.delete(element);\n };\n void animation.finished.then(remove, remove);\n });\n for (const [element, animation] of movements) {\n if (!element.isConnected) {\n animation.cancel();\n movements.delete(element);\n }\n }\n}\nonMounted(() => {\n // attach throws before any subscriptions/listeners on duplicate ownership.\n detach = manager.attach();\n active.value = true;\n entries.value = manager.getSnapshot();\n unsubscribe = manager.subscribe(() => {\n if (!reflowQueued) {\n capturePositions();\n const previous = new Map(positions);\n reflowQueued = true;\n entries.value = manager.getSnapshot();\n void nextTick(() => {\n reflowQueued = false;\n animateMovement(previous);\n });\n }\n entries.value = manager.getSnapshot();\n restoreIfEmpty();\n });\n window.addEventListener('blur', windowBlur);\n window.addEventListener('focus', windowFocus);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keyboard);\n visibility();\n if (!document.hasFocus()) pause('window');\n});\nonBeforeUnmount(() => {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n if (!active.value) return;\n active.value = false;\n const errors: unknown[] = [];\n const cleanup = (operation: (() => void) | undefined) => {\n try {\n operation?.();\n } catch (error) {\n errors.push(error);\n }\n };\n cleanup(unsubscribe);\n cleanup(detach);\n // Detach first to prevent a briefly resumed external timer while clearing our pause causes.\n [...causes].forEach((cause) => cleanup(() => resume(cause)));\n if (owned) cleanup(() => manager.dispose());\n window.removeEventListener('blur', windowBlur);\n window.removeEventListener('focus', windowFocus);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keyboard);\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast provider cleanup failed.');\n});\n</script>\n\n<template>\n <RekaToastProvider :duration=\"Infinity\" :disable-swipe=\"true\" :label=\"label\">\n <slot :toast=\"manager\" />\n <div\n ref=\"region\"\n class=\"toast-region\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n @pointerenter=\"pause('hover')\"\n @pointerleave=\"resume('hover')\"\n @focusin=\"focusIn\"\n @focusout=\"focusOut\"\n @keydown.capture=\"escape\"\n >\n <!-- Reka's native array matches keys individually; Kazee handles the complete chord. -->\n <ToastViewport\n class=\"toast-list\"\n :hotkey=\"[]\"\n :label=\"viewportLabel\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n />\n </div>\n <Toast\n v-for=\"entry in entries\"\n :key=\"entry.generation\"\n :entry=\"entry\"\n :manager=\"manager\"\n :placement=\"placement\"\n :dir=\"dir\"\n :close-label=\"closeLabel\"\n :show-progress=\"showProgress\"\n :show-close-button=\"showCloseButton\"\n :swipe-threshold=\"swipeThreshold\"\n >\n <template v-if=\"$slots.toast\" #default=\"slotProps\"\n ><slot name=\"toast\" v-bind=\"slotProps\"\n /></template>\n <template v-if=\"$slots.indicator\" #indicator=\"slotProps\"\n ><slot name=\"indicator\" v-bind=\"slotProps\"\n /></template>\n </Toast>\n </RekaToastProvider>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, provide, ref, shallowRef } from 'vue';\nimport { ToastProvider as RekaToastProvider, ToastViewport } from 'reka-ui';\nimport Toast from './Toast.vue';\nimport {\n createToastManager,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\nimport { toastManagerKey } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n hotkey?: string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }>(),\n {\n manager: undefined,\n placement: 'bottom-end',\n label: 'Notifikasi',\n closeLabel: 'Tutup',\n hotkey: () => ['altKey', 'KeyT'],\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { toast: ToastManager }) => unknown;\n toast?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\n// Capture ownership at setup; replacing a mounted provider's manager is unsupported.\nconst manager = props.manager ?? createToastManager();\nconst owned = !props.manager;\nprovide(toastManagerKey, manager);\nconst entries = shallowRef<readonly ToastEntry[]>(manager.getServerSnapshot());\nconst region = ref<HTMLElement>();\nconst active = ref(false);\nconst causes = new Set<string>();\nlet unsubscribe: (() => void) | undefined;\nlet detach: (() => void) | undefined;\nlet previousFocus: HTMLElement | undefined;\nconst positions = new Map<string, { x: number; y: number }>();\nconst movements = new Map<HTMLElement, Animation>();\nlet reflowQueued = false;\nconst hotkeyText = computed(() =>\n props.hotkey\n .map(\n (key) =>\n ({ altKey: 'Alt', ctrlKey: 'Ctrl', metaKey: 'Meta', shiftKey: 'Shift' })[key] ??\n key.replace(/^Key|^Digit/, ''),\n )\n .join('+'),\n);\nconst viewportLabel = computed(() =>\n hotkeyText.value ? `${props.label} (${hotkeyText.value})` : props.label,\n);\nfunction pause(cause: string) {\n if (!causes.has(cause)) {\n causes.add(cause);\n manager.pause(`vue:${cause}`);\n }\n}\nfunction resume(cause: string) {\n if (causes.delete(cause)) manager.resume(`vue:${cause}`);\n}\nfunction focusOut(event: FocusEvent) {\n if (!region.value?.contains(event.relatedTarget as Node | null)) resume('focus');\n}\nfunction focusIn(event: FocusEvent) {\n if (event.relatedTarget instanceof HTMLElement && !region.value?.contains(event.relatedTarget)) {\n previousFocus = event.relatedTarget;\n }\n pause('focus');\n}\nfunction windowBlur() {\n pause('window');\n}\nfunction windowFocus() {\n resume('window');\n}\nfunction visibility() {\n if (document.hidden) pause('document');\n else resume('document');\n}\nfunction list() {\n return region.value?.querySelector<HTMLElement>('.toast-list');\n}\nfunction restoreIfEmpty() {\n const focused = document.activeElement;\n if (!region.value?.contains(focused)) return;\n if (!entries.value.some((entry) => entry.state === 'open')) {\n if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n else if (focused instanceof HTMLElement) focused.blur();\n return;\n }\n const id =\n focused instanceof Element\n ? focused.closest<HTMLElement>('[data-toast-id]')?.dataset.toastId\n : undefined;\n if (id && !entries.value.some((entry) => entry.id === id && entry.state === 'open')) {\n list()?.focus({ preventScroll: true });\n }\n}\nfunction keyboard(event: KeyboardEvent) {\n if (\n !props.hotkey.length ||\n event.defaultPrevented ||\n !entries.value.some((entry) => entry.state === 'open')\n )\n return;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'] as const;\n const matches = props.hotkey.every((key) =>\n modifiers.includes(key as (typeof modifiers)[number])\n ? event[key as (typeof modifiers)[number]]\n : event.code === key ||\n (typeof event.key === 'string' && event.key.toLowerCase() === key.toLowerCase()),\n );\n if (!matches || modifiers.some((key) => event[key] !== props.hotkey.includes(key))) return;\n previousFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement : undefined;\n list()?.focus({ preventScroll: true });\n event.preventDefault();\n}\nfunction escape(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n const target =\n event.target instanceof Element ? event.target.closest<HTMLElement>('[data-toast-id]') : null;\n const entry = target\n ? entries.value.find((item) => item.id === target.dataset.toastId && item.state === 'open')\n : [...entries.value].reverse().find((item) => item.state === 'open');\n if (!entry) return;\n event.preventDefault();\n event.stopPropagation();\n list()?.focus({ preventScroll: true });\n manager.dismiss(entry.id);\n restoreIfEmpty();\n}\nfunction capturePositions() {\n positions.clear();\n if (!active.value || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n // Layout offsets exclude the CSS entry/swipe transform and any current FLIP translation.\n if (element.dataset.toastId)\n positions.set(element.dataset.toastId, {\n x: element.offsetLeft + (origin?.left ?? 0),\n y: element.offsetTop + (origin?.top ?? 0),\n });\n });\n}\nfunction animateMovement(previous: Map<string, { x: number; y: number }>) {\n if (!active.value) return;\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (reduced) {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n return;\n }\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n const before = previous.get(element.dataset.toastId ?? '');\n if (!before || element.dataset.state !== 'open' || !element.animate) return;\n const x = before.x - element.offsetLeft - (origin?.left ?? 0);\n const y = before.y - element.offsetTop - (origin?.top ?? 0);\n if (!x && !y) return;\n movements.get(element)?.cancel();\n const css = getComputedStyle(element);\n const token = css.getPropertyValue('--ds-motion-duration-normal').trim();\n const parsed = Number.parseFloat(token);\n const duration = Number.isFinite(parsed) ? parsed * (token.endsWith('ms') ? 1 : 1000) : 200;\n const animation = element.animate([{ translate: `${x}px ${y}px` }, { translate: '0px 0px' }], {\n duration,\n easing: css.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease',\n });\n movements.set(element, animation);\n const remove = () => {\n if (movements.get(element) === animation) movements.delete(element);\n };\n void animation.finished.then(remove, remove);\n });\n for (const [element, animation] of movements) {\n if (!element.isConnected) {\n animation.cancel();\n movements.delete(element);\n }\n }\n}\nonMounted(() => {\n // attach throws before any subscriptions/listeners on duplicate ownership.\n detach = manager.attach();\n active.value = true;\n entries.value = manager.getSnapshot();\n unsubscribe = manager.subscribe(() => {\n if (!reflowQueued) {\n capturePositions();\n const previous = new Map(positions);\n reflowQueued = true;\n entries.value = manager.getSnapshot();\n void nextTick(() => {\n reflowQueued = false;\n animateMovement(previous);\n });\n }\n entries.value = manager.getSnapshot();\n restoreIfEmpty();\n });\n window.addEventListener('blur', windowBlur);\n window.addEventListener('focus', windowFocus);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keyboard);\n visibility();\n if (!document.hasFocus()) pause('window');\n});\nonBeforeUnmount(() => {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n if (!active.value) return;\n active.value = false;\n const errors: unknown[] = [];\n const cleanup = (operation: (() => void) | undefined) => {\n try {\n operation?.();\n } catch (error) {\n errors.push(error);\n }\n };\n cleanup(unsubscribe);\n cleanup(detach);\n // Detach first to prevent a briefly resumed external timer while clearing our pause causes.\n [...causes].forEach((cause) => cleanup(() => resume(cause)));\n if (owned) cleanup(() => manager.dispose());\n window.removeEventListener('blur', windowBlur);\n window.removeEventListener('focus', windowFocus);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keyboard);\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast provider cleanup failed.');\n});\n</script>\n\n<template>\n <RekaToastProvider :duration=\"Infinity\" :disable-swipe=\"true\" :label=\"label\">\n <slot :toast=\"manager\" />\n <div\n ref=\"region\"\n class=\"toast-region\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n @pointerenter=\"pause('hover')\"\n @pointerleave=\"resume('hover')\"\n @focusin=\"focusIn\"\n @focusout=\"focusOut\"\n @keydown.capture=\"escape\"\n >\n <!-- Reka's native array matches keys individually; Kazee handles the complete chord. -->\n <ToastViewport\n class=\"toast-list\"\n :hotkey=\"[]\"\n :label=\"viewportLabel\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n />\n </div>\n <Toast\n v-for=\"entry in entries\"\n :key=\"entry.generation\"\n :entry=\"entry\"\n :manager=\"manager\"\n :placement=\"placement\"\n :dir=\"dir\"\n :close-label=\"closeLabel\"\n :show-progress=\"showProgress\"\n :show-close-button=\"showCloseButton\"\n :swipe-threshold=\"swipeThreshold\"\n >\n <template v-if=\"$slots.toast\" #default=\"slotProps\"\n ><slot name=\"toast\" v-bind=\"slotProps\"\n /></template>\n <template v-if=\"$slots.indicator\" #indicator=\"slotProps\"\n ><slot name=\"indicator\" v-bind=\"slotProps\"\n /></template>\n </Toast>\n </RekaToastProvider>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n id?: string;\n }>(),\n { description: undefined, headingLevel: 3, id: undefined },\n);\n</script>\n<template>\n <div :id=\"id\" class=\"empty\">\n <component :is=\"`h${headingLevel}`\" class=\"empty__title\">{{ title }}</component>\n <p v-if=\"description\" class=\"empty__description\">{{ description }}</p>\n <slot />\n <div v-if=\"$slots.actions\" class=\"empty__actions\"><slot name=\"actions\" /></div>\n </div>\n</template>\n","<script setup lang=\"ts\">\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n id?: string;\n }>(),\n { description: undefined, headingLevel: 3, id: undefined },\n);\n</script>\n<template>\n <div :id=\"id\" class=\"empty\">\n <component :is=\"`h${headingLevel}`\" class=\"empty__title\">{{ title }}</component>\n <p v-if=\"description\" class=\"empty__description\">{{ description }}</p>\n <slot />\n <div v-if=\"$slots.actions\" class=\"empty__actions\"><slot name=\"actions\" /></div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { BreadcrumbItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{ items: BreadcrumbItem[]; label?: string; dir?: 'ltr' | 'rtl'; id?: string }>(),\n { label: 'Jejak halaman', dir: undefined, id: undefined },\n);\n</script>\n<template>\n <nav :id=\"id\" class=\"breadcrumb\" :aria-label=\"label\" :dir=\"dir\">\n <ol>\n <li v-for=\"(item, index) in items\" :key=\"index\">\n <span v-if=\"index > 0\" class=\"breadcrumb__separator\" aria-hidden=\"true\">/</span\n ><span v-if=\"index === items.length - 1\" aria-current=\"page\">{{ item.label }}</span\n ><a v-else-if=\"item.href\" :href=\"item.href\">{{ item.label }}</a\n ><span v-else>{{ item.label }}</span>\n </li>\n </ol>\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport type { BreadcrumbItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{ items: BreadcrumbItem[]; label?: string; dir?: 'ltr' | 'rtl'; id?: string }>(),\n { label: 'Jejak halaman', dir: undefined, id: undefined },\n);\n</script>\n<template>\n <nav :id=\"id\" class=\"breadcrumb\" :aria-label=\"label\" :dir=\"dir\">\n <ol>\n <li v-for=\"(item, index) in items\" :key=\"index\">\n <span v-if=\"index > 0\" class=\"breadcrumb__separator\" aria-hidden=\"true\">/</span\n ><span v-if=\"index === items.length - 1\" aria-current=\"page\">{{ item.label }}</span\n ><a v-else-if=\"item.href\" :href=\"item.href\">{{ item.label }}</a\n ><span v-else>{{ item.label }}</span>\n </li>\n </ol>\n </nav>\n</template>\n","import { computed, ref } from 'vue';\nexport function useDisclosure(\n props: { open?: boolean; defaultOpen?: boolean },\n emit: (open: boolean) => void,\n) {\n const local = ref(props.defaultOpen ?? false);\n const visible = computed(() => props.open ?? local.value);\n function change(next: boolean) {\n if (next === visible.value) return;\n local.value = next;\n emit(next);\n }\n return { visible, change };\n}\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n currentId: undefined,\n open: undefined,\n defaultOpen: true,\n toggleLabel: 'Menu navigasi',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n navId = computed(() => `${props.id ?? generated}-nav`);\n</script>\n<template>\n <aside :id=\"id\" class=\"sidebar\" :dir=\"dir\">\n <div class=\"sidebar__header\">\n <span class=\"sidebar__title\">{{ label }}</span\n ><button\n type=\"button\"\n class=\"sidebar__toggle\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"visible\"\n :aria-controls=\"navId\"\n @click=\"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 <li v-for=\"item in items\" :key=\"item.id\">\n <span v-if=\"item.isDisabled\" class=\"sidebar__link\" aria-disabled=\"true\">{{\n item.label\n }}</span\n ><a\n v-else\n class=\"sidebar__link\"\n :href=\"item.href\"\n :aria-current=\"item.id === currentId ? 'page' : undefined\"\n >{{ item.label }}</a\n >\n </li>\n </ul>\n </nav>\n </aside>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }>(),\n {\n currentId: undefined,\n open: undefined,\n defaultOpen: true,\n toggleLabel: 'Menu navigasi',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n navId = computed(() => `${props.id ?? generated}-nav`);\n</script>\n<template>\n <aside :id=\"id\" class=\"sidebar\" :dir=\"dir\">\n <div class=\"sidebar__header\">\n <span class=\"sidebar__title\">{{ label }}</span\n ><button\n type=\"button\"\n class=\"sidebar__toggle\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"visible\"\n :aria-controls=\"navId\"\n @click=\"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 <li v-for=\"item in items\" :key=\"item.id\">\n <span v-if=\"item.isDisabled\" class=\"sidebar__link\" aria-disabled=\"true\">{{\n item.label\n }}</span\n ><a\n v-else\n class=\"sidebar__link\"\n :href=\"item.href\"\n :aria-current=\"item.id === currentId ? 'page' : undefined\"\n >{{ item.label }}</a\n >\n </li>\n </ul>\n </nav>\n </aside>\n</template>\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","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { chartModel } from './chart-model.js';\nimport Table from './Table.vue';\nimport Empty from './Empty.vue';\nimport type { ChartDatum } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\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 }>(),\n {\n type: 'bar',\n description: undefined,\n locale: 'id-ID',\n formatOptions: undefined,\n categoryLabel: 'Kategori',\n valueLabel: 'Nilai',\n emptyMessage: 'Belum ada data grafik.',\n id: undefined,\n dir: undefined,\n },\n);\nconst generated = useId(),\n labelId = computed(() => `${props.id ?? generated}-label`),\n model = computed(() => chartModel(props.data)),\n format = computed(() => new Intl.NumberFormat(props.locale, props.formatOptions));\nconst points = computed(() => model.value.items.map((item) => `${item.x},${item.y}`).join(' '));\n</script>\n<template>\n <figure :id=\"id\" class=\"chart\" :dir=\"dir\" :aria-labelledby=\"labelId\">\n <figcaption :id=\"labelId\" class=\"chart__title\">{{ label }}</figcaption>\n <p v-if=\"description\" class=\"chart__description\">{{ description }}</p>\n <template v-if=\"model.items.length\"\n ><svg class=\"chart__plot\" viewBox=\"0 0 600 210\" aria-hidden=\"true\" focusable=\"false\">\n <line class=\"chart__axis\" x1=\"20\" x2=\"580\" :y1=\"model.baseline\" :y2=\"model.baseline\" />\n <polyline v-if=\"type === 'line'\" class=\"chart__line\" :points=\"points\" />\n <g v-for=\"item in model.items\" :key=\"item.id\">\n <rect\n v-if=\"type === 'bar'\"\n class=\"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 <circle v-else class=\"chart__bar\" :cx=\"item.x\" :cy=\"item.y\" r=\"4\" />\n <text\n v-if=\"model.items.length <= 12\"\n class=\"chart__label\"\n :x=\"item.x\"\n y=\"202\"\n text-anchor=\"middle\"\n >\n {{ item.label.slice(0, 12) }}\n </text>\n </g></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 <tr v-for=\"item in model.items\" :key=\"item.id\">\n <th scope=\"row\">{{ item.label }}</th>\n <td>{{ format.format(item.value) }}</td>\n </tr>\n </tbody></Table\n ></template\n ><Empty v-else :title=\"emptyMessage\" />\n </figure>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { chartModel } from './chart-model.js';\nimport Table from './Table.vue';\nimport Empty from './Empty.vue';\nimport type { ChartDatum } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\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 }>(),\n {\n type: 'bar',\n description: undefined,\n locale: 'id-ID',\n formatOptions: undefined,\n categoryLabel: 'Kategori',\n valueLabel: 'Nilai',\n emptyMessage: 'Belum ada data grafik.',\n id: undefined,\n dir: undefined,\n },\n);\nconst generated = useId(),\n labelId = computed(() => `${props.id ?? generated}-label`),\n model = computed(() => chartModel(props.data)),\n format = computed(() => new Intl.NumberFormat(props.locale, props.formatOptions));\nconst points = computed(() => model.value.items.map((item) => `${item.x},${item.y}`).join(' '));\n</script>\n<template>\n <figure :id=\"id\" class=\"chart\" :dir=\"dir\" :aria-labelledby=\"labelId\">\n <figcaption :id=\"labelId\" class=\"chart__title\">{{ label }}</figcaption>\n <p v-if=\"description\" class=\"chart__description\">{{ description }}</p>\n <template v-if=\"model.items.length\"\n ><svg class=\"chart__plot\" viewBox=\"0 0 600 210\" aria-hidden=\"true\" focusable=\"false\">\n <line class=\"chart__axis\" x1=\"20\" x2=\"580\" :y1=\"model.baseline\" :y2=\"model.baseline\" />\n <polyline v-if=\"type === 'line'\" class=\"chart__line\" :points=\"points\" />\n <g v-for=\"item in model.items\" :key=\"item.id\">\n <rect\n v-if=\"type === 'bar'\"\n class=\"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 <circle v-else class=\"chart__bar\" :cx=\"item.x\" :cy=\"item.y\" r=\"4\" />\n <text\n v-if=\"model.items.length <= 12\"\n class=\"chart__label\"\n :x=\"item.x\"\n y=\"202\"\n text-anchor=\"middle\"\n >\n {{ item.label.slice(0, 12) }}\n </text>\n </g></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 <tr v-for=\"item in model.items\" :key=\"item.id\">\n <th scope=\"row\">{{ item.label }}</th>\n <td>{{ format.format(item.value) }}</td>\n </tr>\n </tbody></Table\n ></template\n ><Empty v-else :title=\"emptyMessage\" />\n </figure>\n</template>\n","<script setup lang=\"ts\">\nimport {\n DialogRoot,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport CloseIcon from './CloseIcon.vue';\nimport type { ButtonVariant } from './types.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n dismissable?: boolean;\n keyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n size: 'md',\n placement: 'center',\n scroll: 'outside',\n backdrop: 'opaque',\n dismissable: true,\n keyboardDismissDisabled: false,\n showCloseButton: true,\n showFooterClose: true,\n triggerVariant: 'secondary',\n description: undefined,\n dir: undefined,\n closeIconLabel: undefined,\n },\n);\ndefineSlots<{ default?: () => unknown; footer?: () => unknown; trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <DialogRoot :open=\"visible\" @update:open=\"change\">\n <DialogTrigger\n :class=\"['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only']\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DialogTrigger\n >\n <DialogPortal>\n <DialogOverlay\n class=\"dialog__backdrop dialog__viewport\"\n :data-size=\"size\"\n :data-placement=\"placement\"\n :data-scroll=\"scroll\"\n :data-backdrop=\"backdrop\"\n >\n <DialogContent\n class=\"dialog__panel\"\n :dir=\"dir\"\n v-bind=\"description ? {} : { 'aria-describedby': undefined }\"\n @escape-key-down=\"\n (event) => {\n if (keyboardDismissDisabled) event.preventDefault();\n }\n \"\n @interact-outside=\"\n (event) => {\n if (!dismissable) event.preventDefault();\n }\n \"\n >\n <div class=\"dialog__content\">\n <div class=\"overlay__header\" :data-close-button=\"showCloseButton || undefined\">\n <DialogTitle class=\"overlay__title\">{{ title }}</DialogTitle>\n <DialogDescription v-if=\"description\" class=\"overlay__description\">{{\n description\n }}</DialogDescription>\n <DialogClose\n v-if=\"showCloseButton\"\n class=\"dialog__close\"\n :aria-label=\"closeIconLabel ?? `${closeLabel} dialog`\"\n ><CloseIcon\n /></DialogClose>\n </div>\n <div class=\"overlay__body\"><slot /></div>\n <div v-if=\"$slots.footer || showFooterClose\" class=\"overlay__footer\">\n <slot name=\"footer\" /><DialogClose\n v-if=\"showFooterClose\"\n class=\"button button--secondary\"\n >{{ closeLabel }}</DialogClose\n >\n </div>\n </div>\n </DialogContent>\n </DialogOverlay>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport {\n DialogRoot,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport CloseIcon from './CloseIcon.vue';\nimport type { ButtonVariant } from './types.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n dismissable?: boolean;\n keyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n size: 'md',\n placement: 'center',\n scroll: 'outside',\n backdrop: 'opaque',\n dismissable: true,\n keyboardDismissDisabled: false,\n showCloseButton: true,\n showFooterClose: true,\n triggerVariant: 'secondary',\n description: undefined,\n dir: undefined,\n closeIconLabel: undefined,\n },\n);\ndefineSlots<{ default?: () => unknown; footer?: () => unknown; trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <DialogRoot :open=\"visible\" @update:open=\"change\">\n <DialogTrigger\n :class=\"['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only']\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DialogTrigger\n >\n <DialogPortal>\n <DialogOverlay\n class=\"dialog__backdrop dialog__viewport\"\n :data-size=\"size\"\n :data-placement=\"placement\"\n :data-scroll=\"scroll\"\n :data-backdrop=\"backdrop\"\n >\n <DialogContent\n class=\"dialog__panel\"\n :dir=\"dir\"\n v-bind=\"description ? {} : { 'aria-describedby': undefined }\"\n @escape-key-down=\"\n (event) => {\n if (keyboardDismissDisabled) event.preventDefault();\n }\n \"\n @interact-outside=\"\n (event) => {\n if (!dismissable) event.preventDefault();\n }\n \"\n >\n <div class=\"dialog__content\">\n <div class=\"overlay__header\" :data-close-button=\"showCloseButton || undefined\">\n <DialogTitle class=\"overlay__title\">{{ title }}</DialogTitle>\n <DialogDescription v-if=\"description\" class=\"overlay__description\">{{\n description\n }}</DialogDescription>\n <DialogClose\n v-if=\"showCloseButton\"\n class=\"dialog__close\"\n :aria-label=\"closeIconLabel ?? `${closeLabel} dialog`\"\n ><CloseIcon\n /></DialogClose>\n </div>\n <div class=\"overlay__body\"><slot /></div>\n <div v-if=\"$slots.footer || showFooterClose\" class=\"overlay__footer\">\n <slot name=\"footer\" /><DialogClose\n v-if=\"showFooterClose\"\n class=\"button button--secondary\"\n >{{ closeLabel }}</DialogClose\n >\n </div>\n </div>\n </DialogContent>\n </DialogOverlay>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport type { DropdownMenuItem } from './dashboard-types.js';\ndefineProps<{ item: DropdownMenuItem; selectable: boolean }>();\ndefineSlots<{ icon?: (props: { item: DropdownMenuItem }) => unknown }>();\n</script>\n<template>\n <CheckIcon v-if=\"selectable && !item.children?.length\" class=\"menu__check\" />\n <span v-if=\"$slots.icon\" class=\"menu__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span class=\"menu__text\"\n ><span>{{ item.label }}</span\n ><span v-if=\"item.description\" class=\"menu__description\">{{ item.description }}</span></span\n >\n <kbd v-if=\"item.shortcut\" class=\"menu__shortcut\" aria-hidden=\"true\">{{ item.shortcut }}</kbd>\n <ChevronIcon v-if=\"item.children?.length\" class=\"menu__arrow\" />\n</template>\n","<script setup lang=\"ts\">\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport type { DropdownMenuItem } from './dashboard-types.js';\ndefineProps<{ item: DropdownMenuItem; selectable: boolean }>();\ndefineSlots<{ icon?: (props: { item: DropdownMenuItem }) => unknown }>();\n</script>\n<template>\n <CheckIcon v-if=\"selectable && !item.children?.length\" class=\"menu__check\" />\n <span v-if=\"$slots.icon\" class=\"menu__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span class=\"menu__text\"\n ><span>{{ item.label }}</span\n ><span v-if=\"item.description\" class=\"menu__description\">{{ item.description }}</span></span\n >\n <kbd v-if=\"item.shortcut\" class=\"menu__shortcut\" aria-hidden=\"true\">{{ item.shortcut }}</kbd>\n <ChevronIcon v-if=\"item.children?.length\" class=\"menu__arrow\" />\n</template>\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","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport {\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuPortal,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n} from 'reka-ui';\nimport MenuItemContent from './MenuItemContent.vue';\nimport { menuGroups, type MenuSelectionMode } from './overlay-model.js';\nimport type { DropdownMenuItem as Item } from './dashboard-types.js';\nconst props = defineProps<{\n items: Item[];\n selectedKeys: string[];\n selectionMode: MenuSelectionMode;\n closeOnSelect: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ action: [id: string]; selection: [id: string, checked: boolean] }>();\ndefineSlots<{ icon?: (props: { item: Item }) => unknown }>();\nconst groups = computed(() => menuGroups(props.items));\nfunction keepParentMenuFocus(event: { target: EventTarget | null; preventDefault: () => void }) {\n // Roving focus may briefly land on the parent menu during a direct pointer move into its submenu.\n // Actual item focus, outside presses, Left and Escape retain the provider's normal dismissal.\n if (event.target instanceof HTMLElement && event.target.getAttribute('role') === 'menu')\n event.preventDefault();\n}\nfunction action(event: Event, item: Item) {\n if (props.disabled || item.isDisabled) {\n event.preventDefault();\n return;\n }\n if (!props.closeOnSelect) event.preventDefault();\n emit('action', item.id);\n}\n</script>\n<template>\n <DropdownMenuRadioGroup\n :model-value=\"selectedKeys[0] ?? ''\"\n @update:model-value=\"\n (value) => {\n if (selectionMode === 'single' && typeof value === 'string') emit('selection', value, true);\n }\n \"\n >\n <template v-for=\"(group, index) in groups\" :key=\"group.key\">\n <DropdownMenuSeparator v-if=\"index > 0\" class=\"menu__separator\" />\n <DropdownMenuGroup :aria-label=\"group.label\">\n <DropdownMenuLabel v-if=\"group.label\" class=\"menu__heading\">{{\n group.label\n }}</DropdownMenuLabel>\n <template v-for=\"item in group.items\" :key=\"item.id\">\n <DropdownMenuSub v-if=\"item.children?.length\">\n <DropdownMenuSubTrigger\n class=\"menu__item\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :data-tone=\"item.tone ?? 'default'\"\n >\n <MenuItemContent :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal\n ><DropdownMenuSubContent\n class=\"menu__panel menu__list\"\n :aria-label=\"item.label\"\n :side-offset=\"4\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n @focus-outside=\"keepParentMenuFocus\"\n >\n <DropdownMenuBranch\n :items=\"item.children\"\n :selected-keys=\"selectedKeys\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect\"\n :disabled=\"disabled || item.isDisabled\"\n :dir=\"dir\"\n @action=\"(id) => emit('action', id)\"\n @selection=\"(id, checked) => emit('selection', id, checked)\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\"\n /></template>\n </DropdownMenuBranch> </DropdownMenuSubContent\n ></DropdownMenuPortal>\n </DropdownMenuSub>\n <DropdownMenuRadioItem\n v-else-if=\"selectionMode === 'single'\"\n :value=\"item.id\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuRadioItem>\n <DropdownMenuCheckboxItem\n v-else-if=\"selectionMode === 'multiple'\"\n :model-value=\"selectedKeys.includes(item.id)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @update:model-value=\"\n (checked) => {\n if (!disabled && !item.isDisabled) emit('selection', item.id, checked === true);\n }\n \"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuCheckboxItem>\n <DropdownMenuItem\n v-else\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuItem>\n </template>\n </DropdownMenuGroup>\n </template>\n </DropdownMenuRadioGroup>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport {\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuPortal,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n} from 'reka-ui';\nimport MenuItemContent from './MenuItemContent.vue';\nimport { menuGroups, type MenuSelectionMode } from './overlay-model.js';\nimport type { DropdownMenuItem as Item } from './dashboard-types.js';\nconst props = defineProps<{\n items: Item[];\n selectedKeys: string[];\n selectionMode: MenuSelectionMode;\n closeOnSelect: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ action: [id: string]; selection: [id: string, checked: boolean] }>();\ndefineSlots<{ icon?: (props: { item: Item }) => unknown }>();\nconst groups = computed(() => menuGroups(props.items));\nfunction keepParentMenuFocus(event: { target: EventTarget | null; preventDefault: () => void }) {\n // Roving focus may briefly land on the parent menu during a direct pointer move into its submenu.\n // Actual item focus, outside presses, Left and Escape retain the provider's normal dismissal.\n if (event.target instanceof HTMLElement && event.target.getAttribute('role') === 'menu')\n event.preventDefault();\n}\nfunction action(event: Event, item: Item) {\n if (props.disabled || item.isDisabled) {\n event.preventDefault();\n return;\n }\n if (!props.closeOnSelect) event.preventDefault();\n emit('action', item.id);\n}\n</script>\n<template>\n <DropdownMenuRadioGroup\n :model-value=\"selectedKeys[0] ?? ''\"\n @update:model-value=\"\n (value) => {\n if (selectionMode === 'single' && typeof value === 'string') emit('selection', value, true);\n }\n \"\n >\n <template v-for=\"(group, index) in groups\" :key=\"group.key\">\n <DropdownMenuSeparator v-if=\"index > 0\" class=\"menu__separator\" />\n <DropdownMenuGroup :aria-label=\"group.label\">\n <DropdownMenuLabel v-if=\"group.label\" class=\"menu__heading\">{{\n group.label\n }}</DropdownMenuLabel>\n <template v-for=\"item in group.items\" :key=\"item.id\">\n <DropdownMenuSub v-if=\"item.children?.length\">\n <DropdownMenuSubTrigger\n class=\"menu__item\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :data-tone=\"item.tone ?? 'default'\"\n >\n <MenuItemContent :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal\n ><DropdownMenuSubContent\n class=\"menu__panel menu__list\"\n :aria-label=\"item.label\"\n :side-offset=\"4\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n @focus-outside=\"keepParentMenuFocus\"\n >\n <DropdownMenuBranch\n :items=\"item.children\"\n :selected-keys=\"selectedKeys\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect\"\n :disabled=\"disabled || item.isDisabled\"\n :dir=\"dir\"\n @action=\"(id) => emit('action', id)\"\n @selection=\"(id, checked) => emit('selection', id, checked)\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\"\n /></template>\n </DropdownMenuBranch> </DropdownMenuSubContent\n ></DropdownMenuPortal>\n </DropdownMenuSub>\n <DropdownMenuRadioItem\n v-else-if=\"selectionMode === 'single'\"\n :value=\"item.id\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuRadioItem>\n <DropdownMenuCheckboxItem\n v-else-if=\"selectionMode === 'multiple'\"\n :model-value=\"selectedKeys.includes(item.id)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @update:model-value=\"\n (checked) => {\n if (!disabled && !item.isDisabled) emit('selection', item.id, checked === true);\n }\n \"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuCheckboxItem>\n <DropdownMenuItem\n v-else\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n class=\"menu__item\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuItem>\n </template>\n </DropdownMenuGroup>\n </template>\n </DropdownMenuRadioGroup>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport DropdownMenuBranch from './DropdownMenuBranch.vue';\nimport {\n menuSelection,\n menuLeaves,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n items: DropdownMenuItem[];\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n selectionMode: 'none',\n closeOnSelect: undefined,\n placement: 'bottom-start',\n triggerVariant: 'secondary',\n dir: undefined,\n selectedKeys: undefined,\n defaultSelectedKeys: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:open': [open: boolean];\n action: [id: string];\n 'update:selectedKeys': [keys: string[]];\n}>();\ndefineSlots<{ trigger?: () => unknown; icon?: (props: { item: DropdownMenuItem }) => unknown }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst local = ref(props.defaultSelectedKeys ?? []);\nconst selected = computed(() =>\n menuSelection(props.selectedKeys ?? local.value, props.items, props.selectionMode),\n);\nconst side = computed(() => props.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right');\nconst align = computed(() => props.placement.split('-')[1] as 'start' | 'end');\nfunction select(id: string, checked: boolean) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (!item || item.isDisabled || props.selectionMode === 'none') return;\n const next = menuSelection(\n props.selectionMode === 'single'\n ? [id]\n : checked\n ? [...selected.value, id]\n : selected.value.filter((key) => key !== id),\n props.items,\n props.selectionMode,\n );\n local.value = next;\n emit('update:selectedKeys', next);\n}\nfunction action(id: string) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (item && !item.isDisabled) emit('action', id);\n}\n</script>\n<template>\n <DropdownMenuRoot :open=\"visible\" :dir=\"dir\" @update:open=\"change\">\n <DropdownMenuTrigger\n :class=\"['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only']\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled || !items.length\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DropdownMenuTrigger\n >\n <DropdownMenuPortal\n ><DropdownMenuContent\n class=\"menu__panel menu__list\"\n :aria-label=\"triggerLabel\"\n :side=\"side\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >\n <DropdownMenuBranch\n :items=\"items\"\n :selected-keys=\"selected\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect ?? selectionMode !== 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @action=\"action\"\n @selection=\"select\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"><slot name=\"icon\" v-bind=\"slot\" /></template>\n </DropdownMenuBranch> </DropdownMenuContent\n ></DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport DropdownMenuBranch from './DropdownMenuBranch.vue';\nimport {\n menuSelection,\n menuLeaves,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n items: DropdownMenuItem[];\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n selectionMode: 'none',\n closeOnSelect: undefined,\n placement: 'bottom-start',\n triggerVariant: 'secondary',\n dir: undefined,\n selectedKeys: undefined,\n defaultSelectedKeys: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:open': [open: boolean];\n action: [id: string];\n 'update:selectedKeys': [keys: string[]];\n}>();\ndefineSlots<{ trigger?: () => unknown; icon?: (props: { item: DropdownMenuItem }) => unknown }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst local = ref(props.defaultSelectedKeys ?? []);\nconst selected = computed(() =>\n menuSelection(props.selectedKeys ?? local.value, props.items, props.selectionMode),\n);\nconst side = computed(() => props.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right');\nconst align = computed(() => props.placement.split('-')[1] as 'start' | 'end');\nfunction select(id: string, checked: boolean) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (!item || item.isDisabled || props.selectionMode === 'none') return;\n const next = menuSelection(\n props.selectionMode === 'single'\n ? [id]\n : checked\n ? [...selected.value, id]\n : selected.value.filter((key) => key !== id),\n props.items,\n props.selectionMode,\n );\n local.value = next;\n emit('update:selectedKeys', next);\n}\nfunction action(id: string) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (item && !item.isDisabled) emit('action', id);\n}\n</script>\n<template>\n <DropdownMenuRoot :open=\"visible\" :dir=\"dir\" @update:open=\"change\">\n <DropdownMenuTrigger\n :class=\"['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only']\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled || !items.length\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DropdownMenuTrigger\n >\n <DropdownMenuPortal\n ><DropdownMenuContent\n class=\"menu__panel menu__list\"\n :aria-label=\"triggerLabel\"\n :side=\"side\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >\n <DropdownMenuBranch\n :items=\"items\"\n :selected-keys=\"selected\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect ?? selectionMode !== 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @action=\"action\"\n @selection=\"select\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"><slot name=\"icon\" v-bind=\"slot\" /></template>\n </DropdownMenuBranch> </DropdownMenuContent\n ></DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport {\n PopoverRoot,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n useId,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n description: undefined,\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n titleId = `${generated}-title`,\n descriptionId = computed(() => (props.description ? `${generated}-description` : undefined));\n</script>\n<template>\n <PopoverRoot :open=\"visible\" @update:open=\"change\"\n ><PopoverTrigger class=\"button button--secondary\" :disabled=\"disabled\">{{\n triggerLabel\n }}</PopoverTrigger\n ><PopoverPortal\n ><PopoverContent as-child side=\"bottom\" align=\"start\" :side-offset=\"8\" :collision-padding=\"16\"\n ><div\n class=\"popover__panel popover__content\"\n :dir=\"dir\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n >\n <h2 :id=\"titleId\" class=\"overlay__title\">{{ title }}</h2>\n <p v-if=\"description\" :id=\"descriptionId\" class=\"overlay__description\">\n {{ description }}\n </p>\n <div class=\"overlay__body\"><slot /></div>\n <div class=\"overlay__footer\">\n <PopoverClose class=\"button button--secondary\">{{ closeLabel }}</PopoverClose>\n </div>\n </div></PopoverContent\n ></PopoverPortal\n ></PopoverRoot\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport {\n PopoverRoot,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n useId,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n description: undefined,\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n titleId = `${generated}-title`,\n descriptionId = computed(() => (props.description ? `${generated}-description` : undefined));\n</script>\n<template>\n <PopoverRoot :open=\"visible\" @update:open=\"change\"\n ><PopoverTrigger class=\"button button--secondary\" :disabled=\"disabled\">{{\n triggerLabel\n }}</PopoverTrigger\n ><PopoverPortal\n ><PopoverContent as-child side=\"bottom\" align=\"start\" :side-offset=\"8\" :collision-padding=\"16\"\n ><div\n class=\"popover__panel popover__content\"\n :dir=\"dir\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n >\n <h2 :id=\"titleId\" class=\"overlay__title\">{{ title }}</h2>\n <p v-if=\"description\" :id=\"descriptionId\" class=\"overlay__description\">\n {{ description }}\n </p>\n <div class=\"overlay__body\"><slot /></div>\n <div class=\"overlay__footer\">\n <PopoverClose class=\"button button--secondary\">{{ closeLabel }}</PopoverClose>\n </div>\n </div></PopoverContent\n ></PopoverPortal\n ></PopoverRoot\n >\n</template>\n","<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n} from 'reka-ui';\nimport type { ButtonVariant, ButtonSize } from './types.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n text: string;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n dir: undefined,\n triggerIconOnly: false,\n triggerVariant: 'secondary',\n triggerSize: 'md',\n },\n);\ndefineSlots<{ trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <TooltipProvider :delay-duration=\"300\" :skip-delay-duration=\"0\" :disable-hoverable-content=\"true\"\n ><TooltipRoot :open=\"visible\" @update:open=\"change\"\n ><TooltipTrigger\n :class=\"[\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ]\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></TooltipTrigger\n ><TooltipPortal\n ><TooltipContent\n class=\"tooltip__panel\"\n side=\"top\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >{{ text }}</TooltipContent\n ></TooltipPortal\n ></TooltipRoot\n ></TooltipProvider\n >\n</template>\n","<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n} from 'reka-ui';\nimport type { ButtonVariant, ButtonSize } from './types.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<{\n triggerLabel: string;\n text: string;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }>(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n dir: undefined,\n triggerIconOnly: false,\n triggerVariant: 'secondary',\n triggerSize: 'md',\n },\n);\ndefineSlots<{ trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <TooltipProvider :delay-duration=\"300\" :skip-delay-duration=\"0\" :disable-hoverable-content=\"true\"\n ><TooltipRoot :open=\"visible\" @update:open=\"change\"\n ><TooltipTrigger\n :class=\"[\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ]\"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></TooltipTrigger\n ><TooltipPortal\n ><TooltipContent\n class=\"tooltip__panel\"\n side=\"top\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >{{ text }}</TooltipContent\n ></TooltipPortal\n ></TooltipRoot\n ></TooltipProvider\n >\n</template>\n","<script setup lang=\"ts\">\nimport type { SpinnerSize, SpinnerColor } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{ size?: SpinnerSize; color?: SpinnerColor; label?: string; id?: string }>(),\n { size: 'md', color: 'current', label: undefined, id: undefined },\n);\n</script>\n<template>\n <span\n :id=\"id\"\n :class=\"['spinner', `spinner--${size}`]\"\n :data-color=\"color\"\n :role=\"label ? 'status' : undefined\"\n :aria-label=\"label || undefined\"\n :aria-hidden=\"!label || undefined\"\n ><svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle class=\"spinner__track\" cx=\"10\" cy=\"10\" r=\"8\" />\n <circle\n class=\"spinner__arc\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n stroke-dasharray=\"36 64\"\n /></svg\n ><span v-if=\"label\" class=\"spinner__label\">{{ label }}</span></span\n >\n</template>\n","<script setup lang=\"ts\">\nimport type { SpinnerSize, SpinnerColor } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<{ size?: SpinnerSize; color?: SpinnerColor; label?: string; id?: string }>(),\n { size: 'md', color: 'current', label: undefined, id: undefined },\n);\n</script>\n<template>\n <span\n :id=\"id\"\n :class=\"['spinner', `spinner--${size}`]\"\n :data-color=\"color\"\n :role=\"label ? 'status' : undefined\"\n :aria-label=\"label || undefined\"\n :aria-hidden=\"!label || undefined\"\n ><svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle class=\"spinner__track\" cx=\"10\" cy=\"10\" r=\"8\" />\n <circle\n class=\"spinner__arc\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n stroke-dasharray=\"36 64\"\n /></svg\n ><span v-if=\"label\" class=\"spinner__label\">{{ label }}</span></span\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, getCurrentInstance, watch } from 'vue';\nimport {\n ComboboxRoot,\n ComboboxAnchor,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPortal,\n ComboboxContent,\n ComboboxViewport,\n ComboboxItem,\n} from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, filterOptions, type SelectOption } from './selection-options.js';\nconst props = defineProps<{\n label: string;\n options: SelectOption[];\n modelValue?: string;\n defaultValue?: string;\n placeholder?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n clearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string | undefined] }>();\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref(props.defaultValue);\nconst draft = ref<string | null>(null);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst id = computed(\n () => selectionIds(controlled() ? props.modelValue : local.value, props.options, false)[0],\n);\nconst selected = computed(() => props.options.find((o) => o.id === id.value));\nwatch(\n () => selected.value?.id,\n () => {\n draft.value = null;\n },\n);\nconst text = computed(() => draft.value ?? selected.value?.label ?? '');\nconst filtered = computed(() =>\n draft.value === null ? props.options : filterOptions(props.options, draft.value),\n);\nconst invalid = computed(() => props.invalid || (tried.value && props.required && !id.value));\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && !id.value ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLInputElement>('.combobox__input')?.focus();\n}\nfunction change(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, false)[0];\n local.value = next;\n emit('update:modelValue', next);\n draft.value = null;\n}\nfunction search(value: string) {\n if (props.disabled) return;\n draft.value = value;\n if (value === '' && id.value) {\n local.value = undefined;\n emit('update:modelValue', undefined);\n }\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n draft.value = null;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div ref=\"wrapper\" class=\"select combobox\" :dir=\"dir\">\n <label class=\"select__label\" :for=\"controlId\"\n >{{ label\n }}<span v-if=\"required\" class=\"selection__required\" aria-hidden=\"true\"> *</span></label\n >\n <ComboboxRoot\n :model-value=\"id ?? null\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n ignore-filter\n :reset-search-term-on-blur=\"false\"\n :reset-search-term-on-select=\"false\"\n @update:model-value=\"change\"\n @update:open=\"\n (open) => {\n if (!open) draft = null;\n }\n \"\n >\n <ComboboxAnchor\n class=\"combobox__control\"\n :data-invalid=\"invalid || undefined\"\n :data-disabled=\"disabled || undefined\"\n >\n <span v-if=\"$slots.start\" class=\"selection__leading\" aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <ComboboxInput\n :id=\"controlId\"\n :model-value=\"text\"\n :display-value=\"() => selected?.label ?? ''\"\n class=\"combobox__input\"\n :placeholder=\"placeholder\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n @update:model-value=\"search\"\n />\n <button\n v-if=\"clearable\"\n type=\"button\"\n class=\"combobox__clear\"\n :data-empty=\"(!id && !text) || undefined\"\n :aria-hidden=\"(!id && !text) || undefined\"\n :tabindex=\"!id && !text ? -1 : undefined\"\n :disabled=\"disabled || (!id && !text)\"\n :aria-label=\"clearLabel ?? 'Hapus pilihan'\"\n @click=\"\n change(undefined);\n focus();\n \"\n >\n <CloseIcon class=\"selection__close-icon\" />\n </button>\n <ComboboxTrigger class=\"combobox__toggle\" :aria-label=\"toggleLabel ?? 'Buka pilihan'\"\n ><ChevronIcon class=\"select__icon\"\n /></ComboboxTrigger>\n </ComboboxAnchor>\n <ComboboxPortal\n ><ComboboxContent\n class=\"select__popover combobox__popover\"\n position=\"popper\"\n :side-offset=\"4\"\n ><ComboboxViewport class=\"select__list\">\n <ComboboxItem\n v-for=\"option in filtered\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n class=\"select__item\"\n ><span class=\"select__item-label\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span v-if=\"option.description\" class=\"selection__description\">{{\n option.description\n }}</span></slot\n ></span\n ><CheckIcon class=\"select__check\"\n /></ComboboxItem>\n <span v-if=\"!filtered.length\" class=\"selection__empty\" role=\"status\">{{\n emptyMessage ?? 'Tidak ada pilihan.'\n }}</span>\n </ComboboxViewport></ComboboxContent\n ></ComboboxPortal\n >\n </ComboboxRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"id ?? ''\" :disabled=\"disabled\" />\n <SelectionValidation\n :has-value=\"!!id\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, getCurrentInstance, watch } from 'vue';\nimport {\n ComboboxRoot,\n ComboboxAnchor,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPortal,\n ComboboxContent,\n ComboboxViewport,\n ComboboxItem,\n} from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, filterOptions, type SelectOption } from './selection-options.js';\nconst props = defineProps<{\n label: string;\n options: SelectOption[];\n modelValue?: string;\n defaultValue?: string;\n placeholder?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n clearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string | undefined] }>();\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref(props.defaultValue);\nconst draft = ref<string | null>(null);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst id = computed(\n () => selectionIds(controlled() ? props.modelValue : local.value, props.options, false)[0],\n);\nconst selected = computed(() => props.options.find((o) => o.id === id.value));\nwatch(\n () => selected.value?.id,\n () => {\n draft.value = null;\n },\n);\nconst text = computed(() => draft.value ?? selected.value?.label ?? '');\nconst filtered = computed(() =>\n draft.value === null ? props.options : filterOptions(props.options, draft.value),\n);\nconst invalid = computed(() => props.invalid || (tried.value && props.required && !id.value));\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && !id.value ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLInputElement>('.combobox__input')?.focus();\n}\nfunction change(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, false)[0];\n local.value = next;\n emit('update:modelValue', next);\n draft.value = null;\n}\nfunction search(value: string) {\n if (props.disabled) return;\n draft.value = value;\n if (value === '' && id.value) {\n local.value = undefined;\n emit('update:modelValue', undefined);\n }\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n draft.value = null;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div ref=\"wrapper\" class=\"select combobox\" :dir=\"dir\">\n <label class=\"select__label\" :for=\"controlId\"\n >{{ label\n }}<span v-if=\"required\" class=\"selection__required\" aria-hidden=\"true\"> *</span></label\n >\n <ComboboxRoot\n :model-value=\"id ?? null\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n ignore-filter\n :reset-search-term-on-blur=\"false\"\n :reset-search-term-on-select=\"false\"\n @update:model-value=\"change\"\n @update:open=\"\n (open) => {\n if (!open) draft = null;\n }\n \"\n >\n <ComboboxAnchor\n class=\"combobox__control\"\n :data-invalid=\"invalid || undefined\"\n :data-disabled=\"disabled || undefined\"\n >\n <span v-if=\"$slots.start\" class=\"selection__leading\" aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <ComboboxInput\n :id=\"controlId\"\n :model-value=\"text\"\n :display-value=\"() => selected?.label ?? ''\"\n class=\"combobox__input\"\n :placeholder=\"placeholder\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n @update:model-value=\"search\"\n />\n <button\n v-if=\"clearable\"\n type=\"button\"\n class=\"combobox__clear\"\n :data-empty=\"(!id && !text) || undefined\"\n :aria-hidden=\"(!id && !text) || undefined\"\n :tabindex=\"!id && !text ? -1 : undefined\"\n :disabled=\"disabled || (!id && !text)\"\n :aria-label=\"clearLabel ?? 'Hapus pilihan'\"\n @click=\"\n change(undefined);\n focus();\n \"\n >\n <CloseIcon class=\"selection__close-icon\" />\n </button>\n <ComboboxTrigger class=\"combobox__toggle\" :aria-label=\"toggleLabel ?? 'Buka pilihan'\"\n ><ChevronIcon class=\"select__icon\"\n /></ComboboxTrigger>\n </ComboboxAnchor>\n <ComboboxPortal\n ><ComboboxContent\n class=\"select__popover combobox__popover\"\n position=\"popper\"\n :side-offset=\"4\"\n ><ComboboxViewport class=\"select__list\">\n <ComboboxItem\n v-for=\"option in filtered\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n class=\"select__item\"\n ><span class=\"select__item-label\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span v-if=\"option.description\" class=\"selection__description\">{{\n option.description\n }}</span></slot\n ></span\n ><CheckIcon class=\"select__check\"\n /></ComboboxItem>\n <span v-if=\"!filtered.length\" class=\"selection__empty\" role=\"status\">{{\n emptyMessage ?? 'Tidak ada pilihan.'\n }}</span>\n </ComboboxViewport></ComboboxContent\n ></ComboboxPortal\n >\n </ComboboxRoot>\n <FieldFeedback\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"id ?? ''\" :disabled=\"disabled\" />\n <SelectionValidation\n :has-value=\"!!id\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\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","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, getCurrentInstance, ref } from 'vue';\nimport { ToggleGroupRoot, ToggleGroupItem as RekaItem } from 'reka-ui';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<{\n label: string;\n items: ToggleGroupItem[];\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n iconOnly?: boolean;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ icon?: (props: { item: ToggleGroupItem }) => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n toggleIds(controlled() ? props.modelValue : local.value, props.items, multiple.value),\n);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const requested = new Set(toggleIds(value, props.items, true));\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple.value && ids.value.includes(item.id)) requested.add(item.id);\n else if (!ids.value.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple.value);\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\n</script>\n<template>\n <ToggleGroupRoot\n class=\"toggle-group\"\n :aria-label=\"label\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :data-variant=\"variant ?? 'outline'\"\n :data-size=\"size ?? 'md'\"\n :data-icon-only=\"iconOnly || undefined\"\n @update:model-value=\"update\"\n >\n <RekaItem\n v-for=\"item in items\"\n :key=\"item.id\"\n :value=\"item.id\"\n type=\"button\"\n class=\"toggle-group__item\"\n :aria-label=\"item.label\"\n :disabled=\"disabled || item.isDisabled\"\n >\n <span v-if=\"$slots.icon\" class=\"toggle-group__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\" /></span\n ><span v-if=\"!iconOnly\">{{ item.label }}</span>\n </RekaItem>\n </ToggleGroupRoot>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { computed, getCurrentInstance, ref } from 'vue';\nimport { ToggleGroupRoot, ToggleGroupItem as RekaItem } from 'reka-ui';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<{\n label: string;\n items: ToggleGroupItem[];\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n iconOnly?: boolean;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ icon?: (props: { item: ToggleGroupItem }) => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n toggleIds(controlled() ? props.modelValue : local.value, props.items, multiple.value),\n);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const requested = new Set(toggleIds(value, props.items, true));\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple.value && ids.value.includes(item.id)) requested.add(item.id);\n else if (!ids.value.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple.value);\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\n</script>\n<template>\n <ToggleGroupRoot\n class=\"toggle-group\"\n :aria-label=\"label\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :data-variant=\"variant ?? 'outline'\"\n :data-size=\"size ?? 'md'\"\n :data-icon-only=\"iconOnly || undefined\"\n @update:model-value=\"update\"\n >\n <RekaItem\n v-for=\"item in items\"\n :key=\"item.id\"\n :value=\"item.id\"\n type=\"button\"\n class=\"toggle-group__item\"\n :aria-label=\"item.label\"\n :disabled=\"disabled || item.isDisabled\"\n >\n <span v-if=\"$slots.icon\" class=\"toggle-group__icon\" aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\" /></span\n ><span v-if=\"!iconOnly\">{{ item.label }}</span>\n </RekaItem>\n </ToggleGroupRoot>\n</template>\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","<script setup lang=\"ts\">\nimport { computed, shallowRef, watch } from 'vue';\nimport {\n RangeCalendarRoot,\n RangeCalendarPrev,\n RangeCalendarNext,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n type DateRange as CalendarRange,\n} from 'reka-ui';\nimport { type DateValue } from '@internationalized/date';\nimport ChevronIcon from './ChevronIcon.vue';\nimport {\n asDate,\n currentDate,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n type DateRangeLabels,\n} from './date-range-model.js';\nconst props = defineProps<{\n options: DateRangeOptions;\n draft: DateRange;\n labels: DateRangeLabels;\n id: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n}>();\nconst emit = defineEmits<{ draft: [value: DateRange]; apply: []; cancel: [] }>();\nconst locale = computed(() => props.options.locale ?? 'id-ID');\nconst nullable = computed(() => (props.draft.start || props.draft.end ? props.draft : null));\nconst errorCode = computed(\n () =>\n rangeError(nullable.value, props.options) ??\n (props.required && !nullable.value ? 'required' : null),\n);\nconst error = computed(() => (errorCode.value ? props.labels[errorCode.value] : undefined));\nfunction initialFocus() {\n const date =\n asDate(props.draft.start) ?? asDate(props.options.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.options.minDate),\n max = asDate(props.options.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n}\nconst focused = shallowRef<DateValue>(initialFocus());\nwatch(\n () => props.draft.start,\n () => {\n if (asDate(props.draft.start)) focused.value = asDate(props.draft.start)!;\n },\n);\nconst calendarValue = computed(() => ({\n start: asDate(props.draft.start),\n end: props.draft.start <= props.draft.end ? asDate(props.draft.end) : undefined,\n}));\nfunction select(value: CalendarRange) {\n if (!props.disabled && !props.readonly)\n emit('draft', { start: value.start?.toString() ?? '', end: value.end?.toString() ?? '' });\n}\nfunction edit(part: 'start' | 'end', event: Event) {\n emit('draft', { ...props.draft, [part]: (event.target as HTMLInputElement).value });\n}\nfunction jumpYear(event: Event) {\n const el = event.target as HTMLInputElement;\n const year = Number(el.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n focused.value = focused.value.set({ year });\n else el.value = String(focused.value.year);\n}\nconst monthLabel = (date: DateValue) =>\n new Intl.DateTimeFormat(locale.value, {\n month: 'long',\n year: 'numeric',\n calendar: 'gregory',\n timeZone: 'UTC',\n }).format(date.toDate('UTC'));\nconst unavailable = (date: DateValue) =>\n props.options.isDateUnavailable?.(date.toString()) ?? false;\n</script>\n<template>\n <div class=\"date-range__content\" :data-readonly=\"readonly || undefined\">\n <header class=\"date-range__intro\">\n <h2 :id=\"`${id}-title`\">{{ labels.title }}</h2>\n <p class=\"date-range__summary\" aria-live=\"polite\">\n {{ rangeText(nullable, locale) || labels.incomplete }}\n </p>\n </header>\n <div class=\"date-range__body\">\n <div\n v-if=\"options.presets?.length\"\n class=\"date-range__presets\"\n role=\"group\"\n :aria-label=\"labels.presets\"\n >\n <button\n v-for=\"preset in options.presets\"\n :key=\"preset.id\"\n type=\"button\"\n class=\"date-range__preset\"\n :disabled=\"disabled || readonly || !!rangeError(preset.value, options)\"\n :aria-pressed=\"draft.start === preset.value.start && draft.end === preset.value.end\"\n @click=\"emit('draft', { ...preset.value })\"\n >\n {{ preset.label }}\n </button>\n </div>\n <div class=\"date-range__main\">\n <div v-if=\"options.showMonthYearPicker\" class=\"date-range__jump\">\n <label\n ><span>{{ locale.startsWith('id') ? 'Bulan' : 'Month' }}</span\n ><select\n form=\"\"\n :aria-label=\"locale.startsWith('id') ? 'Bulan' : 'Month'\"\n :disabled=\"disabled\"\n :value=\"focused.month\"\n @change=\"\n focused = focused.set({ month: Number(($event.target as HTMLSelectElement).value) })\n \"\n >\n <option v-for=\"month in 12\" :key=\"month\" :value=\"month\">\n {{\n new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month, day: 1 }).toDate('UTC'))\n }}\n </option>\n </select></label\n ><label\n ><span>{{ locale.startsWith('id') ? 'Tahun' : 'Year' }}</span\n ><input\n type=\"number\"\n form=\"\"\n :disabled=\"disabled\"\n :value=\"focused.year\"\n :min=\"asDate(options.minDate)?.year ?? 1\"\n :max=\"asDate(options.maxDate)?.year ?? 9999\"\n @change=\"jumpYear\"\n /></label>\n </div>\n <div v-if=\"options.showInputs !== false\" class=\"date-range__inputs\">\n <label v-for=\"part in ['start', 'end'] as const\" :key=\"part\" class=\"date-range__field\"\n ><span>{{ labels[part] }}</span\n ><input\n type=\"date\"\n form=\"\"\n :value=\"draft[part]\"\n :min=\"options.minDate\"\n :max=\"options.maxDate\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"!!errorCode\"\n :aria-describedby=\"error ? `${id}-draft-error` : undefined\"\n @input=\"edit(part, $event)\"\n /></label>\n </div>\n <RangeCalendarRoot\n v-slot=\"{ grid, weekDays }\"\n v-model:placeholder=\"focused\"\n class=\"date-range__calendar\"\n :model-value=\"calendarValue\"\n :number-of-months=\"options.visibleMonths ?? 2\"\n :week-starts-on=\"options.weekStartsOn ?? 1\"\n weekday-format=\"short\"\n :calendar-label=\"labels.title\"\n :locale=\"`${locale.split('-u-')[0]}-u-ca-gregory`\"\n :dir=\"options.dir\"\n :min-value=\"asDate(options.minDate)\"\n :max-value=\"asDate(options.maxDate)\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :is-date-unavailable=\"unavailable\"\n @update:model-value=\"select\"\n >\n <div class=\"date-range__navigation\">\n <RangeCalendarPrev\n as=\"button\"\n type=\"button\"\n class=\"date-range__nav date-range__nav--previous\"\n :aria-label=\"labels.previousMonth\"\n ><ChevronIcon /></RangeCalendarPrev\n ><RangeCalendarNext\n as=\"button\"\n type=\"button\"\n class=\"date-range__nav date-range__nav--next\"\n :aria-label=\"labels.nextMonth\"\n ><ChevronIcon\n /></RangeCalendarNext>\n </div>\n <div class=\"date-range__months\">\n <div v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"date-range__month\">\n <h2 class=\"date-range__heading\">{{ monthLabel(month.value) }}</h2>\n <RangeCalendarGrid class=\"date-range__grid\"\n ><RangeCalendarGridHead\n ><RangeCalendarGridRow\n ><RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n class=\"date-range__weekday\"\n >{{ day }}</RangeCalendarHeadCell\n ></RangeCalendarGridRow\n ></RangeCalendarGridHead\n >\n <RangeCalendarGridBody\n ><RangeCalendarGridRow v-for=\"(week, index) in month.rows\" :key=\"index\"\n ><RangeCalendarCell v-for=\"date in week\" :key=\"date.toString()\" :date=\"date\"\n ><RangeCalendarCellTrigger\n class=\"date-range__day\"\n :day=\"date\"\n :month=\"\n month.value\n \" /></RangeCalendarCell></RangeCalendarGridRow></RangeCalendarGridBody\n ></RangeCalendarGrid>\n </div>\n </div>\n </RangeCalendarRoot>\n <div class=\"date-range__validation\" aria-live=\"polite\">\n <p v-if=\"error\" :id=\"`${id}-draft-error`\" role=\"alert\">{{ error }}</p>\n </div>\n </div>\n </div>\n <footer class=\"date-range__footer\">\n <button\n type=\"button\"\n class=\"button button--ghost button--sm\"\n :disabled=\"disabled || readonly\"\n @click=\"emit('draft', { start: '', end: '' })\"\n >\n {{ labels.clear }}\n </button>\n <div>\n <button\n type=\"button\"\n class=\"button button--secondary button--sm date-range__cancel\"\n @click=\"emit('cancel')\"\n >\n {{ labels.cancel }}</button\n ><button\n type=\"button\"\n class=\"button button--primary button--sm date-range__apply\"\n :disabled=\"disabled || readonly || !!errorCode\"\n @click=\"emit('apply')\"\n >\n {{ labels.apply }}\n </button>\n </div>\n </footer>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, shallowRef, watch } from 'vue';\nimport {\n RangeCalendarRoot,\n RangeCalendarPrev,\n RangeCalendarNext,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n type DateRange as CalendarRange,\n} from 'reka-ui';\nimport { type DateValue } from '@internationalized/date';\nimport ChevronIcon from './ChevronIcon.vue';\nimport {\n asDate,\n currentDate,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n type DateRangeLabels,\n} from './date-range-model.js';\nconst props = defineProps<{\n options: DateRangeOptions;\n draft: DateRange;\n labels: DateRangeLabels;\n id: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n}>();\nconst emit = defineEmits<{ draft: [value: DateRange]; apply: []; cancel: [] }>();\nconst locale = computed(() => props.options.locale ?? 'id-ID');\nconst nullable = computed(() => (props.draft.start || props.draft.end ? props.draft : null));\nconst errorCode = computed(\n () =>\n rangeError(nullable.value, props.options) ??\n (props.required && !nullable.value ? 'required' : null),\n);\nconst error = computed(() => (errorCode.value ? props.labels[errorCode.value] : undefined));\nfunction initialFocus() {\n const date =\n asDate(props.draft.start) ?? asDate(props.options.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.options.minDate),\n max = asDate(props.options.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n}\nconst focused = shallowRef<DateValue>(initialFocus());\nwatch(\n () => props.draft.start,\n () => {\n if (asDate(props.draft.start)) focused.value = asDate(props.draft.start)!;\n },\n);\nconst calendarValue = computed(() => ({\n start: asDate(props.draft.start),\n end: props.draft.start <= props.draft.end ? asDate(props.draft.end) : undefined,\n}));\nfunction select(value: CalendarRange) {\n if (!props.disabled && !props.readonly)\n emit('draft', { start: value.start?.toString() ?? '', end: value.end?.toString() ?? '' });\n}\nfunction edit(part: 'start' | 'end', event: Event) {\n emit('draft', { ...props.draft, [part]: (event.target as HTMLInputElement).value });\n}\nfunction jumpYear(event: Event) {\n const el = event.target as HTMLInputElement;\n const year = Number(el.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n focused.value = focused.value.set({ year });\n else el.value = String(focused.value.year);\n}\nconst monthLabel = (date: DateValue) =>\n new Intl.DateTimeFormat(locale.value, {\n month: 'long',\n year: 'numeric',\n calendar: 'gregory',\n timeZone: 'UTC',\n }).format(date.toDate('UTC'));\nconst unavailable = (date: DateValue) =>\n props.options.isDateUnavailable?.(date.toString()) ?? false;\n</script>\n<template>\n <div class=\"date-range__content\" :data-readonly=\"readonly || undefined\">\n <header class=\"date-range__intro\">\n <h2 :id=\"`${id}-title`\">{{ labels.title }}</h2>\n <p class=\"date-range__summary\" aria-live=\"polite\">\n {{ rangeText(nullable, locale) || labels.incomplete }}\n </p>\n </header>\n <div class=\"date-range__body\">\n <div\n v-if=\"options.presets?.length\"\n class=\"date-range__presets\"\n role=\"group\"\n :aria-label=\"labels.presets\"\n >\n <button\n v-for=\"preset in options.presets\"\n :key=\"preset.id\"\n type=\"button\"\n class=\"date-range__preset\"\n :disabled=\"disabled || readonly || !!rangeError(preset.value, options)\"\n :aria-pressed=\"draft.start === preset.value.start && draft.end === preset.value.end\"\n @click=\"emit('draft', { ...preset.value })\"\n >\n {{ preset.label }}\n </button>\n </div>\n <div class=\"date-range__main\">\n <div v-if=\"options.showMonthYearPicker\" class=\"date-range__jump\">\n <label\n ><span>{{ locale.startsWith('id') ? 'Bulan' : 'Month' }}</span\n ><select\n form=\"\"\n :aria-label=\"locale.startsWith('id') ? 'Bulan' : 'Month'\"\n :disabled=\"disabled\"\n :value=\"focused.month\"\n @change=\"\n focused = focused.set({ month: Number(($event.target as HTMLSelectElement).value) })\n \"\n >\n <option v-for=\"month in 12\" :key=\"month\" :value=\"month\">\n {{\n new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month, day: 1 }).toDate('UTC'))\n }}\n </option>\n </select></label\n ><label\n ><span>{{ locale.startsWith('id') ? 'Tahun' : 'Year' }}</span\n ><input\n type=\"number\"\n form=\"\"\n :disabled=\"disabled\"\n :value=\"focused.year\"\n :min=\"asDate(options.minDate)?.year ?? 1\"\n :max=\"asDate(options.maxDate)?.year ?? 9999\"\n @change=\"jumpYear\"\n /></label>\n </div>\n <div v-if=\"options.showInputs !== false\" class=\"date-range__inputs\">\n <label v-for=\"part in ['start', 'end'] as const\" :key=\"part\" class=\"date-range__field\"\n ><span>{{ labels[part] }}</span\n ><input\n type=\"date\"\n form=\"\"\n :value=\"draft[part]\"\n :min=\"options.minDate\"\n :max=\"options.maxDate\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"!!errorCode\"\n :aria-describedby=\"error ? `${id}-draft-error` : undefined\"\n @input=\"edit(part, $event)\"\n /></label>\n </div>\n <RangeCalendarRoot\n v-slot=\"{ grid, weekDays }\"\n v-model:placeholder=\"focused\"\n class=\"date-range__calendar\"\n :model-value=\"calendarValue\"\n :number-of-months=\"options.visibleMonths ?? 2\"\n :week-starts-on=\"options.weekStartsOn ?? 1\"\n weekday-format=\"short\"\n :calendar-label=\"labels.title\"\n :locale=\"`${locale.split('-u-')[0]}-u-ca-gregory`\"\n :dir=\"options.dir\"\n :min-value=\"asDate(options.minDate)\"\n :max-value=\"asDate(options.maxDate)\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :is-date-unavailable=\"unavailable\"\n @update:model-value=\"select\"\n >\n <div class=\"date-range__navigation\">\n <RangeCalendarPrev\n as=\"button\"\n type=\"button\"\n class=\"date-range__nav date-range__nav--previous\"\n :aria-label=\"labels.previousMonth\"\n ><ChevronIcon /></RangeCalendarPrev\n ><RangeCalendarNext\n as=\"button\"\n type=\"button\"\n class=\"date-range__nav date-range__nav--next\"\n :aria-label=\"labels.nextMonth\"\n ><ChevronIcon\n /></RangeCalendarNext>\n </div>\n <div class=\"date-range__months\">\n <div v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"date-range__month\">\n <h2 class=\"date-range__heading\">{{ monthLabel(month.value) }}</h2>\n <RangeCalendarGrid class=\"date-range__grid\"\n ><RangeCalendarGridHead\n ><RangeCalendarGridRow\n ><RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n class=\"date-range__weekday\"\n >{{ day }}</RangeCalendarHeadCell\n ></RangeCalendarGridRow\n ></RangeCalendarGridHead\n >\n <RangeCalendarGridBody\n ><RangeCalendarGridRow v-for=\"(week, index) in month.rows\" :key=\"index\"\n ><RangeCalendarCell v-for=\"date in week\" :key=\"date.toString()\" :date=\"date\"\n ><RangeCalendarCellTrigger\n class=\"date-range__day\"\n :day=\"date\"\n :month=\"\n month.value\n \" /></RangeCalendarCell></RangeCalendarGridRow></RangeCalendarGridBody\n ></RangeCalendarGrid>\n </div>\n </div>\n </RangeCalendarRoot>\n <div class=\"date-range__validation\" aria-live=\"polite\">\n <p v-if=\"error\" :id=\"`${id}-draft-error`\" role=\"alert\">{{ error }}</p>\n </div>\n </div>\n </div>\n <footer class=\"date-range__footer\">\n <button\n type=\"button\"\n class=\"button button--ghost button--sm\"\n :disabled=\"disabled || readonly\"\n @click=\"emit('draft', { start: '', end: '' })\"\n >\n {{ labels.clear }}\n </button>\n <div>\n <button\n type=\"button\"\n class=\"button button--secondary button--sm date-range__cancel\"\n @click=\"emit('cancel')\"\n >\n {{ labels.cancel }}</button\n ><button\n type=\"button\"\n class=\"button button--primary button--sm date-range__apply\"\n :disabled=\"disabled || readonly || !!errorCode\"\n @click=\"emit('apply')\"\n >\n {{ labels.apply }}\n </button>\n </div>\n </footer>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent, useId } from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport DateRangePanel from './DateRangePanel.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport {\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends DateRangeOptions {\n modelValue?: DateRange | null;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n}\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: undefined,\n defaultValue: null,\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n locale: 'id-ID',\n dir: undefined,\n visibleMonths: 2,\n weekStartsOn: 1,\n display: 'popover',\n showInputs: true,\n showMonthYearPicker: false,\n triggerDisplay: 'text',\n presets: () => [],\n labels: undefined,\n formatRange: undefined,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n referenceDate: undefined,\n open: undefined,\n defaultOpen: false,\n minDate: undefined,\n maxDate: undefined,\n minDays: undefined,\n maxDays: undefined,\n isDateUnavailable: undefined,\n});\nconst emit = defineEmits<{\n 'update:modelValue': [value: DateRange | null];\n 'update:open': [open: boolean];\n apply: [value: DateRange | null];\n}>();\nconst local = ref<DateRange | null>(props.defaultValue);\nconst committed = computed(() => (props.modelValue !== undefined ? props.modelValue : local.value));\nconst draft = ref<DateRange>({ ...(committed.value ?? { start: '', end: '' }) });\nwatch(\n () => [committed.value?.start, committed.value?.end],\n () => {\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n },\n);\nconst labels = computed(() => ({ ...dateRangeLabels(props.locale), ...props.labels }));\nconst id = useId(),\n root = ref<HTMLDivElement>(),\n formError = ref(false);\nconst disclosure = useDisclosure(props, (next) => emit('update:open', next));\nconst visible = computed(() => disclosure.visible.value && !props.disabled);\nfunction changeOpen(next: boolean) {\n if (next && props.disabled) return;\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n disclosure.change(next);\n}\nconst committedError = computed(() => rangeError(committed.value, props));\nconst outerError = computed(() => props.invalid || !!committedError.value || formError.value);\nconst text = computed(() => {\n const value = committed.value;\n if (!value) return labels.value.placeholder;\n const preset = props.presets.find(\n (p) => p.value.start === value.start && p.value.end === value.end,\n );\n return (\n props.formatRange?.(value, props.locale) ?? preset?.label ?? rangeText(value, props.locale)\n );\n});\nfunction apply() {\n const next = draft.value.start || draft.value.end ? { ...draft.value } : null;\n if (props.disabled || props.readonly || rangeError(next, props) || (props.required && !next))\n return;\n local.value = next;\n formError.value = false;\n emit('update:modelValue', next);\n emit('apply', next);\n disclosure.change(false);\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n if (props.modelValue === undefined) local.value = props.defaultValue;\n formError.value = false;\n changeOpen(false);\n }\n}\nconst describedBy = computed(() =>\n outerError.value ? `${id}-error` : props.description ? `${id}-description` : undefined,\n);\n</script>\n<template>\n <div\n ref=\"root\"\n :class=\"[\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ]\"\n :dir=\"dir\"\n :data-disabled=\"disabled || undefined\"\n >\n <span :id=\"`${id}-label`\" class=\"date-range__label\"\n >{{ label }}<span v-if=\"required\" aria-hidden=\"true\"> *</span></span\n >\n <section\n v-if=\"display === 'inline'\"\n class=\"date-range__panel date-range__inline\"\n :aria-labelledby=\"`${id}-title`\"\n :dir=\"dir\"\n >\n <DateRangePanel\n :id=\"id\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n />\n </section>\n <PopoverRoot v-else :open=\"visible\" @update:open=\"changeOpen\"\n ><PopoverTrigger\n class=\"date-range__trigger\"\n :disabled=\"disabled\"\n :aria-labelledby=\"`${id}-label ${id}-value`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"outerError\"\n >\n <svg\n class=\"date-range__icon\"\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" /></svg\n ><span\n :id=\"`${id}-value`\"\n class=\"date-range__value\"\n :data-placeholder=\"!committed || undefined\"\n >{{ text }}</span\n ><ChevronIcon class=\"date-range__chevron\" /> </PopoverTrigger\n ><PopoverPortal\n ><PopoverContent\n as-child\n side=\"bottom\"\n align=\"start\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n ><div\n class=\"date-range__panel date-range__dialog\"\n :dir=\"dir\"\n :aria-labelledby=\"`${id}-title`\"\n >\n <DateRangePanel\n :id=\"id\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n /></div></PopoverContent></PopoverPortal\n ></PopoverRoot>\n <span v-if=\"description\" :id=\"`${id}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <span v-if=\"outerError\" :id=\"`${id}-error`\" class=\"input__error\" role=\"alert\">{{\n errorMessage ?? (committedError ? labels[committedError] : labels.required)\n }}</span>\n <template v-if=\"name\"\n ><input\n type=\"hidden\"\n :name=\"`${name}.start`\"\n :value=\"committed?.start ?? ''\"\n :disabled=\"disabled\" /><input\n type=\"hidden\"\n :name=\"`${name}.end`\"\n :value=\"committed?.end ?? ''\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"!!committed && !committedError\"\n :required=\"required || !!committedError\"\n :disabled=\"disabled\"\n @invalid=\"\n formError = true;\n root?.querySelector<HTMLButtonElement>('.date-range__trigger')?.focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent, useId } from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport DateRangePanel from './DateRangePanel.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport {\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends DateRangeOptions {\n modelValue?: DateRange | null;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n}\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: undefined,\n defaultValue: null,\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n locale: 'id-ID',\n dir: undefined,\n visibleMonths: 2,\n weekStartsOn: 1,\n display: 'popover',\n showInputs: true,\n showMonthYearPicker: false,\n triggerDisplay: 'text',\n presets: () => [],\n labels: undefined,\n formatRange: undefined,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n referenceDate: undefined,\n open: undefined,\n defaultOpen: false,\n minDate: undefined,\n maxDate: undefined,\n minDays: undefined,\n maxDays: undefined,\n isDateUnavailable: undefined,\n});\nconst emit = defineEmits<{\n 'update:modelValue': [value: DateRange | null];\n 'update:open': [open: boolean];\n apply: [value: DateRange | null];\n}>();\nconst local = ref<DateRange | null>(props.defaultValue);\nconst committed = computed(() => (props.modelValue !== undefined ? props.modelValue : local.value));\nconst draft = ref<DateRange>({ ...(committed.value ?? { start: '', end: '' }) });\nwatch(\n () => [committed.value?.start, committed.value?.end],\n () => {\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n },\n);\nconst labels = computed(() => ({ ...dateRangeLabels(props.locale), ...props.labels }));\nconst id = useId(),\n root = ref<HTMLDivElement>(),\n formError = ref(false);\nconst disclosure = useDisclosure(props, (next) => emit('update:open', next));\nconst visible = computed(() => disclosure.visible.value && !props.disabled);\nfunction changeOpen(next: boolean) {\n if (next && props.disabled) return;\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n disclosure.change(next);\n}\nconst committedError = computed(() => rangeError(committed.value, props));\nconst outerError = computed(() => props.invalid || !!committedError.value || formError.value);\nconst text = computed(() => {\n const value = committed.value;\n if (!value) return labels.value.placeholder;\n const preset = props.presets.find(\n (p) => p.value.start === value.start && p.value.end === value.end,\n );\n return (\n props.formatRange?.(value, props.locale) ?? preset?.label ?? rangeText(value, props.locale)\n );\n});\nfunction apply() {\n const next = draft.value.start || draft.value.end ? { ...draft.value } : null;\n if (props.disabled || props.readonly || rangeError(next, props) || (props.required && !next))\n return;\n local.value = next;\n formError.value = false;\n emit('update:modelValue', next);\n emit('apply', next);\n disclosure.change(false);\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n if (props.modelValue === undefined) local.value = props.defaultValue;\n formError.value = false;\n changeOpen(false);\n }\n}\nconst describedBy = computed(() =>\n outerError.value ? `${id}-error` : props.description ? `${id}-description` : undefined,\n);\n</script>\n<template>\n <div\n ref=\"root\"\n :class=\"[\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ]\"\n :dir=\"dir\"\n :data-disabled=\"disabled || undefined\"\n >\n <span :id=\"`${id}-label`\" class=\"date-range__label\"\n >{{ label }}<span v-if=\"required\" aria-hidden=\"true\"> *</span></span\n >\n <section\n v-if=\"display === 'inline'\"\n class=\"date-range__panel date-range__inline\"\n :aria-labelledby=\"`${id}-title`\"\n :dir=\"dir\"\n >\n <DateRangePanel\n :id=\"id\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n />\n </section>\n <PopoverRoot v-else :open=\"visible\" @update:open=\"changeOpen\"\n ><PopoverTrigger\n class=\"date-range__trigger\"\n :disabled=\"disabled\"\n :aria-labelledby=\"`${id}-label ${id}-value`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"outerError\"\n >\n <svg\n class=\"date-range__icon\"\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" /></svg\n ><span\n :id=\"`${id}-value`\"\n class=\"date-range__value\"\n :data-placeholder=\"!committed || undefined\"\n >{{ text }}</span\n ><ChevronIcon class=\"date-range__chevron\" /> </PopoverTrigger\n ><PopoverPortal\n ><PopoverContent\n as-child\n side=\"bottom\"\n align=\"start\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n ><div\n class=\"date-range__panel date-range__dialog\"\n :dir=\"dir\"\n :aria-labelledby=\"`${id}-title`\"\n >\n <DateRangePanel\n :id=\"id\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n /></div></PopoverContent></PopoverPortal\n ></PopoverRoot>\n <span v-if=\"description\" :id=\"`${id}-description`\" class=\"input__description\">{{\n description\n }}</span>\n <span v-if=\"outerError\" :id=\"`${id}-error`\" class=\"input__error\" role=\"alert\">{{\n errorMessage ?? (committedError ? labels[committedError] : labels.required)\n }}</span>\n <template v-if=\"name\"\n ><input\n type=\"hidden\"\n :name=\"`${name}.start`\"\n :value=\"committed?.start ?? ''\"\n :disabled=\"disabled\" /><input\n type=\"hidden\"\n :name=\"`${name}.end`\"\n :value=\"committed?.end ?? ''\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"!!committed && !committedError\"\n :required=\"required || !!committedError\"\n :disabled=\"disabled\"\n @invalid=\"\n formError = true;\n root?.querySelector<HTMLButtonElement>('.date-range__trigger')?.focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_Fragment","_createVNode","_unref","ToastRoot","_withCtx","_createElementVNode","_mergeProps","_renderSlot","_normalizeClass","ToastTitle","_createTextVNode","_toDisplayString","_createBlock","ToastDescription","_createCommentVNode","RekaToastAction","_sfc_main","_sfc_main","_hoisted_1","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_sfc_main","_hoisted_1","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_openBlock","_createBlock","_unref","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createTextVNode","_toDisplayString","_sfc_main","$attrs","_openBlock","_createBlock","_unref","_mergeProps","_withCtx","_renderSlot","_createVNode","CheckIcon","_createElementVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_openBlock","_createBlock","_unref","_withCtx","_renderSlot","_createVNode","CloseIcon","_sfc_main","_openBlock","_createBlock","_unref","_withCtx","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_unref","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_unref","_renderSlot","_sfc_main","$attrs","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_toDisplayString","_createCommentVNode","_renderSlot","_sfc_main","$attrs","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_unref","_sfc_main","_openBlock","_createBlock","InputControl","_withCtx","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_renderSlot","_sfc_main","$attrs","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","_unref","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","RekaSelectRoot","_withCtx","_renderSlot","_sfc_main","$attrs","_openBlock","_createBlock","_unref","RekaSelectTrigger","_mergeProps","_withCtx","_renderSlot","_sfc_main","_hoisted_1","_hoisted_2","_unref","_openBlock","_createElementBlock","_withModifiers","_renderSlot","_createVNode","CloseIcon","_sfc_main","$attrs","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_mergeProps","_renderSlot","_sfc_main","_openBlock","_createBlock","_unref","_withCtx","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_unref","_renderSlot","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_unref","_renderSlot","_createTextVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_unref","_renderSlot","_sfc_main","ChevronIcon","CheckIcon","ToastCompact","$props","_hoisted_1","_openBlock","_createElementBlock","_normalizeClass","_unref","_renderSlot","_sfc_main","Button","$attrs","$props","_unref","_openBlock","_createBlock","ToggleGroupItem","_mergeProps","_withCtx","_renderSlot","_sfc_main","$props","_hoisted_1","_openBlock","_createBlock","_unref","ToggleGroupRoot","_normalizeClass","_withCtx","_createElementVNode","_renderSlot","_sfc_main","$props","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_normalizeClass","_unref","_toDisplayString","_createCommentVNode","_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_withModifiers","_sfc_main","useId","$props","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","_withCtx","_renderSlot","_Fragment","ChevronIcon","CloseIcon","_renderList","_createBlock","SelectItem","SelectItemText","CheckIcon","FieldFeedback","SelectionValidation","_sfc_main","Select","$attrs","$props","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_useModel","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createVNode","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_renderSlot","_createCommentVNode","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_useModel","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createVNode","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_createCommentVNode","_sfc_main","$attrs","$props","_openBlock","_createBlock","_unref","RekaLabel","_mergeProps","_withCtx","_renderSlot","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","CheckboxRoot","_withCtx","CheckIcon","_createTextVNode","_toDisplayString","_createCommentVNode","FieldFeedback","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_useModel","_openBlock","_createBlock","_unref","RadioGroupRoot","_mergeProps","_withCtx","_createElementVNode","_normalizeClass","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createVNode","RadioGroupItem","_createTextVNode","FieldFeedback","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createVNode","SwitchRoot","_withCtx","_createTextVNode","_toDisplayString","FieldFeedback","_sfc_main","$attrs","$props","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_createVNode","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_renderSlot","FieldFeedback","_sfc_main","$attrs","$props","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_renderSlot","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_createVNode","ListboxRoot","_withCtx","ListboxContent","_Fragment","_renderList","_createBlock","ListboxItem","CheckIcon","_createCommentVNode","FieldFeedback","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","_unref","_createVNode","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","NumberFieldRoot","_createElementVNode","NumberFieldInput","FieldFeedback","_createCommentVNode","_sfc_main","$props","$slots","_openBlock","_createElementBlock","_normalizeClass","_unref","_renderSlot","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_createElementVNode","_sfc_main","$props","_hoisted_1","_openBlock","_createElementBlock","_normalizeClass","_unref","_renderSlot","_sfc_main","$attrs","$props","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_sfc_main","$attrs","$props","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_sfc_main","$props","$slots","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","TabsList","_withCtx","_Fragment","_renderList","_createBlock","_createCommentVNode","_renderSlot","_toDisplayString","_sfc_main","$attrs","$props","$slots","_openBlock","_createBlock","_unref","TabsRoot","_mergeProps","_withCtx","_createElementBlock","_normalizeClass","_createElementVNode","TabsListView","_createSlots","_renderSlot","_createCommentVNode","_Fragment","_renderList","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_Fragment","_renderList","_sfc_main","$props","$attrs","_hoisted_1","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_mergeProps","_toDisplayString","_renderSlot","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_openBlock","_createElementBlock","_mergeProps","_unref","_createVNode","Table","_withCtx","_createElementVNode","_normalizeClass","_Fragment","_renderList","_createTextVNode","_toDisplayString","_renderSlot","_createCommentVNode","_sfc_main","$attrs","$props","$slots","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_createCommentVNode","_renderSlot","_sfc_main","$attrs","$props","$slots","_hoisted_1","_openBlock","_createBlock","_unref","RekaToastProvider","_withCtx","_renderSlot","_createElementVNode","_mergeProps","_createVNode","ToastViewport","_normalizeClass","_createElementBlock","_Fragment","_renderList","Toast","_createSlots","_sfc_main","$attrs","$props","$slots","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","_unref","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_renderSlot","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_Fragment","_renderList","_normalizeClass","_createCommentVNode","_toDisplayString","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_Fragment","_renderList","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_createVNode","Table","_withCtx","_createBlock","Empty","_sfc_main","$props","$attrs","$slots","_hoisted_1","_openBlock","_createBlock","_unref","DialogRoot","_withCtx","_createVNode","DialogTrigger","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","DialogPortal","DialogContent","_mergeProps","_createElementVNode","DialogTitle","DialogDescription","_createCommentVNode","CloseIcon","_createElementBlock","_sfc_main","$props","$slots","_openBlock","_createElementBlock","_Fragment","_createBlock","CheckIcon","_normalizeClass","_unref","_createCommentVNode","_renderSlot","_createElementVNode","_toDisplayString","ChevronIcon","_sfc_main","$props","$slots","_resolveComponent","_openBlock","_createBlock","_unref","DropdownMenuRadioGroup","_withCtx","_createElementBlock","_Fragment","_renderList","DropdownMenuSeparator","_normalizeClass","_createCommentVNode","_createVNode","_createTextVNode","_toDisplayString","DropdownMenuSub","DropdownMenuSubTrigger","MenuItemContent","_createSlots","_renderSlot","_mergeProps","DropdownMenuPortal","DropdownMenuSubContent","DropdownMenuRadioItem","DropdownMenuCheckboxItem","DropdownMenuItem","_sfc_main","$props","$attrs","$slots","_openBlock","_createBlock","_unref","DropdownMenuRoot","_withCtx","_createVNode","DropdownMenuTrigger","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","DropdownMenuPortal","DropdownMenuContent","_mergeProps","DropdownMenuBranch","_createSlots","_normalizeProps","_guardReactiveProps","_sfc_main","$props","$attrs","_hoisted_1","_hoisted_2","useId","_openBlock","_createBlock","_unref","PopoverRoot","_withCtx","_createVNode","PopoverTrigger","_normalizeClass","_createTextVNode","_toDisplayString","PopoverPortal","PopoverContent","_createElementVNode","_mergeProps","_createElementBlock","_createCommentVNode","_renderSlot","_sfc_main","$props","$attrs","_openBlock","_createBlock","_unref","TooltipProvider","_withCtx","_createVNode","TooltipRoot","TooltipTrigger","_normalizeClass","_renderSlot","_createTextVNode","_toDisplayString","TooltipPortal","TooltipContent","_mergeProps","_sfc_main","$attrs","$props","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_toDisplayString","_createCommentVNode","_sfc_main","$props","$slots","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","ComboboxRoot","_withCtx","ComboboxAnchor","_renderSlot","ComboboxInput","CloseIcon","ComboboxTrigger","ChevronIcon","ComboboxPortal","ComboboxContent","_Fragment","_renderList","_createBlock","ComboboxItem","CheckIcon","FieldFeedback","SelectionValidation","_sfc_main","$props","$slots","_hoisted_1","_openBlock","_createBlock","_unref","ToggleGroupRoot","_normalizeClass","_withCtx","_createElementBlock","_Fragment","_renderList","RekaItem","_renderSlot","_createCommentVNode","_toDisplayString","_sfc_main","$props","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_toDisplayString","_Fragment","_renderList","_createCommentVNode","_createVNode","_withCtx","ChevronIcon","_createBlock","_createTextVNode","_sfc_main","$attrs","$props","useId","_openBlock","_createElementBlock","_mergeProps","_unref","_createElementVNode","_normalizeClass","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","DateRangePanel","_createBlock","PopoverRoot","_withCtx","PopoverTrigger","ChevronIcon","PopoverPortal","PopoverContent","_Fragment","SelectionValidation","_sfc_main","$attrs","_unref","_openBlock","_createBlock","_mergeProps","_withCtx","_renderSlot","ListboxRoot","_createVNode","ListboxContent","_sfc_main","$attrs","_unref","_openBlock","_createBlock","SelectItem","_mergeProps","_withCtx","_createElementBlock","_Fragment","_createVNode","SelectItemText","_createTextVNode","_toDisplayString","_renderSlot","ListboxItem","_sfc_main","_unref","_openBlock","_createBlock","SelectItemIndicator","_withCtx","_renderSlot","_createVNode","CheckIcon","ListboxItemIndicator","_sfc_main","_unref","_openBlock","_createBlock","_withCtx","_renderSlot","_sfc_main","SelectCompact","Parts.SelectRoot","Parts.SelectTrigger","Parts.SelectValue","Parts.SelectIndicator","Parts.SelectControl","Parts.SelectClearButton","Parts.SelectPopover","Parts.SelectListbox","Parts.SelectItem","Parts.SelectItemText","Parts.SelectItemIndicator","Parts.SelectSection","Parts.SelectSectionLabel","InputCompact","Parts.InputRoot","Parts.InputGroup","Parts.InputControl","Parts.InputLabel","Parts.InputPrefix","Parts.InputSuffix","TextareaCompact","Parts.TextareaControl","CheckboxCompact","Parts.CheckboxRoot","Parts.CheckboxContent","Parts.CheckboxIndicator","RadioGroupCompact","Parts.RadioGroupRoot","Parts.RadioGroupItem","Parts.RadioGroupIndicator","Parts.RadioGroupContent","SwitchCompact","Parts.SwitchRoot","Parts.SwitchContent","Parts.SwitchThumb","Parts.SwitchIcon","FieldCompact","Parts.Description","Parts.FieldError","FormCompact","ListboxCompact","Parts.ListboxRoot","Parts.ListboxContent","Parts.ListboxItem","Parts.ListboxItemIndicator","Parts.ListboxSection","Parts.ListboxSectionLabel","NumberFieldCompact","Parts.NumberFieldRoot","Parts.NumberFieldGroup","Parts.NumberFieldInput","Parts.NumberFieldIncrementButton","Parts.NumberFieldDecrementButton","CardCompact","Parts.CardRoot","Parts.CardHeader","Parts.CardHeading","Parts.CardTitle","Parts.CardDescription","Parts.CardContent","Parts.CardFooter","Parts.CardActions","BadgeCompact","Parts.BadgeLabel","Parts.BadgeAnchor","TabsCompact","Parts.TabsRoot","Parts.TabsList","Parts.TabsTab","Parts.TabsPanel","Parts.TabsIndicator","Parts.TabsListContainer","Parts.TabsSeparator","PaginationCompact","Parts.PaginationRoot","Parts.PaginationList","Parts.PaginationItem","Parts.PaginationPrevious","Parts.PaginationNext","Parts.PaginationFirst","Parts.PaginationLast","Parts.PaginationEllipsis","Parts.PaginationContent","Parts.PaginationSummary","TableCompact","Parts.TableRoot","Parts.TableScrollContainer","Parts.TableCaption","Parts.TableHeader","Parts.TableBody","Parts.TableFooter","Parts.TableRow","Parts.TableColumn","Parts.TableCell","DataTableCompact","Parts.DataTableRoot","Parts.DataTableSortButton","Parts.DataTableStatus","Parts.DataTableError","AlertCompact","Parts.AlertRoot","Parts.AlertTitle","Parts.AlertDescription","Parts.AlertContent","Parts.AlertIndicator","Parts.AlertActions","ToastCompact","ToastProvider","Parts.ToastRoot","Parts.ToastTitle","Parts.ToastDescription","Parts.ToastCloseButton","Parts.ToastActionButton","Parts.ToastViewport","Parts.ToastContent","Parts.ToastIndicator","Parts.ToastActions","Parts.ToastProgress","EmptyCompact","Parts.EmptyRoot","Parts.EmptyTitle","Parts.EmptyDescription","Parts.EmptyActions","BreadcrumbCompact","Parts.BreadcrumbRoot","Parts.BreadcrumbList","Parts.BreadcrumbItem","Parts.BreadcrumbLink","Parts.BreadcrumbSeparator","Parts.BreadcrumbCurrent","SidebarCompact","Parts.SidebarRoot","Parts.SidebarToggle","Parts.SidebarNavigation","Parts.SidebarTitle","Parts.SidebarList","Parts.SidebarHeader","Parts.SidebarContent","Parts.SidebarItem","Parts.SidebarFooter","ChartCompact","Parts.ChartRoot","Parts.ChartTitle","Parts.ChartDescription","DialogCompact","Parts.DialogRoot","Parts.DialogTrigger","Parts.DialogPortal","Parts.DialogBackdrop","Parts.DialogContent","Parts.DialogTitle","Parts.DialogDescription","Parts.DialogCloseButton","Parts.DialogHeader","Parts.DialogBody","Parts.DialogFooter","DropdownMenuCompact","Parts.DropdownMenuRoot","Parts.DropdownMenuTrigger","Parts.DropdownMenuPortal","Parts.DropdownMenuContent","Parts.DropdownMenuItem","Parts.DropdownMenuItemIndicator","Parts.DropdownMenuSection","Parts.DropdownMenuSectionLabel","Parts.DropdownMenuSeparator","Parts.DropdownMenuCheckboxItem","Parts.DropdownMenuRadioGroup","Parts.DropdownMenuRadioItem","Parts.DropdownMenuSub","Parts.DropdownMenuSubTrigger","Parts.DropdownMenuSubContent","PopoverCompact","Parts.PopoverRoot","Parts.PopoverTrigger","Parts.PopoverPortal","Parts.PopoverContent","Parts.PopoverArrow","Parts.PopoverCloseButton","Parts.PopoverHeading","Parts.PopoverBody","Parts.PopoverFooter","TooltipCompact","Parts.TooltipRoot","Parts.TooltipTrigger","Parts.TooltipPortal","Parts.TooltipProvider","Parts.TooltipContent","Parts.TooltipArrow","ComboboxCompact","Parts.ComboboxRoot","Parts.ComboboxInput","Parts.ComboboxTrigger","Parts.ComboboxContent","Parts.ComboboxItem","Parts.ComboboxItemIndicator","Parts.ComboboxSection","Parts.ComboboxSectionLabel","Parts.ComboboxAnchor","Parts.ComboboxClearButton","Parts.ComboboxPortal","ToggleGroupCompact","Parts.ToggleGroupRoot","Parts.ToggleGroupItem","DateRangePickerCompact","Parts.DateRangePickerRoot","Parts.DateRangePickerAnchor","Parts.DateRangePickerTrigger","Parts.DateRangePickerContent","Parts.DateRangePickerField","Parts.DateRangePickerInput","Parts.DateRangePickerCalendar","Parts.DateRangePickerHeader","Parts.DateRangePickerHeading","Parts.DateRangePickerPrev","Parts.DateRangePickerNext","Parts.DateRangePickerGrid","Parts.DateRangePickerGridHead","Parts.DateRangePickerGridBody","Parts.DateRangePickerGridRow","Parts.DateRangePickerHeadCell","Parts.DateRangePickerCell","Parts.DateRangePickerCellTrigger","Parts.DateRangePickerClose","Parts.DateRangePickerArrow","CompositionListBox","CompositionListBoxItem","CompositionListBoxItemIndicator","CompositionListBoxSection"],"sources":["../src/styling.ts","../src/toast-composition-context.ts","../src/useToast.ts","../src/Toast.vue","../src/Toast.vue","../src/CheckIcon.vue","../src/ChevronIcon.vue","../src/feedback-context.ts","../src/composition-factory.ts","../src/select-composition-context.ts","../src/SelectValue.vue","../src/SelectValue.vue","../src/CheckboxIndicator.vue","../src/CheckboxIndicator.vue","../src/CloseIcon.vue","../src/ToastCloseButton.vue","../src/ToastCloseButton.vue","../src/ToastActionButton.vue","../src/ToastActionButton.vue","../src/Description.vue","../src/Description.vue","../src/FieldError.vue","../src/FieldError.vue","../src/input-composition-context.ts","../src/InputRoot.vue","../src/InputRoot.vue","../src/InputControl.vue","../src/InputControl.vue","../src/TextareaControl.vue","../src/TextareaControl.vue","../src/sidebar-composition-context.ts","../src/SidebarRoot.vue","../src/SidebarRoot.vue","../src/SelectRoot.vue","../src/SelectRoot.vue","../src/SelectTrigger.vue","../src/SelectTrigger.vue","../src/SelectClearButton.vue","../src/SelectClearButton.vue","../src/SelectPopover.vue","../src/SelectPopover.vue","../src/InputLabel.vue","../src/InputLabel.vue","../src/data-table-composition-context.ts","../src/DataTableRoot.vue","../src/DataTableRoot.vue","../src/DataTableSortButton.vue","../src/DataTableSortButton.vue","../src/SidebarToggle.vue","../src/SidebarToggle.vue","../src/SidebarNavigation.vue","../src/SidebarNavigation.vue","../src/composition.ts","../src/Button.vue","../src/Button.vue","../src/ButtonGroup.ts","../src/ButtonGroupSeparator.ts","../src/button-family-context.ts","../src/ToggleButton.vue","../src/ToggleButton.vue","../src/ToggleButtonGroup.vue","../src/ToggleButtonGroup.vue","../src/FieldFeedback.vue","../src/FieldFeedback.vue","../src/SelectionValidation.vue","../src/SelectionValidation.vue","../src/useFeedback.ts","../src/selection-options.ts","../src/Select.vue","../src/Select.vue","../src/SelectGroup.ts","../src/Input.vue","../src/Input.vue","../src/Textarea.vue","../src/Textarea.vue","../src/Label.vue","../src/Label.vue","../src/Checkbox.vue","../src/Checkbox.vue","../src/RadioGroup.vue","../src/RadioGroup.vue","../src/Switch.vue","../src/Switch.vue","../src/form-context.ts","../src/Field.vue","../src/Field.vue","../src/Form.vue","../src/Form.vue","../src/listbox-selection.ts","../src/Listbox.vue","../src/Listbox.vue","../src/NumberField.vue","../src/NumberField.vue","../src/Card.vue","../src/Card.vue","../src/Badge.vue","../src/Badge.vue","../src/Skeleton.vue","../src/Skeleton.vue","../src/Separator.vue","../src/Separator.vue","../src/tabs-indicator.ts","../src/TabsListView.vue","../src/TabsListView.vue","../src/Tabs.vue","../src/Tabs.vue","../src/pagination-model.ts","../src/Pagination.vue","../src/Pagination.vue","../src/Table.vue","../src/Table.vue","../src/DataTable.vue","../src/DataTable.vue","../src/Alert.vue","../src/Alert.vue","../src/toast-model.ts","../src/ToastProvider.vue","../src/ToastProvider.vue","../src/Empty.vue","../src/Empty.vue","../src/Breadcrumb.vue","../src/Breadcrumb.vue","../src/useDisclosure.ts","../src/Sidebar.vue","../src/Sidebar.vue","../src/chart-model.ts","../src/Chart.vue","../src/Chart.vue","../src/Dialog.vue","../src/Dialog.vue","../src/MenuItemContent.vue","../src/MenuItemContent.vue","../src/overlay-model.ts","../src/DropdownMenuBranch.vue","../src/DropdownMenuBranch.vue","../src/DropdownMenu.vue","../src/DropdownMenu.vue","../src/Popover.vue","../src/Popover.vue","../src/Tooltip.vue","../src/Tooltip.vue","../src/Spinner.vue","../src/Spinner.vue","../src/Combobox.vue","../src/Combobox.vue","../src/toggle-group-model.ts","../src/ToggleGroup.vue","../src/ToggleGroup.vue","../src/date-range-model.ts","../src/DateRangePanel.vue","../src/DateRangePanel.vue","../src/DateRangePicker.vue","../src/DateRangePicker.vue","../src/CompositionListBox.vue","../src/CompositionListBox.vue","../src/CompositionListBoxItem.vue","../src/CompositionListBoxItem.vue","../src/CompositionListBoxItemIndicator.vue","../src/CompositionListBoxItemIndicator.vue","../src/CompositionListBoxSection.vue","../src/CompositionListBoxSection.vue","../src/index.ts"],"sourcesContent":["import { normalizeClass } from 'vue';\n\n/** Stable semantic part classes for the compact component API. */\nexport interface StylingProps<Part extends string = never> {\n classNames?: Partial<Record<Part | 'root', string>>;\n}\n\nexport function partClasses(base: unknown, custom?: unknown): string {\n return normalizeClass([base, custom]);\n}\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { ToastEntry } from './toast-model.js';\nexport interface ToastCompositionContext {\n entry: ComputedRef<ToastEntry>;\n closing: ComputedRef<boolean>;\n dismiss(): void;\n action(cancel: boolean, event: MouseEvent): void;\n}\nexport const toastCompositionKey: InjectionKey<ToastCompositionContext> =\n Symbol('KazeeToastComposition');\n","import { inject, type InjectionKey } from 'vue';\nimport type { ToastManager } from './toast-model.js';\n\nexport const toastManagerKey: InjectionKey<ToastManager> = Symbol('KazeeToastManager');\n\n/** Access the nearest provider's manager. Create imperative managers per application. */\nexport function useToast(): ToastManager {\n const manager = inject(toastManagerKey);\n if (!manager) throw new Error('useToast must be used inside ToastProvider.');\n return manager;\n}\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, provide, ref, watch } from 'vue';\nimport { toastCompositionKey } from './toast-composition-context.js';\nimport {\n ToastRoot,\n ToastTitle,\n ToastDescription,\n ToastAction as RekaToastAction,\n ToastClose,\n} from 'reka-ui';\nimport type { ToastAction, ToastEntry, ToastManager, ToastPlacement } from './toast-model.js';\nimport { useToast } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'action'\n | 'actions'\n | 'body'\n | 'close'\n | 'description'\n | 'indicator'\n | 'progress'\n | 'root'\n | 'title'\n > & {\n entry: ToastEntry;\n composed?: boolean;\n manager?: ToastManager;\n placement?: ToastPlacement;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }\n >(),\n {\n manager: undefined,\n placement: 'bottom-end',\n closeLabel: 'Tutup',\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\nconst manager = props.manager ?? useToast();\nconst closing = computed(() => props.entry.state === 'closing');\nconst swipe = ref<'start' | 'move' | 'cancel' | 'end'>();\nconst delta = ref(0);\nconst announcement = ref('');\nwatch(\n () => [props.entry.title, props.entry.description, props.entry.isLoading],\n () => {\n if (!closing.value)\n announcement.value = [props.entry.title, props.entry.description].filter(Boolean).join('. ');\n },\n);\nconst style = computed(() => ({\n touchAction: 'pan-y',\n '--toast-progress': props.entry.duration > 0 ? props.entry.remaining / props.entry.duration : 0,\n '--toast-remaining': `${props.entry.remaining}ms`,\n '--toast-duration': `${props.entry.duration}ms`,\n '--toast-swipe-x': `${delta.value}px`,\n '--reka-toast-swipe-move-x': `${delta.value}px`,\n '--reka-toast-swipe-end-x': `${delta.value}px`,\n}));\nfunction viewport(element: Element | null) {\n return element?.closest('.toast-list') as HTMLElement | null;\n}\nfunction dismiss() {\n const element = document.activeElement;\n if (\n element instanceof HTMLElement &&\n element.closest('[data-toast-id]')?.getAttribute('data-toast-id') === props.entry.id\n )\n viewport(element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id);\n}\nfunction action(value: ToastAction, reason: 'action' | 'cancel', event: MouseEvent) {\n // Prevent native primitive close; only a successful application action closes.\n event.preventDefault();\n value.onAction();\n if (value.dismiss !== false) {\n viewport(event.currentTarget as Element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id, reason);\n }\n}\nprovide(toastCompositionKey, {\n entry: computed(() => props.entry),\n closing,\n dismiss,\n action(cancel, event) {\n const value = cancel ? props.entry.cancel : props.entry.action;\n if (!closing.value && value) action(value, cancel ? 'cancel' : 'action', event);\n },\n});\nlet pointer: { id: number; x: number; y: number; direction: number; started: boolean } | undefined;\nfunction pointerDown(event: PointerEvent) {\n if (closing.value || event.button !== 0 || event.isPrimary === false) return;\n if (\n (event.target as Element).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable]:not([contenteditable=\"false\"]),[data-no-swipe]',\n )\n )\n return;\n const rtl =\n props.dir === 'rtl' ||\n (!props.dir && getComputedStyle(event.currentTarget as Element).direction === 'rtl');\n const start = props.placement.endsWith('start');\n pointer = {\n id: event.pointerId,\n x: event.clientX,\n y: event.clientY,\n direction: start !== rtl ? -1 : 1,\n started: false,\n };\n}\nfunction pointerMove(event: PointerEvent) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const x = event.clientX - pointer.x;\n const y = event.clientY - pointer.y;\n if (!pointer.started) {\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n pointer = undefined;\n return;\n }\n if (Math.abs(x) < 8) return;\n if (x * pointer.direction < 0) {\n pointer = undefined;\n return;\n }\n pointer.started = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n swipe.value = 'start';\n }\n delta.value = Math.max(0, x * pointer.direction) * pointer.direction;\n swipe.value = 'move';\n}\nfunction pointerEnd(event: PointerEvent, cancel = false) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const started = pointer.started;\n pointer = undefined;\n const node = event.currentTarget as HTMLElement;\n if (node.hasPointerCapture?.(event.pointerId)) node.releasePointerCapture(event.pointerId);\n if (!started) return;\n if (!cancel && Math.abs(delta.value) >= props.swipeThreshold) {\n swipe.value = 'end';\n manager.dismiss(props.entry.id, 'swipe');\n } else {\n swipe.value = 'cancel';\n delta.value = 0;\n }\n node.addEventListener(\n 'click',\n (click) => {\n click.preventDefault();\n click.stopPropagation();\n },\n { once: true },\n );\n}\n</script>\n\n<template>\n <!-- asChild lets Kazee closing/inert attributes override the primitive's native open/limited attributes. -->\n <ToastRoot :open=\"!closing\" :force-mount=\"true\" :duration=\"Infinity\" type=\"background\" as-child>\n <li\n v-bind=\"$attrs\"\n :class=\"partClasses('toast', $props.classNames?.root)\"\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 :dir=\"dir\"\n :inert=\"closing || undefined\"\n :aria-hidden=\"closing || undefined\"\n :tabindex=\"closing ? -1 : 0\"\n :style=\"style\"\n @pointerdown=\"pointerDown\"\n @pointermove=\"pointerMove\"\n @pointerup=\"pointerEnd($event)\"\n @pointercancel=\"pointerEnd($event, true)\"\n >\n <slot v-if=\"composed\" :entry=\"entry\" :dismiss=\"dismiss\" />\n <template v-else>\n <span\n :class=\"partClasses('toast__indicator', $props.classNames?.indicator)\"\n aria-hidden=\"true\"\n >\n <slot name=\"indicator\" :entry=\"entry\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"entry.isLoading\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\".25\" />\n <path d=\"M12 3a9 9 0 0 1 9 9\" />\n </template>\n <template v-else-if=\"entry.tone === 'success'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m8 12 3 3 5-6\" />\n </template>\n <template v-else-if=\"entry.tone === 'warning'\">\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v4m0 4h.01\" />\n </template>\n <template v-else-if=\"entry.tone === 'danger'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m9 9 6 6m0-6-6 6\" />\n </template>\n <template v-else>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 11v6m0-10h.01\" />\n </template>\n </svg>\n </slot>\n </span>\n <div :class=\"partClasses('toast__body', $props.classNames?.body)\">\n <slot :entry=\"entry\" :dismiss=\"dismiss\">\n <ToastTitle :class=\"partClasses('toast__title', $props.classNames?.title)\">{{\n entry.title\n }}</ToastTitle>\n <ToastDescription\n v-if=\"entry.description\"\n :class=\"partClasses('toast__description', $props.classNames?.description)\"\n >{{ entry.description }}</ToastDescription\n >\n <div\n v-if=\"entry.action || entry.cancel\"\n :class=\"partClasses('toast__actions', $props.classNames?.actions)\"\n >\n <RekaToastAction\n v-if=\"entry.action\"\n :class=\"partClasses('toast__action', $props.classNames?.action)\"\n :alt-text=\"entry.action.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.action, 'action', $event)\"\n >{{ entry.action.label }}</RekaToastAction\n >\n <RekaToastAction\n v-if=\"entry.cancel\"\n :class=\"partClasses('toast__action', $props.classNames?.action)\"\n data-cancel\n :alt-text=\"entry.cancel.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.cancel, 'cancel', $event)\"\n >{{ entry.cancel.label }}</RekaToastAction\n >\n </div>\n </slot>\n </div>\n <ToastClose\n v-if=\"showCloseButton\"\n :class=\"partClasses('toast__close', $props.classNames?.close)\"\n :aria-label=\"closeLabel\"\n :disabled=\"closing\"\n @click=\"dismiss\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </ToastClose>\n <span\n v-if=\"showProgress && entry.duration > 0 && !entry.isLoading\"\n :key=\"`${entry.generation}-${entry.remaining}-${entry.paused}`\"\n :class=\"partClasses('toast__progress', $props.classNames?.progress)\"\n aria-hidden=\"true\"\n />\n </template>\n </li>\n </ToastRoot>\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style=\"\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n \"\n >{{ announcement }}</span\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, provide, ref, watch } from 'vue';\nimport { toastCompositionKey } from './toast-composition-context.js';\nimport {\n ToastRoot,\n ToastTitle,\n ToastDescription,\n ToastAction as RekaToastAction,\n ToastClose,\n} from 'reka-ui';\nimport type { ToastAction, ToastEntry, ToastManager, ToastPlacement } from './toast-model.js';\nimport { useToast } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'action'\n | 'actions'\n | 'body'\n | 'close'\n | 'description'\n | 'indicator'\n | 'progress'\n | 'root'\n | 'title'\n > & {\n entry: ToastEntry;\n composed?: boolean;\n manager?: ToastManager;\n placement?: ToastPlacement;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }\n >(),\n {\n manager: undefined,\n placement: 'bottom-end',\n closeLabel: 'Tutup',\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\nconst manager = props.manager ?? useToast();\nconst closing = computed(() => props.entry.state === 'closing');\nconst swipe = ref<'start' | 'move' | 'cancel' | 'end'>();\nconst delta = ref(0);\nconst announcement = ref('');\nwatch(\n () => [props.entry.title, props.entry.description, props.entry.isLoading],\n () => {\n if (!closing.value)\n announcement.value = [props.entry.title, props.entry.description].filter(Boolean).join('. ');\n },\n);\nconst style = computed(() => ({\n touchAction: 'pan-y',\n '--toast-progress': props.entry.duration > 0 ? props.entry.remaining / props.entry.duration : 0,\n '--toast-remaining': `${props.entry.remaining}ms`,\n '--toast-duration': `${props.entry.duration}ms`,\n '--toast-swipe-x': `${delta.value}px`,\n '--reka-toast-swipe-move-x': `${delta.value}px`,\n '--reka-toast-swipe-end-x': `${delta.value}px`,\n}));\nfunction viewport(element: Element | null) {\n return element?.closest('.toast-list') as HTMLElement | null;\n}\nfunction dismiss() {\n const element = document.activeElement;\n if (\n element instanceof HTMLElement &&\n element.closest('[data-toast-id]')?.getAttribute('data-toast-id') === props.entry.id\n )\n viewport(element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id);\n}\nfunction action(value: ToastAction, reason: 'action' | 'cancel', event: MouseEvent) {\n // Prevent native primitive close; only a successful application action closes.\n event.preventDefault();\n value.onAction();\n if (value.dismiss !== false) {\n viewport(event.currentTarget as Element)?.focus({ preventScroll: true });\n manager.dismiss(props.entry.id, reason);\n }\n}\nprovide(toastCompositionKey, {\n entry: computed(() => props.entry),\n closing,\n dismiss,\n action(cancel, event) {\n const value = cancel ? props.entry.cancel : props.entry.action;\n if (!closing.value && value) action(value, cancel ? 'cancel' : 'action', event);\n },\n});\nlet pointer: { id: number; x: number; y: number; direction: number; started: boolean } | undefined;\nfunction pointerDown(event: PointerEvent) {\n if (closing.value || event.button !== 0 || event.isPrimary === false) return;\n if (\n (event.target as Element).closest(\n 'button,a,input,textarea,select,[role=\"button\"],[contenteditable]:not([contenteditable=\"false\"]),[data-no-swipe]',\n )\n )\n return;\n const rtl =\n props.dir === 'rtl' ||\n (!props.dir && getComputedStyle(event.currentTarget as Element).direction === 'rtl');\n const start = props.placement.endsWith('start');\n pointer = {\n id: event.pointerId,\n x: event.clientX,\n y: event.clientY,\n direction: start !== rtl ? -1 : 1,\n started: false,\n };\n}\nfunction pointerMove(event: PointerEvent) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const x = event.clientX - pointer.x;\n const y = event.clientY - pointer.y;\n if (!pointer.started) {\n if (Math.abs(y) > Math.abs(x) && Math.abs(y) > 8) {\n pointer = undefined;\n return;\n }\n if (Math.abs(x) < 8) return;\n if (x * pointer.direction < 0) {\n pointer = undefined;\n return;\n }\n pointer.started = true;\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n swipe.value = 'start';\n }\n delta.value = Math.max(0, x * pointer.direction) * pointer.direction;\n swipe.value = 'move';\n}\nfunction pointerEnd(event: PointerEvent, cancel = false) {\n if (!pointer || pointer.id !== event.pointerId) return;\n const started = pointer.started;\n pointer = undefined;\n const node = event.currentTarget as HTMLElement;\n if (node.hasPointerCapture?.(event.pointerId)) node.releasePointerCapture(event.pointerId);\n if (!started) return;\n if (!cancel && Math.abs(delta.value) >= props.swipeThreshold) {\n swipe.value = 'end';\n manager.dismiss(props.entry.id, 'swipe');\n } else {\n swipe.value = 'cancel';\n delta.value = 0;\n }\n node.addEventListener(\n 'click',\n (click) => {\n click.preventDefault();\n click.stopPropagation();\n },\n { once: true },\n );\n}\n</script>\n\n<template>\n <!-- asChild lets Kazee closing/inert attributes override the primitive's native open/limited attributes. -->\n <ToastRoot :open=\"!closing\" :force-mount=\"true\" :duration=\"Infinity\" type=\"background\" as-child>\n <li\n v-bind=\"$attrs\"\n :class=\"partClasses('toast', $props.classNames?.root)\"\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 :dir=\"dir\"\n :inert=\"closing || undefined\"\n :aria-hidden=\"closing || undefined\"\n :tabindex=\"closing ? -1 : 0\"\n :style=\"style\"\n @pointerdown=\"pointerDown\"\n @pointermove=\"pointerMove\"\n @pointerup=\"pointerEnd($event)\"\n @pointercancel=\"pointerEnd($event, true)\"\n >\n <slot v-if=\"composed\" :entry=\"entry\" :dismiss=\"dismiss\" />\n <template v-else>\n <span\n :class=\"partClasses('toast__indicator', $props.classNames?.indicator)\"\n aria-hidden=\"true\"\n >\n <slot name=\"indicator\" :entry=\"entry\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <template v-if=\"entry.isLoading\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" opacity=\".25\" />\n <path d=\"M12 3a9 9 0 0 1 9 9\" />\n </template>\n <template v-else-if=\"entry.tone === 'success'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m8 12 3 3 5-6\" />\n </template>\n <template v-else-if=\"entry.tone === 'warning'\">\n <path d=\"m12 3 10 18H2L12 3Z\" />\n <path d=\"M12 9v4m0 4h.01\" />\n </template>\n <template v-else-if=\"entry.tone === 'danger'\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"m9 9 6 6m0-6-6 6\" />\n </template>\n <template v-else>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 11v6m0-10h.01\" />\n </template>\n </svg>\n </slot>\n </span>\n <div :class=\"partClasses('toast__body', $props.classNames?.body)\">\n <slot :entry=\"entry\" :dismiss=\"dismiss\">\n <ToastTitle :class=\"partClasses('toast__title', $props.classNames?.title)\">{{\n entry.title\n }}</ToastTitle>\n <ToastDescription\n v-if=\"entry.description\"\n :class=\"partClasses('toast__description', $props.classNames?.description)\"\n >{{ entry.description }}</ToastDescription\n >\n <div\n v-if=\"entry.action || entry.cancel\"\n :class=\"partClasses('toast__actions', $props.classNames?.actions)\"\n >\n <RekaToastAction\n v-if=\"entry.action\"\n :class=\"partClasses('toast__action', $props.classNames?.action)\"\n :alt-text=\"entry.action.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.action, 'action', $event)\"\n >{{ entry.action.label }}</RekaToastAction\n >\n <RekaToastAction\n v-if=\"entry.cancel\"\n :class=\"partClasses('toast__action', $props.classNames?.action)\"\n data-cancel\n :alt-text=\"entry.cancel.altText\"\n :close-on-click=\"false\"\n :disabled=\"closing\"\n @click=\"action(entry.cancel, 'cancel', $event)\"\n >{{ entry.cancel.label }}</RekaToastAction\n >\n </div>\n </slot>\n </div>\n <ToastClose\n v-if=\"showCloseButton\"\n :class=\"partClasses('toast__close', $props.classNames?.close)\"\n :aria-label=\"closeLabel\"\n :disabled=\"closing\"\n @click=\"dismiss\"\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <path d=\"m6 6 12 12M6 18 18 6\" />\n </svg>\n </ToastClose>\n <span\n v-if=\"showProgress && entry.duration > 0 && !entry.isLoading\"\n :key=\"`${entry.generation}-${entry.remaining}-${entry.paused}`\"\n :class=\"partClasses('toast__progress', $props.classNames?.progress)\"\n aria-hidden=\"true\"\n />\n </template>\n </li>\n </ToastRoot>\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style=\"\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n \"\n >{{ announcement }}</span\n >\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3.5 8.5l3 3 6-6.5\" />\n </svg>\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n</template>\n","import { computed, provide, ref, type ComputedRef, type InjectionKey } from 'vue';\n\nexport interface FeedbackContext {\n describedBy: ComputedRef<string | undefined>;\n describe(id: string): () => void;\n}\n\nexport const feedbackContextKey: InjectionKey<FeedbackContext> = Symbol('KazeeFieldFeedback');\n\n/** Each field or option owns its references; nested fields never share their descriptions. */\nexport function provideFeedbackContext(): FeedbackContext {\n const ids = ref<string[]>([]);\n const context: FeedbackContext = {\n describedBy: computed(() => ids.value.join(' ') || undefined),\n describe(id) {\n ids.value = [...ids.value, id];\n return () => {\n ids.value = ids.value.filter((value) => value !== id);\n };\n },\n };\n provide(feedbackContextKey, context);\n return context;\n}\n","import {\n defineComponent,\n h,\n inject,\n mergeProps,\n type Component,\n type VNodeChild,\n type HTMLAttributes,\n type AnchorHTMLAttributes,\n type TdHTMLAttributes,\n} from 'vue';\nimport { feedbackContextKey, provideFeedbackContext } from './feedback-context.js';\nimport { useForwardExpose } from 'reka-ui';\n\n/* eslint-disable vue/one-component-per-file -- These factories create named, typed primitive wrappers. */\n\n/** Wrap a primitive without replacing its props, events, slots or exposed instance. */\nexport function styledPrimitive<T extends Component>(\n primitive: T,\n name: string,\n base: string,\n fallback?: () => VNodeChild,\n defaults: Record<string, unknown> = {},\n): T {\n return defineComponent({\n name,\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n const ownsFeedback = [\n 'NumberFieldRoot',\n 'ComboboxRoot',\n 'ListboxRoot',\n 'RadioGroupRoot',\n 'SwitchRoot',\n 'CheckboxRoot',\n 'SelectItem',\n 'ListboxItem',\n ].includes(name);\n const feedback = ownsFeedback\n ? provideFeedbackContext()\n : inject(feedbackContextKey, undefined);\n const describesControl = [\n 'NumberFieldInput',\n 'ComboboxInput',\n 'ListboxContent',\n 'RadioGroupRoot',\n 'SwitchRoot',\n 'CheckboxRoot',\n 'SelectItem',\n 'ListboxItem',\n ].includes(name);\n const { forwardRef } = useForwardExpose();\n return () =>\n h(\n primitive,\n mergeProps(\n defaults,\n {\n class: base,\n ...(describesControl ? { 'aria-describedby': feedback?.describedBy.value } : {}),\n },\n attrs,\n { ref: forwardRef },\n ),\n slots.default || !fallback ? slots : { ...slots, default: fallback },\n );\n },\n }) as unknown as T;\n}\n\n/** A content part; semantic tags and native attributes remain under consumer control. */\nexport interface ContentPart<Props> {\n new (): {\n $props: Props;\n $slots: { default?: () => VNodeChild };\n $el: Element;\n };\n}\ntype ContentAttributes<Tag extends string> = HTMLAttributes & { as?: string } & (Tag extends 'a'\n ? Pick<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'download' | 'hreflang' | 'type'>\n : Tag extends 'th' | 'td'\n ? Pick<TdHTMLAttributes, 'colspan' | 'rowspan' | 'headers'> & {\n scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';\n }\n : unknown);\nexport function contentPart<Tag extends string>(\n name: string,\n tag: Tag,\n base: string,\n defaults = {},\n): ContentPart<ContentAttributes<Tag>> {\n return defineComponent({\n name,\n inheritAttrs: false,\n props: { as: { type: String, default: String(tag) } },\n setup(props, { attrs, slots }) {\n const { forwardRef } = useForwardExpose();\n return () =>\n h(\n props.as,\n mergeProps(defaults, { class: base }, attrs, { ref: forwardRef }),\n slots.default?.(),\n );\n },\n }) as unknown as ContentPart<ContentAttributes<Tag>>;\n}\n","import type { ComputedRef, InjectionKey, Ref } from 'vue';\n\nexport interface SelectCompositionContext {\n id: string;\n describedBy: ComputedRef<string | undefined>;\n labelId: string;\n hasLabel: ComputedRef<boolean>;\n disabled: ComputedRef<boolean>;\n empty: ComputedRef<boolean>;\n clear: () => void;\n trigger: Ref<HTMLElement | undefined>;\n value: ComputedRef<string | string[] | undefined>;\n labels: Ref<Record<string, string>>;\n registerLabel(value: string, label: string): void;\n}\n\nexport const selectCompositionKey: InjectionKey<SelectCompositionContext> =\n Symbol('KazeeSelectComposition');\n\nexport const selectTriggerCompositionKey: InjectionKey<{ registerClear(): () => void }> = Symbol(\n 'KazeeSelectTriggerComposition',\n);\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { SelectValue } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst props = defineProps<{ placeholder?: string }>();\nconst context = inject(selectCompositionKey, undefined);\nconst labels = computed(() => {\n const selected = context?.value.value;\n const values = Array.isArray(selected) ? selected : selected ? [selected] : [];\n return values\n .map((value) => context?.labels.value[value])\n .filter((value): value is string => !!value);\n});\n</script>\n<template>\n <SelectValue v-slot=\"state\" class=\"select__value\" :placeholder=\"placeholder\"\n ><slot v-bind=\"state\">{{\n labels.length\n ? labels.join(', ')\n : state.selectedLabel.length\n ? state.selectedLabel.join(', ')\n : props.placeholder\n }}</slot></SelectValue\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { SelectValue } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst props = defineProps<{ placeholder?: string }>();\nconst context = inject(selectCompositionKey, undefined);\nconst labels = computed(() => {\n const selected = context?.value.value;\n const values = Array.isArray(selected) ? selected : selected ? [selected] : [];\n return values\n .map((value) => context?.labels.value[value])\n .filter((value): value is string => !!value);\n});\n</script>\n<template>\n <SelectValue v-slot=\"state\" class=\"select__value\" :placeholder=\"placeholder\"\n ><slot v-bind=\"state\">{{\n labels.length\n ? labels.join(', ')\n : state.selectedLabel.length\n ? state.selectedLabel.join(', ')\n : props.placeholder\n }}</slot></SelectValue\n >\n</template>\n","<script setup lang=\"ts\">\nimport { CheckboxIndicator, useForwardExpose, type CheckboxIndicatorProps } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\ndefineOptions({ inheritAttrs: false });\nconst props = defineProps<CheckboxIndicatorProps>();\nconst { forwardRef } = useForwardExpose();\n</script>\n<template>\n <CheckboxIndicator :ref=\"forwardRef\" v-bind=\"{ ...props, ...$attrs }\"\n ><slot><CheckIcon class=\"checkbox__check\" /><span class=\"checkbox__dash\" /></slot\n ></CheckboxIndicator>\n</template>\n","<script setup lang=\"ts\">\nimport { CheckboxIndicator, useForwardExpose, type CheckboxIndicatorProps } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\ndefineOptions({ inheritAttrs: false });\nconst props = defineProps<CheckboxIndicatorProps>();\nconst { forwardRef } = useForwardExpose();\n</script>\n<template>\n <CheckboxIndicator :ref=\"forwardRef\" v-bind=\"{ ...props, ...$attrs }\"\n ><slot><CheckIcon class=\"checkbox__check\" /><span class=\"checkbox__dash\" /></slot\n ></CheckboxIndicator>\n</template>\n","<template>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ToastClose } from 'reka-ui';\nimport CloseIcon from './CloseIcon.vue';\nimport { toastCompositionKey } from './toast-composition-context.js';\nconst context = inject(toastCompositionKey, undefined);\nif (!context) throw new Error('ToastCloseButton must be inside Toast.Root.');\n</script>\n<template>\n <ToastClose\n class=\"toast__close\"\n aria-label=\"Tutup / Close\"\n :disabled=\"context.closing.value\"\n @click=\"context.dismiss()\"\n ><slot><CloseIcon /></slot\n ></ToastClose>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ToastClose } from 'reka-ui';\nimport CloseIcon from './CloseIcon.vue';\nimport { toastCompositionKey } from './toast-composition-context.js';\nconst context = inject(toastCompositionKey, undefined);\nif (!context) throw new Error('ToastCloseButton must be inside Toast.Root.');\n</script>\n<template>\n <ToastClose\n class=\"toast__close\"\n aria-label=\"Tutup / Close\"\n :disabled=\"context.closing.value\"\n @click=\"context.dismiss()\"\n ><slot><CloseIcon /></slot\n ></ToastClose>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { ToastAction } from 'reka-ui';\nimport { toastCompositionKey } from './toast-composition-context.js';\nconst props = defineProps<{ cancel?: boolean }>();\nconst context = inject(toastCompositionKey, undefined);\nif (!context) throw new Error('ToastActionButton must be inside Toast.Root.');\nconst action = computed(() =>\n props.cancel ? context.entry.value.cancel : context.entry.value.action,\n);\n</script>\n<template>\n <ToastAction\n v-if=\"action\"\n class=\"toast__action\"\n :alt-text=\"action.altText\"\n :close-on-click=\"false\"\n :disabled=\"context.closing.value\"\n @click=\"context.action(!!cancel, $event)\"\n ><slot>{{ action.label }}</slot></ToastAction\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { ToastAction } from 'reka-ui';\nimport { toastCompositionKey } from './toast-composition-context.js';\nconst props = defineProps<{ cancel?: boolean }>();\nconst context = inject(toastCompositionKey, undefined);\nif (!context) throw new Error('ToastActionButton must be inside Toast.Root.');\nconst action = computed(() =>\n props.cancel ? context.entry.value.cancel : context.entry.value.action,\n);\n</script>\n<template>\n <ToastAction\n v-if=\"action\"\n class=\"toast__action\"\n :alt-text=\"action.altText\"\n :close-on-click=\"false\"\n :disabled=\"context.closing.value\"\n @click=\"context.action(!!cancel, $event)\"\n ><slot>{{ action.label }}</slot></ToastAction\n >\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, useId } from 'vue';\nimport { feedbackContextKey } from './feedback-context.js';\nconst props = defineProps<{ id?: string }>();\nconst context = inject(feedbackContextKey, undefined);\nconst id = props.id ?? useId();\nconst unregister = context?.describe(id);\nonBeforeUnmount(() => unregister?.());\n</script>\n<template>\n <p :id=\"id\" class=\"input__description\"><slot /></p>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, useId } from 'vue';\nimport { feedbackContextKey } from './feedback-context.js';\nconst props = defineProps<{ id?: string }>();\nconst context = inject(feedbackContextKey, undefined);\nconst id = props.id ?? useId();\nconst unregister = context?.describe(id);\nonBeforeUnmount(() => unregister?.());\n</script>\n<template>\n <p :id=\"id\" class=\"input__description\"><slot /></p>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, useId } from 'vue';\nimport { feedbackContextKey } from './feedback-context.js';\nconst props = defineProps<{ id?: string }>();\nconst context = inject(feedbackContextKey, undefined);\nconst id = props.id ?? useId();\nconst unregister = context?.describe(id);\nonBeforeUnmount(() => unregister?.());\n</script>\n<template>\n <p :id=\"id\" class=\"input__error\" role=\"alert\"><slot /></p>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, useId } from 'vue';\nimport { feedbackContextKey } from './feedback-context.js';\nconst props = defineProps<{ id?: string }>();\nconst context = inject(feedbackContextKey, undefined);\nconst id = props.id ?? useId();\nconst unregister = context?.describe(id);\nonBeforeUnmount(() => unregister?.());\n</script>\n<template>\n <p :id=\"id\" class=\"input__error\" role=\"alert\"><slot /></p>\n</template>\n","import type { ComputedRef, InjectionKey } from 'vue';\n\nexport interface InputCompositionContext {\n id: string;\n value: ComputedRef<string>;\n disabled: ComputedRef<boolean>;\n readonly: ComputedRef<boolean>;\n required: ComputedRef<boolean>;\n invalid: ComputedRef<boolean>;\n name: ComputedRef<string | undefined>;\n describedBy: ComputedRef<string | undefined>;\n update(value: string): void;\n reset(): void;\n describe(id: string): () => void;\n}\n\nexport const inputCompositionKey: InjectionKey<InputCompositionContext> =\n Symbol('KazeeInputComposition');\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, provide, ref, useId } from 'vue';\nimport { inputCompositionKey } from './input-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\nimport { partClasses, type StylingProps } from './styling.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'label' | 'root'> & {\n id?: string;\n label?: string;\n modelValue?: string;\n defaultValue?: string;\n name?: string;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: '',\n id: undefined,\n label: undefined,\n name: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultValue);\nconst value = computed(() =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value')\n ? (props.modelValue ?? '')\n : local.value,\n);\nconst feedback = provideFeedbackContext();\nconst id = props.id ?? useId();\nprovide(inputCompositionKey, {\n id,\n value,\n disabled: computed(() => !!props.disabled),\n readonly: computed(() => !!props.readonly),\n required: computed(() => !!props.required),\n invalid: computed(() => !!props.invalid),\n name: computed(() => props.name),\n describedBy: feedback.describedBy,\n update(next) {\n if (props.disabled || props.readonly) return;\n local.value = next;\n emit('update:modelValue', next);\n },\n reset() {\n if (!(\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value')\n ))\n local.value = props.defaultValue;\n },\n describe: feedback.describe,\n});\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', classNames?.root)\" :dir=\"dir\">\n <label v-if=\"label\" :for=\"id\" :class=\"partClasses('input__label', classNames?.label)\">{{\n label\n }}</label>\n <slot />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, provide, ref, useId } from 'vue';\nimport { inputCompositionKey } from './input-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\nimport { partClasses, type StylingProps } from './styling.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'label' | 'root'> & {\n id?: string;\n label?: string;\n modelValue?: string;\n defaultValue?: string;\n name?: string;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: '',\n id: undefined,\n label: undefined,\n name: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultValue);\nconst value = computed(() =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value')\n ? (props.modelValue ?? '')\n : local.value,\n);\nconst feedback = provideFeedbackContext();\nconst id = props.id ?? useId();\nprovide(inputCompositionKey, {\n id,\n value,\n disabled: computed(() => !!props.disabled),\n readonly: computed(() => !!props.readonly),\n required: computed(() => !!props.required),\n invalid: computed(() => !!props.invalid),\n name: computed(() => props.name),\n describedBy: feedback.describedBy,\n update(next) {\n if (props.disabled || props.readonly) return;\n local.value = next;\n emit('update:modelValue', next);\n },\n reset() {\n if (!(\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value')\n ))\n local.value = props.defaultValue;\n },\n describe: feedback.describe,\n});\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', classNames?.root)\" :dir=\"dir\">\n <label v-if=\"label\" :for=\"id\" :class=\"partClasses('input__label', classNames?.label)\">{{\n label\n }}</label>\n <slot />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport { inputCompositionKey } from './input-composition-context.js';\ndefineOptions({ inheritAttrs: false });\ninterface NativeControlAttributes {\n id?: string;\n type?: string;\n placeholder?: string;\n autocomplete?: string;\n inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n min?: string | number;\n max?: string | number;\n step?: string | number;\n minlength?: string | number;\n maxlength?: string | number;\n pattern?: string;\n name?: string;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n form?: string;\n rows?: string | number;\n cols?: string | number;\n wrap?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean | 'true' | 'false' | 'grammar' | 'spelling';\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onKeydown?: (event: KeyboardEvent) => void;\n onKeyup?: (event: KeyboardEvent) => void;\n onInput?: (event: Event) => void;\n onChange?: (event: Event) => void;\n}\n// Native attributes stay in $attrs and keep their DOM types in consumer templates.\ninterface Props extends /* @vue-ignore */ NativeControlAttributes {\n multiline?: boolean;\n}\nconst props = defineProps<Props>();\nconst context = inject(inputCompositionKey, undefined);\nif (!context) throw new Error('InputControl must be inside InputRoot.');\nconst element = ref<HTMLInputElement | HTMLTextAreaElement>();\ndefineExpose({ element, focus: () => element.value?.focus() });\nfunction reset(event: Event) {\n queueMicrotask(() => {\n if (event.defaultPrevented || !element.value) return;\n context!.reset();\n void nextTick(() => {\n if (element.value) element.value.value = context!.value.value;\n });\n });\n}\nonMounted(() => element.value?.form?.addEventListener('reset', reset));\nonBeforeUnmount(() => element.value?.form?.removeEventListener('reset', reset));\n</script>\n<template>\n <component\n :is=\"props.multiline ? 'textarea' : 'input'\"\n :id=\"context.id\"\n ref=\"element\"\n class=\"input__control\"\n :value=\"context.value.value\"\n :name=\"context.name.value\"\n :disabled=\"context.disabled.value\"\n :readonly=\"context.readonly.value\"\n :required=\"context.required.value\"\n :aria-required=\"context.required.value || undefined\"\n :aria-invalid=\"context.invalid.value || undefined\"\n :aria-describedby=\"context.describedBy.value\"\n v-bind=\"$attrs\"\n @input=\"context.update(($event.target as HTMLInputElement).value)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { inject, nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport { inputCompositionKey } from './input-composition-context.js';\ndefineOptions({ inheritAttrs: false });\ninterface NativeControlAttributes {\n id?: string;\n type?: string;\n placeholder?: string;\n autocomplete?: string;\n inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n min?: string | number;\n max?: string | number;\n step?: string | number;\n minlength?: string | number;\n maxlength?: string | number;\n pattern?: string;\n name?: string;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n form?: string;\n rows?: string | number;\n cols?: string | number;\n wrap?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean | 'true' | 'false' | 'grammar' | 'spelling';\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onKeydown?: (event: KeyboardEvent) => void;\n onKeyup?: (event: KeyboardEvent) => void;\n onInput?: (event: Event) => void;\n onChange?: (event: Event) => void;\n}\n// Native attributes stay in $attrs and keep their DOM types in consumer templates.\ninterface Props extends /* @vue-ignore */ NativeControlAttributes {\n multiline?: boolean;\n}\nconst props = defineProps<Props>();\nconst context = inject(inputCompositionKey, undefined);\nif (!context) throw new Error('InputControl must be inside InputRoot.');\nconst element = ref<HTMLInputElement | HTMLTextAreaElement>();\ndefineExpose({ element, focus: () => element.value?.focus() });\nfunction reset(event: Event) {\n queueMicrotask(() => {\n if (event.defaultPrevented || !element.value) return;\n context!.reset();\n void nextTick(() => {\n if (element.value) element.value.value = context!.value.value;\n });\n });\n}\nonMounted(() => element.value?.form?.addEventListener('reset', reset));\nonBeforeUnmount(() => element.value?.form?.removeEventListener('reset', reset));\n</script>\n<template>\n <component\n :is=\"props.multiline ? 'textarea' : 'input'\"\n :id=\"context.id\"\n ref=\"element\"\n class=\"input__control\"\n :value=\"context.value.value\"\n :name=\"context.name.value\"\n :disabled=\"context.disabled.value\"\n :readonly=\"context.readonly.value\"\n :required=\"context.required.value\"\n :aria-required=\"context.required.value || undefined\"\n :aria-invalid=\"context.invalid.value || undefined\"\n :aria-describedby=\"context.describedBy.value\"\n v-bind=\"$attrs\"\n @input=\"context.update(($event.target as HTMLInputElement).value)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport InputControl from './InputControl.vue';\n</script>\n<template>\n <InputControl multiline><slot /></InputControl>\n</template>\n","<script setup lang=\"ts\">\nimport InputControl from './InputControl.vue';\n</script>\n<template>\n <InputControl multiline><slot /></InputControl>\n</template>\n","import type { ComputedRef, InjectionKey } from 'vue';\nexport interface SidebarCompositionContext {\n id: string;\n open: ComputedRef<boolean>;\n toggle(): void;\n}\nexport const sidebarCompositionKey: InjectionKey<SidebarCompositionContext> =\n Symbol('KazeeSidebarComposition');\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, provide, ref, useId } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst props = withDefaults(defineProps<{ open?: boolean; defaultOpen?: boolean }>(), {\n open: undefined,\n defaultOpen: true,\n});\nconst emit = defineEmits<{ 'update:open': [value: boolean] }>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultOpen);\nconst open = computed(() =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'open') ? !!props.open : local.value,\n);\nprovide(sidebarCompositionKey, {\n id: useId(),\n open,\n toggle() {\n const next = !open.value;\n local.value = next;\n emit('update:open', next);\n },\n});\n</script>\n<template>\n <aside class=\"sidebar\"><slot :open=\"open\" /></aside>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, provide, ref, useId } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst props = withDefaults(defineProps<{ open?: boolean; defaultOpen?: boolean }>(), {\n open: undefined,\n defaultOpen: true,\n});\nconst emit = defineEmits<{ 'update:open': [value: boolean] }>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultOpen);\nconst open = computed(() =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'open') ? !!props.open : local.value,\n);\nprovide(sidebarCompositionKey, {\n id: useId(),\n open,\n toggle() {\n const next = !open.value;\n local.value = next;\n emit('update:open', next);\n },\n});\n</script>\n<template>\n <aside class=\"sidebar\"><slot :open=\"open\" /></aside>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, onBeforeUnmount, onMounted, provide, ref, useId } from 'vue';\nimport { provideFeedbackContext } from './feedback-context.js';\nimport { SelectRoot as RekaSelectRoot } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { partClasses, type StylingProps } from './styling.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'label' | 'root'> & {\n label?: string;\n id?: string;\n modelValue?: string | string[];\n defaultValue?: string | string[];\n selectionMode?: 'single' | 'multiple';\n disabled?: boolean;\n required?: boolean;\n name?: string;\n open?: boolean;\n defaultOpen?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n selectionMode: 'single',\n modelValue: undefined,\n defaultValue: undefined,\n open: undefined,\n label: undefined,\n id: undefined,\n name: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined];\n 'update:open': [value: boolean];\n clear: [];\n}>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultValue);\nconst isControlled = () =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value');\nconst value = computed(() => (isControlled() ? props.modelValue : local.value));\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst id = props.id ?? useId();\nconst trigger = ref<HTMLElement>();\nconst wrapper = ref<HTMLElement>();\nconst feedback = provideFeedbackContext();\nconst labels = ref<Record<string, string>>({});\nfunction update(next: unknown) {\n if (props.disabled) return;\n const result = multiple.value\n ? Array.isArray(next)\n ? next.map(String)\n : []\n : next == null\n ? undefined\n : String(next);\n local.value = result;\n emit('update:modelValue', result);\n}\nprovide(selectCompositionKey, {\n id,\n describedBy: feedback.describedBy,\n labelId: `${id}-label`,\n hasLabel: computed(() => !!props.label),\n disabled: computed(() => !!props.disabled),\n empty: computed(\n () =>\n value.value == null ||\n value.value === '' ||\n (Array.isArray(value.value) && value.value.length === 0),\n ),\n trigger,\n value,\n labels,\n registerLabel(value, label) {\n if (labels.value[value] !== label) labels.value[value] = label;\n },\n clear() {\n if (props.disabled) return;\n update(multiple.value ? [] : undefined);\n emit('clear');\n trigger.value?.focus();\n },\n});\nlet form: HTMLFormElement | null | undefined;\nfunction reset(event: Event) {\n queueMicrotask(() => {\n if (!event.defaultPrevented && !isControlled()) local.value = props.defaultValue;\n });\n}\nonMounted(() => {\n form = (trigger.value as HTMLButtonElement | undefined)?.form ?? wrapper.value?.closest('form');\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <div\n ref=\"wrapper\"\n v-bind=\"$attrs\"\n :class=\"partClasses('select', classNames?.root)\"\n :dir=\"dir\"\n :data-multiple=\"multiple || undefined\"\n >\n <label\n v-if=\"label\"\n :id=\"`${id}-label`\"\n :for=\"id\"\n :class=\"partClasses('select__label', classNames?.label)\"\n >{{ label }}</label\n >\n <RekaSelectRoot\n :model-value=\"multiple ? (value ?? []) : (value ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :open=\"open\"\n :default-open=\"defaultOpen\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n @update:open=\"emit('update:open', $event)\"\n >\n <slot />\n </RekaSelectRoot>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, getCurrentInstance, onBeforeUnmount, onMounted, provide, ref, useId } from 'vue';\nimport { provideFeedbackContext } from './feedback-context.js';\nimport { SelectRoot as RekaSelectRoot } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { partClasses, type StylingProps } from './styling.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'label' | 'root'> & {\n label?: string;\n id?: string;\n modelValue?: string | string[];\n defaultValue?: string | string[];\n selectionMode?: 'single' | 'multiple';\n disabled?: boolean;\n required?: boolean;\n name?: string;\n open?: boolean;\n defaultOpen?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n selectionMode: 'single',\n modelValue: undefined,\n defaultValue: undefined,\n open: undefined,\n label: undefined,\n id: undefined,\n name: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined];\n 'update:open': [value: boolean];\n clear: [];\n}>();\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultValue);\nconst isControlled = () =>\n Object.hasOwn(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.hasOwn(instance?.vnode.props ?? {}, 'model-value');\nconst value = computed(() => (isControlled() ? props.modelValue : local.value));\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst id = props.id ?? useId();\nconst trigger = ref<HTMLElement>();\nconst wrapper = ref<HTMLElement>();\nconst feedback = provideFeedbackContext();\nconst labels = ref<Record<string, string>>({});\nfunction update(next: unknown) {\n if (props.disabled) return;\n const result = multiple.value\n ? Array.isArray(next)\n ? next.map(String)\n : []\n : next == null\n ? undefined\n : String(next);\n local.value = result;\n emit('update:modelValue', result);\n}\nprovide(selectCompositionKey, {\n id,\n describedBy: feedback.describedBy,\n labelId: `${id}-label`,\n hasLabel: computed(() => !!props.label),\n disabled: computed(() => !!props.disabled),\n empty: computed(\n () =>\n value.value == null ||\n value.value === '' ||\n (Array.isArray(value.value) && value.value.length === 0),\n ),\n trigger,\n value,\n labels,\n registerLabel(value, label) {\n if (labels.value[value] !== label) labels.value[value] = label;\n },\n clear() {\n if (props.disabled) return;\n update(multiple.value ? [] : undefined);\n emit('clear');\n trigger.value?.focus();\n },\n});\nlet form: HTMLFormElement | null | undefined;\nfunction reset(event: Event) {\n queueMicrotask(() => {\n if (!event.defaultPrevented && !isControlled()) local.value = props.defaultValue;\n });\n}\nonMounted(() => {\n form = (trigger.value as HTMLButtonElement | undefined)?.form ?? wrapper.value?.closest('form');\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <div\n ref=\"wrapper\"\n v-bind=\"$attrs\"\n :class=\"partClasses('select', classNames?.root)\"\n :dir=\"dir\"\n :data-multiple=\"multiple || undefined\"\n >\n <label\n v-if=\"label\"\n :id=\"`${id}-label`\"\n :for=\"id\"\n :class=\"partClasses('select__label', classNames?.label)\"\n >{{ label }}</label\n >\n <RekaSelectRoot\n :model-value=\"multiple ? (value ?? []) : (value ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :open=\"open\"\n :default-open=\"defaultOpen\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n @update:open=\"emit('update:open', $event)\"\n >\n <slot />\n </RekaSelectRoot>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, provide, ref } from 'vue';\nimport { SelectTrigger as RekaSelectTrigger, useForwardExpose } from 'reka-ui';\nimport { selectCompositionKey, selectTriggerCompositionKey } from './select-composition-context.js';\ndefineOptions({ inheritAttrs: false });\nconst context = inject(selectCompositionKey, undefined);\nconst clearCount = ref(0);\nprovide(selectTriggerCompositionKey, {\n registerClear() {\n clearCount.value += 1;\n return () => {\n clearCount.value -= 1;\n };\n },\n});\nfunction keydown(event: KeyboardEvent) {\n if (\n clearCount.value &&\n (event.key === 'Backspace' || event.key === 'Delete') &&\n context &&\n !context.disabled.value &&\n !context.empty.value\n ) {\n event.preventDefault();\n context.clear();\n }\n}\nconst { forwardRef, currentElement } = useForwardExpose();\nfunction capture(element: Parameters<typeof forwardRef>[0]) {\n forwardRef(element);\n if (context) context.trigger.value = element ? currentElement.value : undefined;\n}\n</script>\n<template>\n <RekaSelectTrigger\n :id=\"context?.id\"\n :ref=\"capture\"\n :aria-describedby=\"context?.describedBy.value\"\n :aria-labelledby=\"context?.hasLabel.value ? context.labelId : undefined\"\n v-bind=\"$attrs\"\n class=\"select__trigger\"\n :aria-keyshortcuts=\"clearCount ? 'Backspace Delete' : undefined\"\n @keydown=\"keydown\"\n ><slot\n /></RekaSelectTrigger>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, provide, ref } from 'vue';\nimport { SelectTrigger as RekaSelectTrigger, useForwardExpose } from 'reka-ui';\nimport { selectCompositionKey, selectTriggerCompositionKey } from './select-composition-context.js';\ndefineOptions({ inheritAttrs: false });\nconst context = inject(selectCompositionKey, undefined);\nconst clearCount = ref(0);\nprovide(selectTriggerCompositionKey, {\n registerClear() {\n clearCount.value += 1;\n return () => {\n clearCount.value -= 1;\n };\n },\n});\nfunction keydown(event: KeyboardEvent) {\n if (\n clearCount.value &&\n (event.key === 'Backspace' || event.key === 'Delete') &&\n context &&\n !context.disabled.value &&\n !context.empty.value\n ) {\n event.preventDefault();\n context.clear();\n }\n}\nconst { forwardRef, currentElement } = useForwardExpose();\nfunction capture(element: Parameters<typeof forwardRef>[0]) {\n forwardRef(element);\n if (context) context.trigger.value = element ? currentElement.value : undefined;\n}\n</script>\n<template>\n <RekaSelectTrigger\n :id=\"context?.id\"\n :ref=\"capture\"\n :aria-describedby=\"context?.describedBy.value\"\n :aria-labelledby=\"context?.hasLabel.value ? context.labelId : undefined\"\n v-bind=\"$attrs\"\n class=\"select__trigger\"\n :aria-keyshortcuts=\"clearCount ? 'Backspace Delete' : undefined\"\n @keydown=\"keydown\"\n ><slot\n /></RekaSelectTrigger>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount } from 'vue';\nimport CloseIcon from './CloseIcon.vue';\nimport { selectCompositionKey, selectTriggerCompositionKey } from './select-composition-context.js';\nconst context = inject(selectCompositionKey, undefined);\nif (!context) throw new Error('SelectClearButton must be inside SelectRoot.');\nconst nested = inject(selectTriggerCompositionKey, undefined);\nconst unregister = nested?.registerClear();\nonBeforeUnmount(() => unregister?.());\nfunction clear() {\n if (context && !context.disabled.value && !context.empty.value) context.clear();\n}\n</script>\n<template>\n <span\n v-if=\"nested\"\n class=\"selection__clear\"\n aria-hidden=\"true\"\n :data-empty=\"context.empty.value || undefined\"\n :data-disabled=\"context.disabled.value || undefined\"\n @pointerdown.stop.prevent\n @click.stop.prevent=\"clear\"\n ><slot><CloseIcon class=\"selection__close-icon\" /></slot\n ></span>\n <button\n v-else\n type=\"button\"\n class=\"selection__clear\"\n aria-label=\"Hapus pilihan / Clear selection\"\n :disabled=\"context.disabled.value || context.empty.value\"\n :data-empty=\"context.empty.value || undefined\"\n @click=\"clear\"\n >\n <slot><CloseIcon class=\"selection__close-icon\" /></slot>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount } from 'vue';\nimport CloseIcon from './CloseIcon.vue';\nimport { selectCompositionKey, selectTriggerCompositionKey } from './select-composition-context.js';\nconst context = inject(selectCompositionKey, undefined);\nif (!context) throw new Error('SelectClearButton must be inside SelectRoot.');\nconst nested = inject(selectTriggerCompositionKey, undefined);\nconst unregister = nested?.registerClear();\nonBeforeUnmount(() => unregister?.());\nfunction clear() {\n if (context && !context.disabled.value && !context.empty.value) context.clear();\n}\n</script>\n<template>\n <span\n v-if=\"nested\"\n class=\"selection__clear\"\n aria-hidden=\"true\"\n :data-empty=\"context.empty.value || undefined\"\n :data-disabled=\"context.disabled.value || undefined\"\n @pointerdown.stop.prevent\n @click.stop.prevent=\"clear\"\n ><slot><CloseIcon class=\"selection__close-icon\" /></slot\n ></span>\n <button\n v-else\n type=\"button\"\n class=\"selection__clear\"\n aria-label=\"Hapus pilihan / Clear selection\"\n :disabled=\"context.disabled.value || context.empty.value\"\n :data-empty=\"context.empty.value || undefined\"\n @click=\"clear\"\n >\n <slot><CloseIcon class=\"selection__close-icon\" /></slot>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { SelectPortal, SelectContent } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\n</script>\n<template>\n <SelectPortal\n ><SelectContent position=\"popper\" :side-offset=\"4\" v-bind=\"$attrs\" class=\"select__popover\"\n ><slot /></SelectContent\n ></SelectPortal>\n</template>\n","<script setup lang=\"ts\">\nimport { SelectPortal, SelectContent } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\n</script>\n<template>\n <SelectPortal\n ><SelectContent position=\"popper\" :side-offset=\"4\" v-bind=\"$attrs\" class=\"select__popover\"\n ><slot /></SelectContent\n ></SelectPortal>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport { inputCompositionKey } from './input-composition-context.js';\nconst context = inject(inputCompositionKey, undefined);\n</script>\n<template>\n <Label :for=\"context?.id\" class=\"input__label\"><slot /></Label>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport { inputCompositionKey } from './input-composition-context.js';\nconst context = inject(inputCompositionKey, undefined);\n</script>\n<template>\n <Label :for=\"context?.id\" class=\"input__label\"><slot /></Label>\n</template>\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { TableSort } from './data-table-types.js';\nexport interface DataTableCompositionContext {\n sort: ComputedRef<TableSort | null | undefined>;\n busy: ComputedRef<boolean>;\n requestSort(columnId: string): void;\n}\nexport const dataTableCompositionKey: InjectionKey<DataTableCompositionContext> = Symbol(\n 'KazeeDataTableComposition',\n);\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport type { TableSort } from './data-table-types.js';\nimport { dataTableCompositionKey } from './data-table-composition-context.js';\nconst props = defineProps<{ sort?: TableSort | null; loading?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nprovide(dataTableCompositionKey, {\n sort: computed(() => props.sort),\n busy: computed(() => !!(props.loading || props.disabled)),\n requestSort(columnId) {\n if (props.loading || props.disabled) return;\n emit('update:sort', {\n columnId,\n direction:\n props.sort?.columnId === columnId && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n },\n});\n</script>\n<template>\n <div class=\"data-table\" :aria-busy=\"loading || undefined\">\n <slot :sort=\"sort\" :loading=\"!!loading\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue';\nimport type { TableSort } from './data-table-types.js';\nimport { dataTableCompositionKey } from './data-table-composition-context.js';\nconst props = defineProps<{ sort?: TableSort | null; loading?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nprovide(dataTableCompositionKey, {\n sort: computed(() => props.sort),\n busy: computed(() => !!(props.loading || props.disabled)),\n requestSort(columnId) {\n if (props.loading || props.disabled) return;\n emit('update:sort', {\n columnId,\n direction:\n props.sort?.columnId === columnId && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n },\n});\n</script>\n<template>\n <div class=\"data-table\" :aria-busy=\"loading || undefined\">\n <slot :sort=\"sort\" :loading=\"!!loading\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { dataTableCompositionKey } from './data-table-composition-context.js';\nconst props = defineProps<{ columnId: string }>();\nconst context = inject(dataTableCompositionKey, undefined);\nif (!context) throw new Error('DataTableSortButton must be inside DataTableRoot.');\nconst direction = computed(() =>\n context.sort.value?.columnId === props.columnId ? context.sort.value.direction : undefined,\n);\n</script>\n<template>\n <button\n type=\"button\"\n class=\"table__sort\"\n :disabled=\"context.busy.value\"\n @click=\"context.requestSort(columnId)\"\n >\n <slot :direction=\"direction\" />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { dataTableCompositionKey } from './data-table-composition-context.js';\nconst props = defineProps<{ columnId: string }>();\nconst context = inject(dataTableCompositionKey, undefined);\nif (!context) throw new Error('DataTableSortButton must be inside DataTableRoot.');\nconst direction = computed(() =>\n context.sort.value?.columnId === props.columnId ? context.sort.value.direction : undefined,\n);\n</script>\n<template>\n <button\n type=\"button\"\n class=\"table__sort\"\n :disabled=\"context.busy.value\"\n @click=\"context.requestSort(columnId)\"\n >\n <slot :direction=\"direction\" />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst context = inject(sidebarCompositionKey, undefined);\nif (!context) throw new Error('SidebarToggle must be inside SidebarRoot.');\n</script>\n<template>\n <button\n type=\"button\"\n class=\"sidebar__toggle\"\n :aria-expanded=\"context.open.value\"\n :aria-controls=\"context.id\"\n @click=\"context.toggle()\"\n >\n <slot :open=\"context.open.value\">Menu navigasi / Toggle navigation</slot>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst context = inject(sidebarCompositionKey, undefined);\nif (!context) throw new Error('SidebarToggle must be inside SidebarRoot.');\n</script>\n<template>\n <button\n type=\"button\"\n class=\"sidebar__toggle\"\n :aria-expanded=\"context.open.value\"\n :aria-controls=\"context.id\"\n @click=\"context.toggle()\"\n >\n <slot :open=\"context.open.value\">Menu navigasi / Toggle navigation</slot>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst context = inject(sidebarCompositionKey, undefined);\nif (!context) throw new Error('SidebarNavigation must be inside SidebarRoot.');\n</script>\n<template>\n <nav :id=\"context.id\" :hidden=\"!context.open.value\"><slot /></nav>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { sidebarCompositionKey } from './sidebar-composition-context.js';\nconst context = inject(sidebarCompositionKey, undefined);\nif (!context) throw new Error('SidebarNavigation must be inside SidebarRoot.');\n</script>\n<template>\n <nav :id=\"context.id\" :hidden=\"!context.open.value\"><slot /></nav>\n</template>\n","import ToastCompact from './Toast.vue';\nimport { h } from 'vue';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport * as Reka from 'reka-ui';\nimport { styledPrimitive, contentPart } from './composition-factory.js';\n\nexport { default as SelectValue } from './SelectValue.vue';\nexport const SelectIndicator: typeof Reka.SelectIcon = /* @__PURE__ */ styledPrimitive(\n Reka.SelectIcon,\n 'SelectIndicator',\n 'select__icon',\n () => h(ChevronIcon),\n);\nexport const SelectListbox: typeof Reka.SelectViewport = /* @__PURE__ */ styledPrimitive(\n Reka.SelectViewport,\n 'SelectListbox',\n 'select__list',\n);\nexport const SelectItem: typeof Reka.SelectItem = /* @__PURE__ */ styledPrimitive(\n Reka.SelectItem,\n 'SelectItem',\n 'select__item',\n);\nexport const SelectItemText: typeof Reka.SelectItemText = /* @__PURE__ */ styledPrimitive(\n Reka.SelectItemText,\n 'SelectItemText',\n 'select__item-label',\n);\nexport const SelectItemIndicator: typeof Reka.SelectItemIndicator = /* @__PURE__ */ styledPrimitive(\n Reka.SelectItemIndicator,\n 'SelectItemIndicator',\n 'select__check',\n () => h(CheckIcon),\n);\nexport const SelectSection: typeof Reka.SelectGroup = /* @__PURE__ */ styledPrimitive(\n Reka.SelectGroup,\n 'SelectSection',\n 'select__section',\n);\nexport const SelectSectionLabel: typeof Reka.SelectLabel = /* @__PURE__ */ styledPrimitive(\n Reka.SelectLabel,\n 'SelectSectionLabel',\n 'select__label',\n);\nexport const TabsRoot: typeof Reka.TabsRoot = /* @__PURE__ */ styledPrimitive(\n Reka.TabsRoot,\n 'TabsRoot',\n 'tabs tabs--primary',\n);\nexport const TabsList: typeof Reka.TabsList = /* @__PURE__ */ styledPrimitive(\n Reka.TabsList,\n 'TabsList',\n 'tabs__list',\n);\nexport const TabsTab: typeof Reka.TabsTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.TabsTrigger,\n 'TabsTab',\n 'tabs__trigger',\n);\nexport const TabsPanel: typeof Reka.TabsContent = /* @__PURE__ */ styledPrimitive(\n Reka.TabsContent,\n 'TabsPanel',\n 'tabs__panel',\n);\nexport const TabsIndicator: typeof Reka.TabsIndicator = /* @__PURE__ */ styledPrimitive(\n Reka.TabsIndicator,\n 'TabsIndicator',\n 'tabs__indicator',\n);\nexport const ListboxRoot: typeof Reka.ListboxRoot = /* @__PURE__ */ styledPrimitive(\n Reka.ListboxRoot,\n 'ListboxRoot',\n 'listbox',\n);\nexport const ListboxContent: typeof Reka.ListboxContent = /* @__PURE__ */ styledPrimitive(\n Reka.ListboxContent,\n 'ListboxContent',\n 'listbox__list',\n);\nexport const ListboxItem: typeof Reka.ListboxItem = /* @__PURE__ */ styledPrimitive(\n Reka.ListboxItem,\n 'ListboxItem',\n 'listbox__item',\n);\nexport const ListboxItemIndicator: typeof Reka.ListboxItemIndicator =\n /* @__PURE__ */ styledPrimitive(\n Reka.ListboxItemIndicator,\n 'ListboxItemIndicator',\n 'listbox__check',\n () => h(CheckIcon),\n );\nexport const ListboxSection: typeof Reka.ListboxGroup = /* @__PURE__ */ styledPrimitive(\n Reka.ListboxGroup,\n 'ListboxSection',\n 'listbox__section',\n);\nexport const ListboxSectionLabel: typeof Reka.ListboxGroupLabel = /* @__PURE__ */ styledPrimitive(\n Reka.ListboxGroupLabel,\n 'ListboxSectionLabel',\n 'label',\n);\nexport const CheckboxRoot: typeof Reka.CheckboxRoot = /* @__PURE__ */ styledPrimitive(\n Reka.CheckboxRoot,\n 'CheckboxRoot',\n 'checkbox__control',\n);\nexport { default as CheckboxIndicator } from './CheckboxIndicator.vue';\nexport const SwitchRoot: typeof Reka.SwitchRoot = /* @__PURE__ */ styledPrimitive(\n Reka.SwitchRoot,\n 'SwitchRoot',\n 'switch__control',\n);\nexport const SwitchThumb: typeof Reka.SwitchThumb = /* @__PURE__ */ styledPrimitive(\n Reka.SwitchThumb,\n 'SwitchThumb',\n 'switch__thumb',\n);\nexport const RadioGroupRoot: typeof Reka.RadioGroupRoot = /* @__PURE__ */ styledPrimitive(\n Reka.RadioGroupRoot,\n 'RadioGroupRoot',\n 'radio-group',\n);\nexport const RadioGroupItem: typeof Reka.RadioGroupItem = /* @__PURE__ */ styledPrimitive(\n Reka.RadioGroupItem,\n 'RadioGroupItem',\n 'radio__control',\n);\nexport const RadioGroupIndicator: typeof Reka.RadioGroupIndicator = /* @__PURE__ */ styledPrimitive(\n Reka.RadioGroupIndicator,\n 'RadioGroupIndicator',\n 'radio__dot',\n);\nexport const NumberFieldRoot: typeof Reka.NumberFieldRoot = /* @__PURE__ */ styledPrimitive(\n Reka.NumberFieldRoot,\n 'NumberFieldRoot',\n 'input number-field',\n);\nexport const NumberFieldInput: typeof Reka.NumberFieldInput = /* @__PURE__ */ styledPrimitive(\n Reka.NumberFieldInput,\n 'NumberFieldInput',\n 'number-field__control',\n);\nexport const NumberFieldIncrementButton: typeof Reka.NumberFieldIncrement =\n /* @__PURE__ */ styledPrimitive(\n Reka.NumberFieldIncrement,\n 'NumberFieldIncrementButton',\n 'number-field__step',\n );\nexport const NumberFieldDecrementButton: typeof Reka.NumberFieldDecrement =\n /* @__PURE__ */ styledPrimitive(\n Reka.NumberFieldDecrement,\n 'NumberFieldDecrementButton',\n 'number-field__step',\n );\nexport const ComboboxRoot: typeof Reka.ComboboxRoot = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxRoot,\n 'ComboboxRoot',\n 'select combobox',\n);\nexport const ComboboxInput: typeof Reka.ComboboxInput = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxInput,\n 'ComboboxInput',\n 'combobox__control',\n);\nexport const ComboboxTrigger: typeof Reka.ComboboxTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxTrigger,\n 'ComboboxTrigger',\n 'combobox__toggle',\n);\nexport const ComboboxContent: typeof Reka.ComboboxContent = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxContent,\n 'ComboboxContent',\n 'select__popover',\n);\nexport const ComboboxItem: typeof Reka.ComboboxItem = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxItem,\n 'ComboboxItem',\n 'select__item',\n);\nexport const ComboboxItemIndicator: typeof Reka.ComboboxItemIndicator =\n /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxItemIndicator,\n 'ComboboxItemIndicator',\n 'select__check',\n () => h(CheckIcon),\n );\nexport const ComboboxSection: typeof Reka.ComboboxGroup = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxGroup,\n 'ComboboxSection',\n 'select__section',\n);\nexport const ComboboxSectionLabel: typeof Reka.ComboboxLabel = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxLabel,\n 'ComboboxSectionLabel',\n 'select__label',\n);\nexport const ComboboxAnchor: typeof Reka.ComboboxAnchor = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxAnchor,\n 'ComboboxAnchor',\n 'combobox__group',\n);\nexport const ComboboxClearButton: typeof Reka.ComboboxCancel = /* @__PURE__ */ styledPrimitive(\n Reka.ComboboxCancel,\n 'ComboboxClearButton',\n 'combobox__clear',\n);\nexport const DialogTrigger: typeof Reka.DialogTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.DialogTrigger,\n 'DialogTrigger',\n 'button button--secondary',\n);\nexport const DialogBackdrop: typeof Reka.DialogOverlay = /* @__PURE__ */ styledPrimitive(\n Reka.DialogOverlay,\n 'DialogBackdrop',\n 'dialog__backdrop dialog__viewport',\n);\nexport const DialogContent: typeof Reka.DialogContent = /* @__PURE__ */ styledPrimitive(\n Reka.DialogContent,\n 'DialogContent',\n 'dialog__panel dialog__content',\n);\nexport const DialogTitle: typeof Reka.DialogTitle = /* @__PURE__ */ styledPrimitive(\n Reka.DialogTitle,\n 'DialogTitle',\n 'overlay__title',\n);\nexport const DialogDescription: typeof Reka.DialogDescription = /* @__PURE__ */ styledPrimitive(\n Reka.DialogDescription,\n 'DialogDescription',\n 'overlay__description',\n);\nexport const DialogCloseButton: typeof Reka.DialogClose = /* @__PURE__ */ styledPrimitive(\n Reka.DialogClose,\n 'DialogCloseButton',\n 'dialog__close',\n);\nexport const PopoverTrigger: typeof Reka.PopoverTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.PopoverTrigger,\n 'PopoverTrigger',\n 'button button--secondary',\n);\nexport const PopoverContent: typeof Reka.PopoverContent = /* @__PURE__ */ styledPrimitive(\n Reka.PopoverContent,\n 'PopoverContent',\n 'popover__panel popover__content',\n);\nexport const PopoverArrow: typeof Reka.PopoverArrow = /* @__PURE__ */ styledPrimitive(\n Reka.PopoverArrow,\n 'PopoverArrow',\n 'popover__arrow',\n);\nexport const PopoverCloseButton: typeof Reka.PopoverClose = /* @__PURE__ */ styledPrimitive(\n Reka.PopoverClose,\n 'PopoverCloseButton',\n 'popover__close',\n);\nexport const TooltipTrigger: typeof Reka.TooltipTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.TooltipTrigger,\n 'TooltipTrigger',\n '',\n);\nexport const TooltipContent: typeof Reka.TooltipContent = /* @__PURE__ */ styledPrimitive(\n Reka.TooltipContent,\n 'TooltipContent',\n 'tooltip__panel',\n);\nexport const TooltipArrow: typeof Reka.TooltipArrow = /* @__PURE__ */ styledPrimitive(\n Reka.TooltipArrow,\n 'TooltipArrow',\n 'tooltip__arrow',\n);\nexport const DropdownMenuTrigger: typeof Reka.DropdownMenuTrigger = /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuTrigger,\n 'DropdownMenuTrigger',\n 'button button--secondary',\n);\nexport const DropdownMenuContent: typeof Reka.DropdownMenuContent = /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuContent,\n 'DropdownMenuContent',\n 'menu__panel menu__list',\n);\nexport const DropdownMenuItem: typeof Reka.DropdownMenuItem = /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuItem,\n 'DropdownMenuItem',\n 'menu__item',\n);\nexport const DropdownMenuItemIndicator: typeof Reka.DropdownMenuItemIndicator =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuItemIndicator,\n 'DropdownMenuItemIndicator',\n 'menu__indicator',\n () => h(CheckIcon),\n );\nexport const DropdownMenuSection: typeof Reka.DropdownMenuGroup = /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuGroup,\n 'DropdownMenuSection',\n 'menu__section',\n);\nexport const DropdownMenuSectionLabel: typeof Reka.DropdownMenuLabel =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuLabel,\n 'DropdownMenuSectionLabel',\n 'menu__heading',\n );\nexport const DropdownMenuSeparator: typeof Reka.DropdownMenuSeparator =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuSeparator,\n 'DropdownMenuSeparator',\n 'menu__separator',\n );\nexport const DropdownMenuCheckboxItem: typeof Reka.DropdownMenuCheckboxItem =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuCheckboxItem,\n 'DropdownMenuCheckboxItem',\n 'menu__item',\n );\nexport const DropdownMenuRadioGroup: typeof Reka.DropdownMenuRadioGroup =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuRadioGroup,\n 'DropdownMenuRadioGroup',\n 'menu__group',\n );\nexport const DropdownMenuRadioItem: typeof Reka.DropdownMenuRadioItem =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuRadioItem,\n 'DropdownMenuRadioItem',\n 'menu__item',\n );\nexport const DropdownMenuSubTrigger: typeof Reka.DropdownMenuSubTrigger =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuSubTrigger,\n 'DropdownMenuSubTrigger',\n 'menu__item',\n );\nexport const DropdownMenuSubContent: typeof Reka.DropdownMenuSubContent =\n /* @__PURE__ */ styledPrimitive(\n Reka.DropdownMenuSubContent,\n 'DropdownMenuSubContent',\n 'menu__panel menu__list',\n );\nexport const PaginationRoot: typeof Reka.PaginationRoot = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationRoot,\n 'PaginationRoot',\n 'pagination',\n);\nexport const PaginationList: typeof Reka.PaginationList = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationList,\n 'PaginationList',\n 'pagination__list',\n);\nexport const PaginationItem: typeof Reka.PaginationListItem = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationListItem,\n 'PaginationItem',\n 'pagination__button',\n);\nexport const PaginationPrevious: typeof Reka.PaginationPrev = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationPrev,\n 'PaginationPrevious',\n 'pagination__button',\n);\nexport const PaginationNext: typeof Reka.PaginationNext = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationNext,\n 'PaginationNext',\n 'pagination__button',\n);\nexport const PaginationFirst: typeof Reka.PaginationFirst = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationFirst,\n 'PaginationFirst',\n 'pagination__button',\n);\nexport const PaginationLast: typeof Reka.PaginationLast = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationLast,\n 'PaginationLast',\n 'pagination__button',\n);\nexport const PaginationEllipsis: typeof Reka.PaginationEllipsis = /* @__PURE__ */ styledPrimitive(\n Reka.PaginationEllipsis,\n 'PaginationEllipsis',\n 'pagination__gap',\n);\nexport const ToastRoot: typeof ToastCompact = /* @__PURE__ */ styledPrimitive(\n ToastCompact,\n 'ToastRoot',\n '',\n undefined,\n { composed: true },\n);\nexport const ToastTitle: typeof Reka.ToastTitle = /* @__PURE__ */ styledPrimitive(\n Reka.ToastTitle,\n 'ToastTitle',\n 'toast__title',\n);\nexport const ToastDescription: typeof Reka.ToastDescription = /* @__PURE__ */ styledPrimitive(\n Reka.ToastDescription,\n 'ToastDescription',\n 'toast__description',\n);\nexport { default as ToastCloseButton } from './ToastCloseButton.vue';\nexport { default as ToastActionButton } from './ToastActionButton.vue';\nexport const ToastViewport: typeof Reka.ToastViewport = /* @__PURE__ */ styledPrimitive(\n Reka.ToastViewport,\n 'ToastViewport',\n 'toast-list',\n);\nexport const CardRoot = /* @__PURE__ */ contentPart('CardRoot', 'div', 'card');\nexport const CardHeader = /* @__PURE__ */ contentPart('CardHeader', 'div', 'card__header');\nexport const CardHeading = /* @__PURE__ */ contentPart('CardHeading', 'div', 'card__heading');\nexport const CardTitle = /* @__PURE__ */ contentPart('CardTitle', 'h3', 'card__title');\nexport const CardDescription = /* @__PURE__ */ contentPart(\n 'CardDescription',\n 'p',\n 'card__description',\n);\nexport const CardContent = /* @__PURE__ */ contentPart('CardContent', 'div', 'card__content');\nexport const CardFooter = /* @__PURE__ */ contentPart('CardFooter', 'div', 'card__footer');\nexport const CardActions = /* @__PURE__ */ contentPart('CardActions', 'div', 'card__actions');\nexport const SelectControl = /* @__PURE__ */ contentPart('SelectControl', 'div', 'select__control');\nexport { default as Description } from './Description.vue';\nexport { default as FieldError } from './FieldError.vue';\nexport { default as InputRoot } from './InputRoot.vue';\nexport const InputGroup = /* @__PURE__ */ contentPart('InputGroup', 'div', 'input__group');\nexport { default as InputControl } from './InputControl.vue';\nexport const InputPrefix = /* @__PURE__ */ contentPart('InputPrefix', 'span', 'input__prefix');\nexport const InputSuffix = /* @__PURE__ */ contentPart('InputSuffix', 'span', 'input__suffix');\nexport { default as TextareaControl } from './TextareaControl.vue';\nexport const NumberFieldGroup = /* @__PURE__ */ contentPart(\n 'NumberFieldGroup',\n 'div',\n 'number-field__group',\n);\nexport const CheckboxContent = /* @__PURE__ */ contentPart('CheckboxContent', 'div', 'choice');\nexport const SwitchContent = /* @__PURE__ */ contentPart('SwitchContent', 'div', 'choice');\nexport const SwitchIcon = /* @__PURE__ */ contentPart('SwitchIcon', 'span', 'switch__icon');\nexport const RadioGroupContent = /* @__PURE__ */ contentPart('RadioGroupContent', 'div', 'choice');\nexport const AlertRoot = /* @__PURE__ */ contentPart('AlertRoot', 'div', 'alert');\nexport const AlertTitle = /* @__PURE__ */ contentPart('AlertTitle', 'p', 'alert__title');\nexport const AlertDescription = /* @__PURE__ */ contentPart(\n 'AlertDescription',\n 'p',\n 'alert__description',\n);\nexport const AlertContent = /* @__PURE__ */ contentPart('AlertContent', 'div', 'alert__content');\nexport const AlertIndicator = /* @__PURE__ */ contentPart(\n 'AlertIndicator',\n 'span',\n 'alert__indicator',\n);\nexport const AlertActions = /* @__PURE__ */ contentPart('AlertActions', 'div', 'alert__actions');\nexport const BreadcrumbRoot = /* @__PURE__ */ contentPart('BreadcrumbRoot', 'nav', 'breadcrumb');\nexport const BreadcrumbList = /* @__PURE__ */ contentPart(\n 'BreadcrumbList',\n 'ol',\n 'breadcrumb__list',\n);\nexport const BreadcrumbItem = /* @__PURE__ */ contentPart(\n 'BreadcrumbItem',\n 'li',\n 'breadcrumb__item',\n);\nexport const BreadcrumbLink = /* @__PURE__ */ contentPart(\n 'BreadcrumbLink',\n 'a',\n 'breadcrumb__link',\n);\nexport const BreadcrumbSeparator = /* @__PURE__ */ contentPart(\n 'BreadcrumbSeparator',\n 'span',\n 'breadcrumb__separator',\n { 'aria-hidden': 'true' },\n);\nexport const TableRoot = /* @__PURE__ */ contentPart('TableRoot', 'table', 'table');\nexport const TableScrollContainer = /* @__PURE__ */ contentPart(\n 'TableScrollContainer',\n 'div',\n 'table__scroll',\n);\nexport const TableCaption = /* @__PURE__ */ contentPart(\n 'TableCaption',\n 'caption',\n 'table__caption',\n);\nexport const TableHeader = /* @__PURE__ */ contentPart('TableHeader', 'thead', 'table__head');\nexport const TableBody = /* @__PURE__ */ contentPart('TableBody', 'tbody', 'table__body');\nexport const TableFooter = /* @__PURE__ */ contentPart('TableFooter', 'tfoot', 'table__foot');\nexport const TableRow = /* @__PURE__ */ contentPart('TableRow', 'tr', 'table__row');\nexport const TableColumn = /* @__PURE__ */ contentPart('TableColumn', 'th', 'table__header', {\n scope: 'col',\n});\nexport const TableCell = /* @__PURE__ */ contentPart('TableCell', 'td', 'table__cell');\nexport const DialogHeader = /* @__PURE__ */ contentPart('DialogHeader', 'div', 'overlay__header');\nexport const DialogBody = /* @__PURE__ */ contentPart('DialogBody', 'div', 'overlay__body');\nexport const DialogFooter = /* @__PURE__ */ contentPart('DialogFooter', 'div', 'overlay__footer');\nexport const PopoverHeading = /* @__PURE__ */ contentPart('PopoverHeading', 'h2', 'overlay__title');\nexport const PopoverBody = /* @__PURE__ */ contentPart('PopoverBody', 'div', 'overlay__body');\nexport const PopoverFooter = /* @__PURE__ */ contentPart('PopoverFooter', 'div', 'overlay__footer');\nexport const ToastContent = /* @__PURE__ */ contentPart('ToastContent', 'div', 'toast__body');\nexport const ToastIndicator = /* @__PURE__ */ contentPart(\n 'ToastIndicator',\n 'span',\n 'toast__indicator',\n { 'aria-hidden': 'true' },\n);\nexport const ToastActions = /* @__PURE__ */ contentPart('ToastActions', 'div', 'toast__actions');\nexport const ToastProgress = /* @__PURE__ */ contentPart(\n 'ToastProgress',\n 'span',\n 'toast__progress',\n { 'aria-hidden': 'true' },\n);\nexport const TabsListContainer = /* @__PURE__ */ contentPart(\n 'TabsListContainer',\n 'div',\n 'tabs__list-container',\n);\nexport const TabsSeparator = /* @__PURE__ */ contentPart(\n 'TabsSeparator',\n 'span',\n 'tabs__separator',\n { 'aria-hidden': 'true' },\n);\nexport const PaginationContent = /* @__PURE__ */ contentPart(\n 'PaginationContent',\n 'div',\n 'pagination__list',\n);\nexport const PaginationSummary = /* @__PURE__ */ contentPart(\n 'PaginationSummary',\n 'p',\n 'pagination__summary',\n);\nexport { default as SidebarRoot } from './SidebarRoot.vue';\nexport const SidebarHeader = /* @__PURE__ */ contentPart(\n 'SidebarHeader',\n 'header',\n 'sidebar__header',\n);\nexport const SidebarContent = /* @__PURE__ */ contentPart('SidebarContent', 'nav', 'sidebar__nav');\nexport const SidebarItem = /* @__PURE__ */ contentPart('SidebarItem', 'a', 'sidebar__link');\nexport const SidebarFooter = /* @__PURE__ */ contentPart(\n 'SidebarFooter',\n 'footer',\n 'sidebar__footer',\n);\nexport const EmptyRoot = /* @__PURE__ */ contentPart('EmptyRoot', 'div', 'empty');\nexport const EmptyTitle = /* @__PURE__ */ contentPart('EmptyTitle', 'p', 'empty__title');\nexport const EmptyDescription = /* @__PURE__ */ contentPart(\n 'EmptyDescription',\n 'p',\n 'empty__description',\n);\nexport const EmptyActions = /* @__PURE__ */ contentPart('EmptyActions', 'div', 'empty__actions');\nexport const ChartRoot = /* @__PURE__ */ contentPart('ChartRoot', 'figure', 'chart');\nexport const ChartTitle = /* @__PURE__ */ contentPart('ChartTitle', 'figcaption', 'chart__title');\nexport const ChartDescription = /* @__PURE__ */ contentPart(\n 'ChartDescription',\n 'p',\n 'chart__description',\n);\nexport const BadgeLabel = /* @__PURE__ */ contentPart('BadgeLabel', 'span', 'badge__label');\nexport const BadgeAnchor = /* @__PURE__ */ contentPart('BadgeAnchor', 'span', 'badge__anchor');\nexport const DialogRoot = Reka.DialogRoot;\nexport const DialogPortal = Reka.DialogPortal;\nexport const PopoverRoot = Reka.PopoverRoot;\nexport const PopoverPortal = Reka.PopoverPortal;\nexport const TooltipRoot = Reka.TooltipRoot;\nexport const TooltipPortal = Reka.TooltipPortal;\nexport const TooltipProvider = Reka.TooltipProvider;\nexport const DropdownMenuRoot = Reka.DropdownMenuRoot;\nexport const DropdownMenuPortal = Reka.DropdownMenuPortal;\nexport const DropdownMenuSub = Reka.DropdownMenuSub;\nexport const ComboboxPortal = Reka.ComboboxPortal;\nexport { default as SelectRoot } from './SelectRoot.vue';\nexport { default as SelectTrigger } from './SelectTrigger.vue';\nexport { default as SelectClearButton } from './SelectClearButton.vue';\nexport { default as SelectPopover } from './SelectPopover.vue';\nexport { default as InputLabel } from './InputLabel.vue';\nexport const DateRangePickerRoot: typeof Reka.DateRangePickerRoot = /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerRoot,\n 'DateRangePickerRoot',\n 'date-range',\n);\nexport const DateRangePickerAnchor: typeof Reka.DateRangePickerAnchor =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerAnchor,\n 'DateRangePickerAnchor',\n 'date-range__control',\n );\nexport const DateRangePickerTrigger: typeof Reka.DateRangePickerTrigger =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerTrigger,\n 'DateRangePickerTrigger',\n 'date-range__trigger',\n );\nexport const DateRangePickerContent: typeof Reka.DateRangePickerContent =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerContent,\n 'DateRangePickerContent',\n 'date-range__panel date-range__dialog',\n );\nexport const DateRangePickerField: typeof Reka.DateRangePickerField =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerField,\n 'DateRangePickerField',\n 'date-range__field',\n );\nexport const DateRangePickerInput: typeof Reka.DateRangePickerInput =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerInput,\n 'DateRangePickerInput',\n 'date-range__input',\n );\nexport const DateRangePickerCalendar: typeof Reka.DateRangePickerCalendar =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerCalendar,\n 'DateRangePickerCalendar',\n 'date-range__calendar',\n );\nexport const DateRangePickerHeader: typeof Reka.DateRangePickerHeader =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerHeader,\n 'DateRangePickerHeader',\n 'date-range__navigation',\n );\nexport const DateRangePickerHeading: typeof Reka.DateRangePickerHeading =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerHeading,\n 'DateRangePickerHeading',\n 'date-range__heading',\n );\nexport const DateRangePickerPrev: typeof Reka.DateRangePickerPrev = /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerPrev,\n 'DateRangePickerPrev',\n 'date-range__nav',\n);\nexport const DateRangePickerNext: typeof Reka.DateRangePickerNext = /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerNext,\n 'DateRangePickerNext',\n 'date-range__nav',\n);\nexport const DateRangePickerGrid: typeof Reka.DateRangePickerGrid = /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerGrid,\n 'DateRangePickerGrid',\n 'date-range__grid',\n);\nexport const DateRangePickerGridHead: typeof Reka.DateRangePickerGridHead =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerGridHead,\n 'DateRangePickerGridHead',\n 'date-range__grid-head',\n );\nexport const DateRangePickerGridBody: typeof Reka.DateRangePickerGridBody =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerGridBody,\n 'DateRangePickerGridBody',\n 'date-range__grid-body',\n );\nexport const DateRangePickerGridRow: typeof Reka.DateRangePickerGridRow =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerGridRow,\n 'DateRangePickerGridRow',\n 'date-range__grid-row',\n );\nexport const DateRangePickerHeadCell: typeof Reka.DateRangePickerHeadCell =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerHeadCell,\n 'DateRangePickerHeadCell',\n 'date-range__weekday',\n );\nexport const DateRangePickerCell: typeof Reka.DateRangePickerCell = /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerCell,\n 'DateRangePickerCell',\n 'date-range__cell',\n);\nexport const DateRangePickerCellTrigger: typeof Reka.DateRangePickerCellTrigger =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerCellTrigger,\n 'DateRangePickerCellTrigger',\n 'date-range__day',\n );\nexport const DateRangePickerClose: typeof Reka.DateRangePickerClose =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerClose,\n 'DateRangePickerClose',\n 'date-range__cancel',\n );\nexport const DateRangePickerArrow: typeof Reka.DateRangePickerArrow =\n /* @__PURE__ */ styledPrimitive(\n Reka.DateRangePickerArrow,\n 'DateRangePickerArrow',\n 'date-range__arrow',\n );\nexport const Header = /* @__PURE__ */ contentPart('Header', 'span', 'select__label');\n\nexport { default as DataTableRoot } from './DataTableRoot.vue';\nexport { default as DataTableSortButton } from './DataTableSortButton.vue';\nexport { default as SidebarToggle } from './SidebarToggle.vue';\nexport { default as SidebarNavigation } from './SidebarNavigation.vue';\nexport const DataTableStatus = /* @__PURE__ */ contentPart(\n 'DataTableStatus',\n 'p',\n 'data-table__status',\n { role: 'status' },\n);\nexport const DataTableError = /* @__PURE__ */ contentPart('DataTableError', 'p', 'input__error', {\n role: 'alert',\n});\nexport const SidebarTitle = /* @__PURE__ */ contentPart('SidebarTitle', 'span', 'sidebar__title');\nexport const SidebarList = /* @__PURE__ */ contentPart('SidebarList', 'ul', 'sidebar__list');\nexport const BreadcrumbCurrent = /* @__PURE__ */ contentPart(\n 'BreadcrumbCurrent',\n 'span',\n 'breadcrumb__current',\n { 'aria-current': 'page' },\n);\nexport const ToggleGroupRoot: typeof Reka.ToggleGroupRoot = /* @__PURE__ */ styledPrimitive(\n Reka.ToggleGroupRoot,\n 'ToggleGroupRoot',\n 'toggle-group',\n);\nexport const ToggleGroupItem: typeof Reka.ToggleGroupItem = /* @__PURE__ */ styledPrimitive(\n Reka.ToggleGroupItem,\n 'ToggleGroupItem',\n 'toggle-button',\n);\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, watch } from 'vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Accessible name for icon-only buttons. */\n ariaLabel?: string;\n /** ID of an element supplying the accessible name. */\n ariaLabelledby?: string;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Disables the button. Vue uses `disabled`, where the React package uses `isDisabled`. */\n disabled?: boolean;\n /** Square icon button; supply aria-label or aria-labelledby. */\n iconOnly?: boolean;\n /** Blocks actions while retaining keyboard focus. */\n pending?: boolean;\n }\n >(),\n {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n type: 'button',\n disabled: false,\n iconOnly: false,\n pending: false,\n },\n);\n\ndefineSlots<{\n default?: (state: {\n pending: boolean;\n disabled: boolean;\n hovered: boolean;\n pressed: boolean;\n focused: boolean;\n focusVisible: boolean;\n }) => unknown;\n}>();\n\nconst hovered = ref(false),\n pressed = ref(false),\n focused = ref(false),\n focusVisible = ref(false);\nwatch(\n () => [props.disabled, props.pending],\n ([disabled, pending]) => {\n if (disabled || pending) {\n hovered.value = false;\n pressed.value = false;\n }\n if (props.disabled) {\n focused.value = false;\n focusVisible.value = false;\n }\n },\n);\nfunction hover(event: PointerEvent) {\n if (!props.disabled && !props.pending && event.pointerType !== 'touch') hovered.value = true;\n}\nfunction pointerdown(event: PointerEvent) {\n focusVisible.value = false;\n if (!props.disabled && !props.pending && event.button === 0) pressed.value = true;\n}\nfunction leave() {\n hovered.value = false;\n pressed.value = false;\n}\nfunction focus(event: FocusEvent) {\n focused.value = true;\n focusVisible.value = (event.target as HTMLButtonElement).matches(':focus-visible');\n}\nfunction blur() {\n focused.value = false;\n focusVisible.value = false;\n pressed.value = false;\n}\n\nconst emit = defineEmits<{\n /** Emitted when the button is clicked. Listen with `@press`, where React uses `onPress`. */\n press: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n 'button',\n `button--${props.variant}`,\n props.size !== 'md' && `button--${props.size}`,\n props.iconOnly && 'button--icon-only',\n props.fullWidth && !props.iconOnly && 'button--full-width',\n]);\nfunction press(event: MouseEvent) {\n if (props.disabled || props.pending) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n emit('press', event);\n}\nfunction keydown(event: KeyboardEvent) {\n if (focused.value) focusVisible.value = true;\n if (props.pending && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n if (!props.disabled && (event.key === 'Enter' || event.key === ' ')) pressed.value = true;\n}\n</script>\n\n<template>\n <button\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :type=\"pending ? 'button' : type\"\n :disabled=\"disabled\"\n :aria-disabled=\"pending || undefined\"\n :data-pending=\"pending || undefined\"\n @click=\"press\"\n @keydown=\"keydown\"\n @keyup=\"pressed = false\"\n @pointerenter=\"hover\"\n @pointerleave=\"leave\"\n @pointerdown=\"pointerdown\"\n @pointerup=\"pressed = false\"\n @pointercancel=\"pressed = false\"\n @focus=\"focus\"\n @blur=\"blur\"\n >\n <slot\n :pending=\"pending\"\n :disabled=\"disabled\"\n :hovered=\"hovered\"\n :pressed=\"pressed\"\n :focused=\"focused\"\n :focus-visible=\"focusVisible\"\n />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, watch } from 'vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n /** Visual style. Use `danger` for destructive actions such as delete. */\n variant?: ButtonVariant;\n /** Accessible name for icon-only buttons. */\n ariaLabel?: string;\n /** ID of an element supplying the accessible name. */\n ariaLabelledby?: string;\n /** Size of the button. */\n size?: ButtonSize;\n /** Fill the container width. Icon-only buttons retain their square shape. */\n fullWidth?: boolean;\n /** Button type inside a form. Defaults to `button`. */\n type?: 'button' | 'submit' | 'reset';\n /** Disables the button. Vue uses `disabled`, where the React package uses `isDisabled`. */\n disabled?: boolean;\n /** Square icon button; supply aria-label or aria-labelledby. */\n iconOnly?: boolean;\n /** Blocks actions while retaining keyboard focus. */\n pending?: boolean;\n }\n >(),\n {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n type: 'button',\n disabled: false,\n iconOnly: false,\n pending: false,\n },\n);\n\ndefineSlots<{\n default?: (state: {\n pending: boolean;\n disabled: boolean;\n hovered: boolean;\n pressed: boolean;\n focused: boolean;\n focusVisible: boolean;\n }) => unknown;\n}>();\n\nconst hovered = ref(false),\n pressed = ref(false),\n focused = ref(false),\n focusVisible = ref(false);\nwatch(\n () => [props.disabled, props.pending],\n ([disabled, pending]) => {\n if (disabled || pending) {\n hovered.value = false;\n pressed.value = false;\n }\n if (props.disabled) {\n focused.value = false;\n focusVisible.value = false;\n }\n },\n);\nfunction hover(event: PointerEvent) {\n if (!props.disabled && !props.pending && event.pointerType !== 'touch') hovered.value = true;\n}\nfunction pointerdown(event: PointerEvent) {\n focusVisible.value = false;\n if (!props.disabled && !props.pending && event.button === 0) pressed.value = true;\n}\nfunction leave() {\n hovered.value = false;\n pressed.value = false;\n}\nfunction focus(event: FocusEvent) {\n focused.value = true;\n focusVisible.value = (event.target as HTMLButtonElement).matches(':focus-visible');\n}\nfunction blur() {\n focused.value = false;\n focusVisible.value = false;\n pressed.value = false;\n}\n\nconst emit = defineEmits<{\n /** Emitted when the button is clicked. Listen with `@press`, where React uses `onPress`. */\n press: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n 'button',\n `button--${props.variant}`,\n props.size !== 'md' && `button--${props.size}`,\n props.iconOnly && 'button--icon-only',\n props.fullWidth && !props.iconOnly && 'button--full-width',\n]);\nfunction press(event: MouseEvent) {\n if (props.disabled || props.pending) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n emit('press', event);\n}\nfunction keydown(event: KeyboardEvent) {\n if (focused.value) focusVisible.value = true;\n if (props.pending && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n if (!props.disabled && (event.key === 'Enter' || event.key === ' ')) pressed.value = true;\n}\n</script>\n\n<template>\n <button\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :type=\"pending ? 'button' : type\"\n :disabled=\"disabled\"\n :aria-disabled=\"pending || undefined\"\n :data-pending=\"pending || undefined\"\n @click=\"press\"\n @keydown=\"keydown\"\n @keyup=\"pressed = false\"\n @pointerenter=\"hover\"\n @pointerleave=\"leave\"\n @pointerdown=\"pointerdown\"\n @pointerup=\"pressed = false\"\n @pointercancel=\"pressed = false\"\n @focus=\"focus\"\n @blur=\"blur\"\n >\n <slot\n :pending=\"pending\"\n :disabled=\"disabled\"\n :hovered=\"hovered\"\n :pressed=\"pressed\"\n :focused=\"focused\"\n :focus-visible=\"focusVisible\"\n />\n </button>\n</template>\n","import { cloneVNode, defineComponent, Fragment, h, type PropType, type VNode } from 'vue';\nimport Button from './Button.vue';\nimport type { ButtonSize, ButtonVariant } from './types.js';\n\nexport default /* @__PURE__ */ defineComponent({\n name: 'ButtonGroup',\n inheritAttrs: false,\n props: {\n classNames: { type: Object as PropType<Partial<Record<'root', string>>>, default: undefined },\n label: { type: String, required: true },\n variant: { type: String as PropType<ButtonVariant>, default: undefined },\n size: { type: String as PropType<ButtonSize>, default: undefined },\n disabled: { type: Boolean, default: undefined },\n fullWidth: Boolean,\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n function defaults(nodes: VNode[]): VNode[] {\n return nodes.map((child) => {\n if (child.type === Fragment && Array.isArray(child.children)) {\n const fragment = cloneVNode(child);\n fragment.children = defaults(child.children as VNode[]);\n return fragment;\n }\n if (child.type !== Button) return child;\n return cloneVNode(child, {\n variant: child.props?.variant ?? props.variant,\n size: child.props?.size ?? props.size,\n disabled: child.props?.disabled ?? props.disabled,\n });\n });\n }\n return () =>\n h(\n 'div',\n {\n ...attrs,\n role: 'group',\n 'aria-label': props.label,\n dir: props.dir,\n 'data-orientation': props.orientation,\n class: [\n 'button-group',\n props.fullWidth && 'button-group--full-width',\n attrs.class,\n props.classNames?.root,\n ],\n },\n defaults(slots.default?.() ?? []),\n );\n },\n});\n","import { defineComponent, h } from 'vue';\nexport default /* @__PURE__ */ defineComponent({\n name: 'ButtonGroupSeparator',\n setup: () => () => h('span', { class: 'button-group__separator', 'aria-hidden': 'true' }),\n});\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { ButtonSize } from './types.js';\nexport const toggleButtonGroupKey: InjectionKey<\n ComputedRef<{\n size: ButtonSize;\n radio: boolean;\n selectedIds: string[];\n disabled: boolean;\n }>\n> = Symbol('KazeeToggleButtonGroup');\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, inject, ref } from 'vue';\nimport { Toggle, ToggleGroupItem } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n id?: string;\n variant?: 'default' | 'ghost';\n size?: ButtonSize;\n iconOnly?: boolean;\n modelValue?: boolean;\n defaultSelected?: boolean;\n disabled?: boolean;\n }\n >(),\n { id: undefined, size: undefined, variant: 'default', modelValue: undefined },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [selected: boolean];\n press: [event: MouseEvent];\n}>();\ndefineSlots<{ default?: (state: { selected: boolean; disabled: boolean }) => unknown }>();\nconst group = inject(toggleButtonGroupKey, undefined);\nif (group && !props.id) throw new Error('A grouped ToggleButton requires a unique nonempty id.');\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultSelected ?? false);\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst selected = computed(() => (controlled() ? !!props.modelValue : local.value));\nconst classes = computed(() => {\n const size = props.size ?? group?.value.size ?? 'md';\n return [\n 'button',\n 'toggle-button',\n `toggle-button--${props.variant}`,\n size !== 'md' && `button--${size}`,\n props.iconOnly && 'button--icon-only',\n ];\n});\nfunction update(value: boolean) {\n if (props.disabled) return;\n if (!controlled()) local.value = value;\n emit('update:modelValue', value);\n}\nfunction press(event: MouseEvent) {\n if (!props.disabled && !group?.value.disabled) emit('press', event);\n}\n</script>\n<template>\n <ToggleGroupItem\n v-if=\"group\"\n v-bind=\"$attrs\"\n :id=\"id\"\n :value=\"id ?? ''\"\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :disabled=\"disabled\"\n :role=\"group.radio ? 'radio' : undefined\"\n :aria-checked=\"group.radio ? group.selectedIds.includes(id ?? '') : undefined\"\n :aria-pressed=\"group.radio ? undefined : group.selectedIds.includes(id ?? '')\"\n @click=\"press\"\n >\n <template #default=\"state\"\n ><slot :selected=\"!!state.modelValue\" :disabled=\"state.disabled\"\n /></template>\n </ToggleGroupItem>\n <Toggle\n v-else\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :model-value=\"selected\"\n :disabled=\"disabled\"\n @update:model-value=\"update\"\n @click=\"press\"\n >\n <slot :selected=\"selected\" :disabled=\"!!disabled\" />\n </Toggle>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, inject, ref } from 'vue';\nimport { Toggle, ToggleGroupItem } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n id?: string;\n variant?: 'default' | 'ghost';\n size?: ButtonSize;\n iconOnly?: boolean;\n modelValue?: boolean;\n defaultSelected?: boolean;\n disabled?: boolean;\n }\n >(),\n { id: undefined, size: undefined, variant: 'default', modelValue: undefined },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [selected: boolean];\n press: [event: MouseEvent];\n}>();\ndefineSlots<{ default?: (state: { selected: boolean; disabled: boolean }) => unknown }>();\nconst group = inject(toggleButtonGroupKey, undefined);\nif (group && !props.id) throw new Error('A grouped ToggleButton requires a unique nonempty id.');\nconst instance = getCurrentInstance();\nconst local = ref(props.defaultSelected ?? false);\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst selected = computed(() => (controlled() ? !!props.modelValue : local.value));\nconst classes = computed(() => {\n const size = props.size ?? group?.value.size ?? 'md';\n return [\n 'button',\n 'toggle-button',\n `toggle-button--${props.variant}`,\n size !== 'md' && `button--${size}`,\n props.iconOnly && 'button--icon-only',\n ];\n});\nfunction update(value: boolean) {\n if (props.disabled) return;\n if (!controlled()) local.value = value;\n emit('update:modelValue', value);\n}\nfunction press(event: MouseEvent) {\n if (!props.disabled && !group?.value.disabled) emit('press', event);\n}\n</script>\n<template>\n <ToggleGroupItem\n v-if=\"group\"\n v-bind=\"$attrs\"\n :id=\"id\"\n :value=\"id ?? ''\"\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :disabled=\"disabled\"\n :role=\"group.radio ? 'radio' : undefined\"\n :aria-checked=\"group.radio ? group.selectedIds.includes(id ?? '') : undefined\"\n :aria-pressed=\"group.radio ? undefined : group.selectedIds.includes(id ?? '')\"\n @click=\"press\"\n >\n <template #default=\"state\"\n ><slot :selected=\"!!state.modelValue\" :disabled=\"state.disabled\"\n /></template>\n </ToggleGroupItem>\n <Toggle\n v-else\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses(classes, $props.classNames?.root)\"\n :model-value=\"selected\"\n :disabled=\"disabled\"\n @update:model-value=\"update\"\n @click=\"press\"\n >\n <slot :selected=\"selected\" :disabled=\"!!disabled\" />\n </Toggle>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, provide, ref } from 'vue';\nimport { ToggleGroupRoot } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<\n StylingProps<'root'> & {\n label: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n detached?: boolean;\n fullWidth?: boolean;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ default?: () => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() => {\n const value = controlled() ? props.modelValue : local.value;\n return Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n});\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n if (!controlled()) local.value = result;\n emit('update:modelValue', result);\n}\nconst radio = computed(() => !multiple.value);\nprovide(\n toggleButtonGroupKey,\n computed(() => ({\n size: props.size ?? 'md',\n radio: radio.value,\n selectedIds: ids.value,\n disabled: !!props.disabled,\n })),\n);\n</script>\n<template>\n <ToggleGroupRoot\n :class=\"[\n partClasses('button-group toggle-button-group', $props.classNames?.root),\n partClasses(\n { 'button-group--detached': detached, 'button-group--full-width': fullWidth },\n $props.classNames?.root,\n ),\n ]\"\n as-child\n :aria-label=\"label\"\n :aria-orientation=\"orientation ?? 'horizontal'\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div :role=\"radio ? 'radiogroup' : 'toolbar'\"><slot /></div>\n </ToggleGroupRoot>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, provide, ref } from 'vue';\nimport { ToggleGroupRoot } from 'reka-ui';\nimport { toggleButtonGroupKey } from './button-family-context.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<\n StylingProps<'root'> & {\n label: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n detached?: boolean;\n fullWidth?: boolean;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n disallowEmptySelection?: boolean;\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ default?: () => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() => {\n const value = controlled() ? props.modelValue : local.value;\n return Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n});\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = Array.isArray(value) ? value : typeof value === 'string' && value ? [value] : [];\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n if (!controlled()) local.value = result;\n emit('update:modelValue', result);\n}\nconst radio = computed(() => !multiple.value);\nprovide(\n toggleButtonGroupKey,\n computed(() => ({\n size: props.size ?? 'md',\n radio: radio.value,\n selectedIds: ids.value,\n disabled: !!props.disabled,\n })),\n);\n</script>\n<template>\n <ToggleGroupRoot\n :class=\"[\n partClasses('button-group toggle-button-group', $props.classNames?.root),\n partClasses(\n { 'button-group--detached': detached, 'button-group--full-width': fullWidth },\n $props.classNames?.root,\n ),\n ]\"\n as-child\n :aria-label=\"label\"\n :aria-orientation=\"orientation ?? 'horizontal'\"\n :aria-disabled=\"disabled || undefined\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div :role=\"radio ? 'radiogroup' : 'toolbar'\"><slot /></div>\n </ToggleGroupRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nwithDefaults(\n defineProps<\n StylingProps<'description' | 'error' | 'root'> & {\n controlId: string;\n description?: string;\n errorMessage?: string;\n showError: boolean;\n }\n >(),\n { description: undefined, errorMessage: undefined },\n);\n</script>\n<template>\n <div\n v-if=\"description || showError\"\n :class=\"partClasses('field-feedback', $props.classNames?.root)\"\n >\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <span\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >{{ errorMessage }}</span\n >\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nwithDefaults(\n defineProps<\n StylingProps<'description' | 'error' | 'root'> & {\n controlId: string;\n description?: string;\n errorMessage?: string;\n showError: boolean;\n }\n >(),\n { description: undefined, errorMessage: undefined },\n);\n</script>\n<template>\n <div\n v-if=\"description || showError\"\n :class=\"partClasses('field-feedback', $props.classNames?.root)\"\n >\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <span\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >{{ errorMessage }}</span\n >\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount } from 'vue';\ndefineProps<{ hasValue: boolean; required?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ invalid: []; reset: [cancelled: boolean] }>();\nconst input = ref<HTMLInputElement>();\nlet form: HTMLFormElement | null | undefined;\nconst reset = (event: Event) => setTimeout(() => emit('reset', event.defaultPrevented), 0);\nonMounted(() => {\n form = input.value?.form;\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <input\n ref=\"input\"\n class=\"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 @invalid.prevent=\"emit('invalid')\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount } from 'vue';\ndefineProps<{ hasValue: boolean; required?: boolean; disabled?: boolean }>();\nconst emit = defineEmits<{ invalid: []; reset: [cancelled: boolean] }>();\nconst input = ref<HTMLInputElement>();\nlet form: HTMLFormElement | null | undefined;\nconst reset = (event: Event) => setTimeout(() => emit('reset', event.defaultPrevented), 0);\nonMounted(() => {\n form = input.value?.form;\n form?.addEventListener('reset', reset);\n});\nonBeforeUnmount(() => form?.removeEventListener('reset', reset));\n</script>\n<template>\n <input\n ref=\"input\"\n class=\"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 @invalid.prevent=\"emit('invalid')\"\n />\n</template>\n","import { computed } from 'vue';\nimport { useId } from 'reka-ui';\nexport function useFeedback(props: {\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n}) {\n const generated = useId();\n const controlId = computed(() => props.id ?? generated);\n const showError = computed(() => !!(props.invalid && props.errorMessage));\n const describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n );\n return { controlId, showError, describedBy };\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","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, getCurrentInstance } from 'vue';\nimport {\n SelectContent,\n SelectItem,\n SelectItemText,\n SelectPortal,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n} from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nimport type { SelectSize, SelectVariant } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | undefined;\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'check'\n | 'clear'\n | 'closeIcon'\n | 'control'\n | 'description'\n | 'error'\n | 'icon'\n | 'item'\n | 'itemLabel'\n | 'label'\n | 'leading'\n | 'list'\n | 'popover'\n | 'required'\n | 'root'\n | 'trigger'\n | 'value'\n > & {\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n placeholder?: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n clearable?: boolean;\n clearLabel?: string;\n }\n >(),\n {\n fullWidth: true,\n size: 'md',\n variant: 'primary',\n placeholder: undefined,\n selectionMode: undefined,\n modelValue: undefined,\n defaultValue: undefined,\n description: undefined,\n errorMessage: undefined,\n requiredMessage: undefined,\n name: undefined,\n dir: undefined,\n clearLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: Value]; clear: []; close: [] }>();\nfunction afterClose() {\n queueMicrotask(() => emit('close'));\n}\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n value?: (props: { selected: SelectOption[] }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n selectionIds(controlled() ? props.modelValue : local.value, props.options, multiple.value),\n);\nconst selected = computed(() => props.options.filter((o) => ids.value.includes(o.id)));\nconst invalid = computed(\n () => props.invalid || (tried.value && props.required && ids.value.length === 0),\n);\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && ids.value.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLButtonElement>('.select__trigger')?.focus();\n}\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, multiple.value);\n const result = (multiple.value ? next : next[0]) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\nfunction clear() {\n update(multiple.value ? [] : undefined);\n emit('clear');\n focus();\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div\n ref=\"wrapper\"\n :class=\"\n partClasses(\n [\n 'select',\n `select--${size ?? 'md'}`,\n `select--${variant ?? 'primary'}`,\n hideLabel && 'select--label-hidden',\n fullWidth === false && 'select--fit',\n ],\n $props.classNames?.root,\n )\n \"\n :data-multiple=\"multiple || undefined\"\n :dir=\"dir\"\n >\n <label :class=\"partClasses('select__label', $props.classNames?.label)\" :for=\"controlId\"\n >{{ label\n }}<span\n v-if=\"required\"\n :class=\"partClasses('selection__required', $props.classNames?.required)\"\n aria-hidden=\"true\"\n >\n *</span\n ></label\n >\n <SelectRoot\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div\n :class=\"partClasses('select__control', $props.classNames?.control)\"\n :data-clearable=\"clearable || undefined\"\n >\n <SelectTrigger\n :id=\"controlId\"\n :class=\"partClasses('select__trigger', $props.classNames?.trigger)\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n >\n <span\n v-if=\"$slots.start\"\n :class=\"partClasses('selection__leading', $props.classNames?.leading)\"\n aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <SelectValue\n :class=\"partClasses('select__value', $props.classNames?.value)\"\n :placeholder=\"placeholder\"\n ><slot v-if=\"selected.length\" name=\"value\" :selected=\"selected\">{{\n selected.map((o) => o.label).join(', ')\n }}</slot\n ><template v-else>{{ placeholder }}</template></SelectValue\n >\n <ChevronIcon :class=\"partClasses('select__icon', $props.classNames?.icon)\" />\n </SelectTrigger>\n <button\n v-if=\"clearable\"\n type=\"button\"\n :class=\"partClasses('selection__clear', $props.classNames?.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 ?? 'Hapus pilihan'\"\n :disabled=\"disabled || ids.length === 0\"\n @click=\"clear\"\n >\n <CloseIcon :class=\"partClasses('selection__close-icon', $props.classNames?.closeIcon)\" />\n </button>\n </div>\n <SelectPortal\n ><SelectContent\n :class=\"partClasses('select__popover', $props.classNames?.popover)\"\n position=\"popper\"\n :side-offset=\"4\"\n @close-auto-focus=\"afterClose\"\n ><SelectViewport :class=\"partClasses('select__list', $props.classNames?.list)\">\n <SelectItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n :class=\"partClasses('select__item', $props.classNames?.item)\"\n >\n <SelectItemText\n :class=\"partClasses('select__item-label', $props.classNames?.itemLabel)\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span\n v-if=\"option.description\"\n :class=\"partClasses('selection__description', $props.classNames?.description)\"\n >{{ option.description }}</span\n ></slot\n ></SelectItemText\n ><CheckIcon :class=\"partClasses('select__check', $props.classNames?.check)\" />\n </SelectItem> </SelectViewport></SelectContent\n ></SelectPortal>\n </SelectRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"(id, i) in multiple ? ids : [ids[0] ?? '']\"\n :key=\"i\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"id\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"ids.length > 0\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, getCurrentInstance } from 'vue';\nimport {\n SelectContent,\n SelectItem,\n SelectItemText,\n SelectPortal,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n} from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, type SelectOption } from './selection-options.js';\nimport type { SelectSize, SelectVariant } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | undefined;\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'check'\n | 'clear'\n | 'closeIcon'\n | 'control'\n | 'description'\n | 'error'\n | 'icon'\n | 'item'\n | 'itemLabel'\n | 'label'\n | 'leading'\n | 'list'\n | 'popover'\n | 'required'\n | 'root'\n | 'trigger'\n | 'value'\n > & {\n label: string;\n options: SelectOption[];\n size?: SelectSize;\n variant?: SelectVariant;\n hideLabel?: boolean;\n fullWidth?: boolean;\n placeholder?: string;\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n name?: string;\n dir?: 'ltr' | 'rtl';\n clearable?: boolean;\n clearLabel?: string;\n }\n >(),\n {\n fullWidth: true,\n size: 'md',\n variant: 'primary',\n placeholder: undefined,\n selectionMode: undefined,\n modelValue: undefined,\n defaultValue: undefined,\n description: undefined,\n errorMessage: undefined,\n requiredMessage: undefined,\n name: undefined,\n dir: undefined,\n clearLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: Value]; clear: []; close: [] }>();\nfunction afterClose() {\n queueMicrotask(() => emit('close'));\n}\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n value?: (props: { selected: SelectOption[] }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n selectionIds(controlled() ? props.modelValue : local.value, props.options, multiple.value),\n);\nconst selected = computed(() => props.options.filter((o) => ids.value.includes(o.id)));\nconst invalid = computed(\n () => props.invalid || (tried.value && props.required && ids.value.length === 0),\n);\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && ids.value.length === 0\n ? (props.requiredMessage ?? 'Pilihan wajib diisi.')\n : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLButtonElement>('.select__trigger')?.focus();\n}\nfunction update(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, multiple.value);\n const result = (multiple.value ? next : next[0]) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\nfunction clear() {\n update(multiple.value ? [] : undefined);\n emit('clear');\n focus();\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div\n ref=\"wrapper\"\n :class=\"\n partClasses(\n [\n 'select',\n `select--${size ?? 'md'}`,\n `select--${variant ?? 'primary'}`,\n hideLabel && 'select--label-hidden',\n fullWidth === false && 'select--fit',\n ],\n $props.classNames?.root,\n )\n \"\n :data-multiple=\"multiple || undefined\"\n :dir=\"dir\"\n >\n <label :class=\"partClasses('select__label', $props.classNames?.label)\" :for=\"controlId\"\n >{{ label\n }}<span\n v-if=\"required\"\n :class=\"partClasses('selection__required', $props.classNames?.required)\"\n aria-hidden=\"true\"\n >\n *</span\n ></label\n >\n <SelectRoot\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <div\n :class=\"partClasses('select__control', $props.classNames?.control)\"\n :data-clearable=\"clearable || undefined\"\n >\n <SelectTrigger\n :id=\"controlId\"\n :class=\"partClasses('select__trigger', $props.classNames?.trigger)\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n >\n <span\n v-if=\"$slots.start\"\n :class=\"partClasses('selection__leading', $props.classNames?.leading)\"\n aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <SelectValue\n :class=\"partClasses('select__value', $props.classNames?.value)\"\n :placeholder=\"placeholder\"\n ><slot v-if=\"selected.length\" name=\"value\" :selected=\"selected\">{{\n selected.map((o) => o.label).join(', ')\n }}</slot\n ><template v-else>{{ placeholder }}</template></SelectValue\n >\n <ChevronIcon :class=\"partClasses('select__icon', $props.classNames?.icon)\" />\n </SelectTrigger>\n <button\n v-if=\"clearable\"\n type=\"button\"\n :class=\"partClasses('selection__clear', $props.classNames?.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 ?? 'Hapus pilihan'\"\n :disabled=\"disabled || ids.length === 0\"\n @click=\"clear\"\n >\n <CloseIcon :class=\"partClasses('selection__close-icon', $props.classNames?.closeIcon)\" />\n </button>\n </div>\n <SelectPortal\n ><SelectContent\n :class=\"partClasses('select__popover', $props.classNames?.popover)\"\n position=\"popper\"\n :side-offset=\"4\"\n @close-auto-focus=\"afterClose\"\n ><SelectViewport :class=\"partClasses('select__list', $props.classNames?.list)\">\n <SelectItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n :class=\"partClasses('select__item', $props.classNames?.item)\"\n >\n <SelectItemText\n :class=\"partClasses('select__item-label', $props.classNames?.itemLabel)\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span\n v-if=\"option.description\"\n :class=\"partClasses('selection__description', $props.classNames?.description)\"\n >{{ option.description }}</span\n ></slot\n ></SelectItemText\n ><CheckIcon :class=\"partClasses('select__check', $props.classNames?.check)\" />\n </SelectItem> </SelectViewport></SelectContent\n ></SelectPortal>\n </SelectRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"(id, i) in multiple ? ids : [ids[0] ?? '']\"\n :key=\"i\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"id\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"ids.length > 0\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","import { cloneVNode, defineComponent, Fragment, h, type PropType, type VNode } from 'vue';\nimport Select from './Select.vue';\nimport type { SelectSize, SelectVariant } from './types.js';\nexport default /* @__PURE__ */ defineComponent({\n name: 'SelectGroup',\n inheritAttrs: false,\n props: {\n classNames: {\n type: Object as PropType<Partial<Record<'root' | 'legend' | 'controls', string>>>,\n default: undefined,\n },\n label: { type: String, required: true },\n size: { type: String as PropType<SelectSize>, default: undefined },\n variant: { type: String as PropType<SelectVariant>, default: undefined },\n fullWidth: { type: Boolean, default: true },\n disabled: Boolean,\n dir: { type: String as PropType<'ltr' | 'rtl'>, default: undefined },\n },\n setup(props, { slots, attrs }) {\n function defaults(nodes: VNode[]): VNode[] {\n return nodes.map((child) => {\n if (child.type === Fragment && Array.isArray(child.children)) {\n const fragment = cloneVNode(child);\n fragment.children = defaults(child.children as VNode[]);\n return fragment;\n }\n if (child.type !== Select) return child;\n return cloneVNode(child, {\n size: child.props?.size ?? props.size,\n variant: child.props?.variant ?? props.variant,\n hideLabel: child.props?.hideLabel ?? child.props?.['hide-label'] ?? true,\n fullWidth: child.props?.fullWidth ?? child.props?.['full-width'] ?? props.fullWidth,\n disabled: props.disabled || child.props?.disabled,\n dir: child.props?.dir ?? props.dir,\n });\n });\n }\n return () =>\n h(\n 'fieldset',\n {\n ...attrs,\n class: [\n 'select-group',\n !props.fullWidth && 'select-group--fit',\n attrs.class,\n props.classNames?.root,\n ],\n disabled: props.disabled,\n dir: props.dir,\n },\n [\n h('legend', { class: ['select-group__legend', props.classNames?.legend] }, props.label),\n h(\n 'div',\n { class: ['select-group__controls', props.classNames?.controls] },\n defaults(slots.default?.() ?? []),\n ),\n ],\n );\n },\n});\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, onMounted, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\nimport type { InputSize, InputType, InputVariant, InputMode, InputEnterKeyHint } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'boundary'\n | 'control'\n | 'description'\n | 'error'\n | 'group'\n | 'label'\n | 'prefix'\n | 'root'\n | 'suffix'\n > & {\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n fullWidth?: boolean;\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 dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n type: 'text',\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n minLength: undefined,\n pattern: undefined,\n inputMode: undefined,\n enterKeyHint: undefined,\n spellCheck: undefined,\n form: undefined,\n dir: undefined,\n },\n);\ndefineSlots<{ prefix?: () => unknown; suffix?: () => unknown }>();\nconst emit = defineEmits<{\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n keydown: [event: KeyboardEvent];\n keyup: [event: KeyboardEvent];\n}>();\nconst control = ref<HTMLInputElement>();\nfunction focus() {\n if (!props.disabled) control.value?.focus();\n}\nfunction select() {\n if (!props.disabled) control.value?.select();\n}\ndefineExpose({ focus, select, element: control });\nonMounted(() => {\n if (props.autoFocus) focus();\n});\nfunction pointerdown(event: PointerEvent) {\n if (\n !props.disabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n focus();\n }\n}\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLInputElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"\n partClasses(\n ['input', `input--${size}`, `input--${variant}`, !fullWidth && 'input--fit'],\n $props.classNames?.root,\n )\n \"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('input__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <fieldset\n :class=\"partClasses('input__boundary', $props.classNames?.boundary)\"\n role=\"presentation\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"\n partClasses(\n $slots.prefix || $slots.suffix ? 'input__group' : 'input__plain',\n $props.classNames?.group,\n )\n \"\n :data-invalid=\"invalid || undefined\"\n :data-readonly=\"readonly || undefined\"\n @pointerdown=\"pointerdown\"\n >\n <span v-if=\"$slots.prefix\" :class=\"partClasses('input__prefix', $props.classNames?.prefix)\"\n ><slot name=\"prefix\"\n /></span>\n <input\n :id=\"controlId\"\n ref=\"control\"\n :class=\"partClasses('input__control', $props.classNames?.control)\"\n :type=\"type\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n :minlength=\"minLength\"\n :pattern=\"pattern\"\n :inputmode=\"inputMode\"\n :enterkeyhint=\"enterKeyHint\"\n :autofocus=\"autoFocus\"\n :spellcheck=\"spellCheck\"\n :form=\"form\"\n @input=\"onInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @keyup=\"emit('keyup', $event)\"\n />\n <span v-if=\"$slots.suffix\" :class=\"partClasses('input__suffix', $props.classNames?.suffix)\"\n ><slot name=\"suffix\"\n /></span>\n </div>\n </fieldset>\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <div\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >\n {{ errorMessage }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, onMounted, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\nimport type { InputSize, InputType, InputVariant, InputMode, InputEnterKeyHint } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'boundary'\n | 'control'\n | 'description'\n | 'error'\n | 'group'\n | 'label'\n | 'prefix'\n | 'root'\n | 'suffix'\n > & {\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n placeholder?: string;\n type?: InputType;\n size?: InputSize;\n variant?: InputVariant;\n fullWidth?: boolean;\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 dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n type: 'text',\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n minLength: undefined,\n pattern: undefined,\n inputMode: undefined,\n enterKeyHint: undefined,\n spellCheck: undefined,\n form: undefined,\n dir: undefined,\n },\n);\ndefineSlots<{ prefix?: () => unknown; suffix?: () => unknown }>();\nconst emit = defineEmits<{\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n keydown: [event: KeyboardEvent];\n keyup: [event: KeyboardEvent];\n}>();\nconst control = ref<HTMLInputElement>();\nfunction focus() {\n if (!props.disabled) control.value?.focus();\n}\nfunction select() {\n if (!props.disabled) control.value?.select();\n}\ndefineExpose({ focus, select, element: control });\nonMounted(() => {\n if (props.autoFocus) focus();\n});\nfunction pointerdown(event: PointerEvent) {\n if (\n !props.disabled &&\n !(event.target as Element).closest(\n 'input,button,a,select,textarea,[tabindex],[contenteditable]',\n )\n ) {\n event.preventDefault();\n focus();\n }\n}\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLInputElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"\n partClasses(\n ['input', `input--${size}`, `input--${variant}`, !fullWidth && 'input--fit'],\n $props.classNames?.root,\n )\n \"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('input__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <fieldset\n :class=\"partClasses('input__boundary', $props.classNames?.boundary)\"\n role=\"presentation\"\n :disabled=\"disabled\"\n >\n <div\n :class=\"\n partClasses(\n $slots.prefix || $slots.suffix ? 'input__group' : 'input__plain',\n $props.classNames?.group,\n )\n \"\n :data-invalid=\"invalid || undefined\"\n :data-readonly=\"readonly || undefined\"\n @pointerdown=\"pointerdown\"\n >\n <span v-if=\"$slots.prefix\" :class=\"partClasses('input__prefix', $props.classNames?.prefix)\"\n ><slot name=\"prefix\"\n /></span>\n <input\n :id=\"controlId\"\n ref=\"control\"\n :class=\"partClasses('input__control', $props.classNames?.control)\"\n :type=\"type\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n :minlength=\"minLength\"\n :pattern=\"pattern\"\n :inputmode=\"inputMode\"\n :enterkeyhint=\"enterKeyHint\"\n :autofocus=\"autoFocus\"\n :spellcheck=\"spellCheck\"\n :form=\"form\"\n @input=\"onInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @keyup=\"emit('keyup', $event)\"\n />\n <span v-if=\"$slots.suffix\" :class=\"partClasses('input__suffix', $props.classNames?.suffix)\"\n ><slot name=\"suffix\"\n /></span>\n </div>\n </fieldset>\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <div\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >\n {{ errorMessage }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'label' | 'root'> & {\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: 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 >(),\n {\n rows: 3,\n resize: 'vertical',\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n dir: undefined,\n },\n);\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLTextAreaElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('input textarea', $props.classNames?.root)\"\n :data-resize=\"resize\"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('input__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <textarea\n :id=\"controlId\"\n :class=\"partClasses('input__control textarea__control', $props.classNames?.control)\"\n :rows=\"rows\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n @input=\"onInput\"\n />\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <div\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >\n {{ errorMessage }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { Label, useId } from 'reka-ui';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'label' | 'root'> & {\n label: string;\n defaultValue?: string;\n description?: string;\n /** Shown only when invalid is true; the application owns validation. */\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: 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 >(),\n {\n rows: 3,\n resize: 'vertical',\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n defaultValue: '',\n description: undefined,\n errorMessage: undefined,\n placeholder: undefined,\n name: undefined,\n id: undefined,\n autoComplete: undefined,\n maxLength: undefined,\n dir: undefined,\n },\n);\n\n/** Controlled v-model values are strings; clear with an empty string. */\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue ?? '');\nconst value = computed(() => model.value ?? local.value);\nconst generatedId = useId();\nconst controlId = computed(() => props.id ?? generatedId);\nconst showError = computed(() => props.invalid && !!props.errorMessage);\nconst describedBy = computed(\n () =>\n [\n props.description && `${controlId.value}-description`,\n showError.value && `${controlId.value}-error`,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n);\n\nfunction onInput(event: Event) {\n if (props.disabled || props.readonly) return;\n const next = (event.target as HTMLTextAreaElement).value;\n local.value = next;\n model.value = next;\n}\n</script>\n\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('input textarea', $props.classNames?.root)\"\n :data-resize=\"resize\"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('input__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <textarea\n :id=\"controlId\"\n :class=\"partClasses('input__control textarea__control', $props.classNames?.control)\"\n :rows=\"rows\"\n :name=\"name\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n :autocomplete=\"autoComplete\"\n :maxlength=\"maxLength\"\n @input=\"onInput\"\n />\n <span\n v-if=\"description\"\n :id=\"`${controlId}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <div\n v-if=\"showError\"\n :id=\"`${controlId}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n >\n {{ errorMessage }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { Label as RekaLabel } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(defineProps<StylingProps<'root'> & { for?: string; id?: string }>(), {\n for: undefined,\n id: undefined,\n});\n</script>\n<template>\n <RekaLabel\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('label', $props.classNames?.root)\"\n :for=\"props.for\"\n ><slot\n /></RekaLabel>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { Label as RekaLabel } from 'reka-ui';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(defineProps<StylingProps<'root'> & { for?: string; id?: string }>(), {\n for: undefined,\n id: undefined,\n});\n</script>\n<template>\n <RekaLabel\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('label', $props.classNames?.root)\"\n :for=\"props.for\"\n ><slot\n /></RekaLabel>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { CheckboxRoot, Label } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'check' | 'content' | 'control' | 'dash' | 'description' | 'error' | 'label' | 'root'\n > & {\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n required: false,\n invalid: false,\n indeterminate: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => (props.indeterminate ? 'indeterminate' : selected.value));\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean | 'indeterminate') {\n if (props.disabled) return;\n const next = props.indeterminate ? !selected.value : value === true;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', $props.classNames?.root)\" :dir=\"dir\">\n <div\n :class=\"partClasses('choice', $props.classNames?.content)\"\n :data-disabled=\"disabled || undefined\"\n >\n <CheckboxRoot\n :id=\"controlId\"\n :class=\"partClasses('checkbox__control', $props.classNames?.control)\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"indeterminate ? undefined : name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <CheckIcon :class=\"partClasses('checkbox__check', $props.classNames?.check)\" /><span\n :class=\"partClasses('checkbox__dash', $props.classNames?.dash)\"\n />\n </CheckboxRoot>\n <Label :class=\"partClasses('choice__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n </div>\n <!-- Keep mixed presentation separate from the boolean form value. -->\n <input\n v-if=\"indeterminate && selected && name && !disabled\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n />\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { CheckboxRoot, Label } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'check' | 'content' | 'control' | 'dash' | 'description' | 'error' | 'label' | 'root'\n > & {\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n required: false,\n invalid: false,\n indeterminate: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => (props.indeterminate ? 'indeterminate' : selected.value));\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean | 'indeterminate') {\n if (props.disabled) return;\n const next = props.indeterminate ? !selected.value : value === true;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', $props.classNames?.root)\" :dir=\"dir\">\n <div\n :class=\"partClasses('choice', $props.classNames?.content)\"\n :data-disabled=\"disabled || undefined\"\n >\n <CheckboxRoot\n :id=\"controlId\"\n :class=\"partClasses('checkbox__control', $props.classNames?.control)\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"indeterminate ? undefined : name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <CheckIcon :class=\"partClasses('checkbox__check', $props.classNames?.check)\" /><span\n :class=\"partClasses('checkbox__dash', $props.classNames?.dash)\"\n />\n </CheckboxRoot>\n <Label :class=\"partClasses('choice__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n </div>\n <!-- Keep mixed presentation separate from the boolean form value. -->\n <input\n v-if=\"indeterminate && selected && name && !disabled\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n />\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { RadioGroupRoot, RadioGroupItem, Label } from 'reka-ui';\nimport type { RadioOption } from './types.js';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'control' | 'description' | 'dot' | 'error' | 'item' | 'items' | 'label' | 'root'\n > & {\n label: string;\n options: RadioOption[];\n defaultValue?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n defaultValue: '',\n disabled: false,\n required: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n orientation: 'vertical',\n dir: undefined,\n },\n);\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue);\nconst value = computed(() => model.value ?? local.value);\nconst { controlId, describedBy, showError } = useFeedback(props);\nfunction update(next: unknown) {\n if (props.disabled || typeof next !== 'string') return;\n local.value = next;\n model.value = next;\n}\n</script>\n<template>\n <RadioGroupRoot\n v-bind=\"$attrs\"\n :id=\"controlId\"\n :class=\"partClasses('input radio-group', $props.classNames?.root)\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :orientation=\"orientation\"\n :dir=\"dir\"\n :aria-labelledby=\"`${controlId}-label`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :id=\"`${controlId}-label`\" :class=\"partClasses('label', $props.classNames?.label)\">{{\n label\n }}</span>\n <div\n :class=\"partClasses('radio-group__items', $props.classNames?.items)\"\n :data-orientation=\"orientation\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n :class=\"partClasses('choice', $props.classNames?.item)\"\n :data-disabled=\"disabled || option.isDisabled || undefined\"\n >\n <RadioGroupItem\n :id=\"`${controlId}-option-${index}`\"\n :class=\"partClasses('radio__control', $props.classNames?.control)\"\n :value=\"option.id\"\n :disabled=\"option.isDisabled\"\n :data-invalid=\"invalid || undefined\"\n ><span :class=\"partClasses('radio__dot', $props.classNames?.dot)\"\n /></RadioGroupItem>\n <Label\n :class=\"partClasses('choice__label', $props.classNames?.label)\"\n :for=\"`${controlId}-option-${index}`\"\n >{{ option.label }}</Label\n >\n </div>\n </div>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </RadioGroupRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { RadioGroupRoot, RadioGroupItem, Label } from 'reka-ui';\nimport type { RadioOption } from './types.js';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'control' | 'description' | 'dot' | 'error' | 'item' | 'items' | 'label' | 'root'\n > & {\n label: string;\n options: RadioOption[];\n defaultValue?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n defaultValue: '',\n disabled: false,\n required: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n orientation: 'vertical',\n dir: undefined,\n },\n);\nconst model = defineModel<string>();\nconst local = ref(props.defaultValue);\nconst value = computed(() => model.value ?? local.value);\nconst { controlId, describedBy, showError } = useFeedback(props);\nfunction update(next: unknown) {\n if (props.disabled || typeof next !== 'string') return;\n local.value = next;\n model.value = next;\n}\n</script>\n<template>\n <RadioGroupRoot\n v-bind=\"$attrs\"\n :id=\"controlId\"\n :class=\"partClasses('input radio-group', $props.classNames?.root)\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n :name=\"name\"\n :orientation=\"orientation\"\n :dir=\"dir\"\n :aria-labelledby=\"`${controlId}-label`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :id=\"`${controlId}-label`\" :class=\"partClasses('label', $props.classNames?.label)\">{{\n label\n }}</span>\n <div\n :class=\"partClasses('radio-group__items', $props.classNames?.items)\"\n :data-orientation=\"orientation\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n :class=\"partClasses('choice', $props.classNames?.item)\"\n :data-disabled=\"disabled || option.isDisabled || undefined\"\n >\n <RadioGroupItem\n :id=\"`${controlId}-option-${index}`\"\n :class=\"partClasses('radio__control', $props.classNames?.control)\"\n :value=\"option.id\"\n :disabled=\"option.isDisabled\"\n :data-invalid=\"invalid || undefined\"\n ><span :class=\"partClasses('radio__dot', $props.classNames?.dot)\"\n /></RadioGroupItem>\n <Label\n :class=\"partClasses('choice__label', $props.classNames?.label)\"\n :for=\"`${controlId}-option-${index}`\"\n >{{ option.label }}</Label\n >\n </div>\n </div>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </RadioGroupRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { SwitchRoot, Label } from 'reka-ui';\n\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'content' | 'control' | 'description' | 'error' | 'label' | 'root' | 'thumb'> & {\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n\n disabled?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => selected.value);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean) {\n if (props.disabled) return;\n const next = value;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', $props.classNames?.root)\" :dir=\"dir\">\n <div\n :class=\"partClasses('choice', $props.classNames?.content)\"\n :data-disabled=\"disabled || undefined\"\n >\n <SwitchRoot\n :id=\"controlId\"\n :class=\"partClasses('switch__control', $props.classNames?.control)\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :class=\"partClasses('switch__thumb', $props.classNames?.thumb)\" />\n </SwitchRoot>\n <Label :class=\"partClasses('choice__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n </div>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { SwitchRoot, Label } from 'reka-ui';\n\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'content' | 'control' | 'description' | 'error' | 'label' | 'root' | 'thumb'> & {\n label: string;\n modelValue?: boolean;\n defaultValue?: boolean;\n\n disabled?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n name?: string;\n value?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n value: 'on',\n id: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: boolean] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() => props.modelValue ?? local.value);\nconst state = computed(() => selected.value);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: boolean) {\n if (props.disabled) return;\n const next = value;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input', $props.classNames?.root)\" :dir=\"dir\">\n <div\n :class=\"partClasses('choice', $props.classNames?.content)\"\n :data-disabled=\"disabled || undefined\"\n >\n <SwitchRoot\n :id=\"controlId\"\n :class=\"partClasses('switch__control', $props.classNames?.control)\"\n :model-value=\"state\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :data-invalid=\"invalid || undefined\"\n @update:model-value=\"update\"\n >\n <span :class=\"partClasses('switch__thumb', $props.classNames?.thumb)\" />\n </SwitchRoot>\n <Label :class=\"partClasses('choice__label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n </div>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","import type { ComputedRef, InjectionKey } from 'vue';\nimport type { ValidationErrors } from './types.js';\nexport const formErrorsKey: InjectionKey<ComputedRef<ValidationErrors>> =\n /* @__PURE__ */ Symbol('KazeeFormErrors');\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { formErrorsKey } from './form-context.js';\nimport type { FieldControlProps, FieldSlotProps, ValidationErrors } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'label' | 'root'> & {\n label: string;\n name: string;\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n id: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n dir: undefined,\n },\n);\ndefineSlots<{ default(props: FieldSlotProps): unknown }>();\nconst errors = inject(\n formErrorsKey,\n computed<ValidationErrors>(() => ({})),\n);\nconst error = computed(() => {\n const map = errors.value;\n return Object.hasOwn(map, props.name) && typeof map[props.name] === 'string'\n ? map[props.name] || undefined\n : undefined;\n});\nconst invalidState = computed(() => props.invalid || !!error.value);\nconst message = computed(() => (props.invalid && props.errorMessage) || error.value || undefined);\nconst { controlId, showError, describedBy } = useFeedback({\n get id() {\n return props.id;\n },\n get description() {\n return props.description;\n },\n get invalid() {\n return invalidState.value;\n },\n get errorMessage() {\n return message.value;\n },\n});\nconst controlProps = computed<FieldControlProps>(() => ({\n id: controlId.value,\n name: props.name,\n class: partClasses('input__control field__control', props.classNames?.control),\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n 'aria-required': props.required || undefined,\n 'aria-invalid': invalidState.value || undefined,\n 'aria-describedby': describedBy.value,\n}));\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input field', $props.classNames?.root)\" :dir=\"dir\">\n <Label :class=\"partClasses('label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <slot :control-props=\"controlProps\" :invalid=\"invalidState\" :error-message=\"message\" />\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"message\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, inject } from 'vue';\nimport { Label } from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { formErrorsKey } from './form-context.js';\nimport type { FieldControlProps, FieldSlotProps, ValidationErrors } from './types.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'label' | 'root'> & {\n label: string;\n name: string;\n id?: string;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n id: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n dir: undefined,\n },\n);\ndefineSlots<{ default(props: FieldSlotProps): unknown }>();\nconst errors = inject(\n formErrorsKey,\n computed<ValidationErrors>(() => ({})),\n);\nconst error = computed(() => {\n const map = errors.value;\n return Object.hasOwn(map, props.name) && typeof map[props.name] === 'string'\n ? map[props.name] || undefined\n : undefined;\n});\nconst invalidState = computed(() => props.invalid || !!error.value);\nconst message = computed(() => (props.invalid && props.errorMessage) || error.value || undefined);\nconst { controlId, showError, describedBy } = useFeedback({\n get id() {\n return props.id;\n },\n get description() {\n return props.description;\n },\n get invalid() {\n return invalidState.value;\n },\n get errorMessage() {\n return message.value;\n },\n});\nconst controlProps = computed<FieldControlProps>(() => ({\n id: controlId.value,\n name: props.name,\n class: partClasses('input__control field__control', props.classNames?.control),\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n 'aria-required': props.required || undefined,\n 'aria-invalid': invalidState.value || undefined,\n 'aria-describedby': describedBy.value,\n}));\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input field', $props.classNames?.root)\" :dir=\"dir\">\n <Label :class=\"partClasses('label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <slot :control-props=\"controlProps\" :invalid=\"invalidState\" :error-message=\"message\" />\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"message\"\n :show-error=\"showError\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, provide } from 'vue';\nimport { formErrorsKey } from './form-context.js';\nimport type { ValidationErrors } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n validationErrors?: ValidationErrors;\n noValidate?: boolean;\n id?: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n validationErrors: () => ({}),\n noValidate: false,\n id: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ submit: [data: FormData, event: SubmitEvent]; reset: [event: Event] }>();\nprovide(\n formErrorsKey,\n computed(() => props.validationErrors),\n);\nfunction submit(event: SubmitEvent) {\n event.preventDefault();\n const form = event.currentTarget as HTMLFormElement;\n const noValidate = props.noValidate;\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 emit('submit', new FormData(form, event.submitter), event);\n}\n</script>\n<template>\n <form\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('form', $props.classNames?.root)\"\n :dir=\"dir\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :novalidate=\"noValidate\"\n @submit=\"submit\"\n @reset=\"emit('reset', $event)\"\n >\n <slot />\n </form>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, provide } from 'vue';\nimport { formErrorsKey } from './form-context.js';\nimport type { ValidationErrors } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'root'> & {\n validationErrors?: ValidationErrors;\n noValidate?: boolean;\n id?: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n validationErrors: () => ({}),\n noValidate: false,\n id: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ submit: [data: FormData, event: SubmitEvent]; reset: [event: Event] }>();\nprovide(\n formErrorsKey,\n computed(() => props.validationErrors),\n);\nfunction submit(event: SubmitEvent) {\n event.preventDefault();\n const form = event.currentTarget as HTMLFormElement;\n const noValidate = props.noValidate;\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 emit('submit', new FormData(form, event.submitter), event);\n}\n</script>\n<template>\n <form\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('form', $props.classNames?.root)\"\n :dir=\"dir\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :novalidate=\"noValidate\"\n @submit=\"submit\"\n @reset=\"emit('reset', $event)\"\n >\n <slot />\n </form>\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { ListboxRoot, ListboxContent, ListboxItem, useId } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'check' | 'description' | 'empty' | 'error' | 'item' | 'label' | 'list' | 'root' | 'text'\n > & {\n label: string;\n options: ListboxOption[];\n modelValue?: string[];\n defaultValue?: string[];\n selectionMode?: ListboxSelectionMode;\n disabled?: boolean;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: () => [],\n selectionMode: 'single',\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n dir: undefined,\n emptyMessage: 'Tidak ada pilihan.',\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string[]] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() =>\n listboxSelection(props.modelValue ?? local.value, props.options, props.selectionMode),\n);\nconst model = computed(() =>\n props.selectionMode === 'multiple' ? selected.value : (selected.value[0] ?? null),\n);\nconst generated = useId();\nconst labelId = computed(() => `${props.id ?? generated}-label`);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const values = Array.isArray(value)\n ? value.filter((id): id is string => typeof id === 'string')\n : typeof value === 'string'\n ? [value]\n : [];\n const next = listboxSelection(values, props.options, props.selectionMode);\n if (\n next.length === selected.value.length &&\n next.every((key, index) => key === selected.value[index])\n )\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input listbox', $props.classNames?.root)\" :dir=\"dir\">\n <span :id=\"labelId\" :class=\"partClasses('label', $props.classNames?.label)\">{{ label }}</span>\n <ListboxRoot\n :model-value=\"model\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :selection-behavior=\"selectionMode === 'single' ? 'replace' : 'toggle'\"\n highlight-on-hover\n @update:model-value=\"update\"\n >\n <ListboxContent\n :id=\"id\"\n :class=\"partClasses('listbox__list', $props.classNames?.list)\"\n :aria-labelledby=\"labelId\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n >\n <ListboxItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :disabled=\"disabled || option.isDisabled\"\n :aria-disabled=\"disabled || option.isDisabled || undefined\"\n :class=\"partClasses('listbox__item', $props.classNames?.item)\"\n >\n <span :class=\"partClasses('listbox__text', $props.classNames?.text)\">{{\n option.label\n }}</span\n ><CheckIcon :class=\"partClasses('listbox__check', $props.classNames?.check)\" />\n </ListboxItem>\n <span\n v-if=\"!options.length\"\n :class=\"partClasses('listbox__empty', $props.classNames?.empty)\"\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n >{{ emptyMessage }}</span\n >\n </ListboxContent>\n </ListboxRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"key in selected\"\n :key=\"key\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"key\"\n :disabled=\"disabled\"\n /></template>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { ListboxRoot, ListboxContent, ListboxItem, useId } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\nimport {\n listboxSelection,\n type ListboxOption,\n type ListboxSelectionMode,\n} from './listbox-selection.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'check' | 'description' | 'empty' | 'error' | 'item' | 'label' | 'list' | 'root' | 'text'\n > & {\n label: string;\n options: ListboxOption[];\n modelValue?: string[];\n defaultValue?: string[];\n selectionMode?: ListboxSelectionMode;\n disabled?: boolean;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n emptyMessage?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: () => [],\n selectionMode: 'single',\n disabled: false,\n invalid: false,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n id: undefined,\n dir: undefined,\n emptyMessage: 'Tidak ada pilihan.',\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: string[]] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(() =>\n listboxSelection(props.modelValue ?? local.value, props.options, props.selectionMode),\n);\nconst model = computed(() =>\n props.selectionMode === 'multiple' ? selected.value : (selected.value[0] ?? null),\n);\nconst generated = useId();\nconst labelId = computed(() => `${props.id ?? generated}-label`);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const values = Array.isArray(value)\n ? value.filter((id): id is string => typeof id === 'string')\n : typeof value === 'string'\n ? [value]\n : [];\n const next = listboxSelection(values, props.options, props.selectionMode);\n if (\n next.length === selected.value.length &&\n next.every((key, index) => key === selected.value[index])\n )\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div v-bind=\"$attrs\" :class=\"partClasses('input listbox', $props.classNames?.root)\" :dir=\"dir\">\n <span :id=\"labelId\" :class=\"partClasses('label', $props.classNames?.label)\">{{ label }}</span>\n <ListboxRoot\n :model-value=\"model\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :selection-behavior=\"selectionMode === 'single' ? 'replace' : 'toggle'\"\n highlight-on-hover\n @update:model-value=\"update\"\n >\n <ListboxContent\n :id=\"id\"\n :class=\"partClasses('listbox__list', $props.classNames?.list)\"\n :aria-labelledby=\"labelId\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"invalid || undefined\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n >\n <ListboxItem\n v-for=\"option in options\"\n :key=\"option.id\"\n :value=\"option.id\"\n :disabled=\"disabled || option.isDisabled\"\n :aria-disabled=\"disabled || option.isDisabled || undefined\"\n :class=\"partClasses('listbox__item', $props.classNames?.item)\"\n >\n <span :class=\"partClasses('listbox__text', $props.classNames?.text)\">{{\n option.label\n }}</span\n ><CheckIcon :class=\"partClasses('listbox__check', $props.classNames?.check)\" />\n </ListboxItem>\n <span\n v-if=\"!options.length\"\n :class=\"partClasses('listbox__empty', $props.classNames?.empty)\"\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n >{{ emptyMessage }}</span\n >\n </ListboxContent>\n </ListboxRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <template v-if=\"name\"\n ><input\n v-for=\"key in selected\"\n :key=\"key\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"key\"\n :disabled=\"disabled\"\n /></template>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n Label,\n} from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'group' | 'label' | 'root' | 'step'> & {\n label: string;\n modelValue?: number | null;\n defaultValue?: number | null;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: null,\n min: undefined,\n max: undefined,\n step: 1,\n locale: 'id-ID',\n formatOptions: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n name: undefined,\n id: undefined,\n dir: undefined,\n incrementLabel: undefined,\n decrementLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: number | null] }>();\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nconst local = ref(finite(props.defaultValue));\nconst selected = computed(() =>\n finite(props.modelValue === undefined ? local.value : props.modelValue),\n);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: number | undefined) {\n if (props.disabled || props.readonly) return;\n const next = finite(value);\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('input number-field', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <NumberFieldRoot\n :id=\"controlId\"\n :model-value=\"selected\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :locale=\"locale\"\n :format-options=\"formatOptions\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n disable-wheel-change\n @update:model-value=\"update\"\n >\n <div :class=\"partClasses('number-field__group', $props.classNames?.group)\">\n <NumberFieldDecrement\n :class=\"partClasses('number-field__step', $props.classNames?.step)\"\n :aria-label=\"decrementLabel ?? `Kurangi ${label}`\"\n >&#8722;</NumberFieldDecrement\n >\n <NumberFieldInput\n :class=\"partClasses('number-field__control', $props.classNames?.control)\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n />\n <NumberFieldIncrement\n :class=\"partClasses('number-field__step', $props.classNames?.step)\"\n :aria-label=\"incrementLabel ?? `Tambah ${label}`\"\n >+</NumberFieldIncrement\n >\n </div>\n </NumberFieldRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"selected === null ? '' : String(selected)\"\n :disabled=\"disabled\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n Label,\n} from 'reka-ui';\nimport FieldFeedback from './FieldFeedback.vue';\nimport { useFeedback } from './useFeedback.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'control' | 'description' | 'error' | 'group' | 'label' | 'root' | 'step'> & {\n label: string;\n modelValue?: number | null;\n defaultValue?: number | null;\n min?: number;\n max?: number;\n step?: number;\n locale?: string;\n formatOptions?: Intl.NumberFormatOptions;\n description?: string;\n errorMessage?: string;\n invalid?: boolean;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n dir?: 'ltr' | 'rtl';\n incrementLabel?: string;\n decrementLabel?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: null,\n min: undefined,\n max: undefined,\n step: 1,\n locale: 'id-ID',\n formatOptions: undefined,\n description: undefined,\n errorMessage: undefined,\n invalid: false,\n disabled: false,\n readonly: false,\n required: false,\n name: undefined,\n id: undefined,\n dir: undefined,\n incrementLabel: undefined,\n decrementLabel: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [value: number | null] }>();\nfunction finite(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\nconst local = ref(finite(props.defaultValue));\nconst selected = computed(() =>\n finite(props.modelValue === undefined ? local.value : props.modelValue),\n);\nconst { controlId, showError, describedBy } = useFeedback(props);\nfunction update(value: number | undefined) {\n if (props.disabled || props.readonly) return;\n const next = finite(value);\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('input number-field', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <Label :class=\"partClasses('label', $props.classNames?.label)\" :for=\"controlId\">{{\n label\n }}</Label>\n <NumberFieldRoot\n :id=\"controlId\"\n :model-value=\"selected\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :locale=\"locale\"\n :format-options=\"formatOptions\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n disable-wheel-change\n @update:model-value=\"update\"\n >\n <div :class=\"partClasses('number-field__group', $props.classNames?.group)\">\n <NumberFieldDecrement\n :class=\"partClasses('number-field__step', $props.classNames?.step)\"\n :aria-label=\"decrementLabel ?? `Kurangi ${label}`\"\n >&#8722;</NumberFieldDecrement\n >\n <NumberFieldInput\n :class=\"partClasses('number-field__control', $props.classNames?.control)\"\n :required=\"required\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n />\n <NumberFieldIncrement\n :class=\"partClasses('number-field__step', $props.classNames?.step)\"\n :aria-label=\"incrementLabel ?? `Tambah ${label}`\"\n >+</NumberFieldIncrement\n >\n </div>\n </NumberFieldRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"errorMessage\"\n :show-error=\"showError\"\n />\n <input\n v-if=\"name\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"selected === null ? '' : String(selected)\"\n :disabled=\"disabled\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nwithDefaults(\n defineProps<\n StylingProps<\n | 'actions'\n | 'content'\n | 'description'\n | 'footer'\n | 'header'\n | 'heading'\n | 'root'\n | 'title'\n | 'titleRow'\n > & { title?: string; description?: string; headingLevel?: 2 | 3 | 4 | 5 | 6 }\n >(),\n { title: undefined, description: undefined, headingLevel: 3 },\n);\ndefineSlots<{\n default?: () => unknown;\n header?: () => unknown;\n 'title-extras'?: () => unknown;\n actions?: () => unknown;\n footer?: () => unknown;\n}>();\n</script>\n<template>\n <div :class=\"partClasses('card', $props.classNames?.root)\">\n <div\n v-if=\"title || description || $slots.actions || $slots.header || $slots['title-extras']\"\n :class=\"partClasses('card__header', $props.classNames?.header)\"\n >\n <div\n v-if=\"title || description || $slots.header || $slots['title-extras']\"\n :class=\"partClasses('card__heading', $props.classNames?.heading)\"\n >\n <slot name=\"header\">\n <div\n v-if=\"$slots['title-extras']\"\n :class=\"partClasses('card__title-row', $props.classNames?.titleRow)\"\n >\n <component\n :is=\"`h${headingLevel}`\"\n v-if=\"title\"\n :class=\"partClasses('card__title', $props.classNames?.title)\"\n >{{ title }}</component\n ><slot name=\"title-extras\" />\n </div>\n <component\n :is=\"`h${headingLevel}`\"\n v-else-if=\"title\"\n :class=\"partClasses('card__title', $props.classNames?.title)\"\n >{{ title }}</component\n >\n <p\n v-if=\"description\"\n :class=\"partClasses('card__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n </slot>\n </div>\n <div v-if=\"$slots.actions\" :class=\"partClasses('card__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n <div :class=\"partClasses('card__content', $props.classNames?.content)\"><slot /></div>\n <div v-if=\"$slots.footer\" :class=\"partClasses('card__footer', $props.classNames?.footer)\">\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nwithDefaults(\n defineProps<\n StylingProps<\n | 'actions'\n | 'content'\n | 'description'\n | 'footer'\n | 'header'\n | 'heading'\n | 'root'\n | 'title'\n | 'titleRow'\n > & { title?: string; description?: string; headingLevel?: 2 | 3 | 4 | 5 | 6 }\n >(),\n { title: undefined, description: undefined, headingLevel: 3 },\n);\ndefineSlots<{\n default?: () => unknown;\n header?: () => unknown;\n 'title-extras'?: () => unknown;\n actions?: () => unknown;\n footer?: () => unknown;\n}>();\n</script>\n<template>\n <div :class=\"partClasses('card', $props.classNames?.root)\">\n <div\n v-if=\"title || description || $slots.actions || $slots.header || $slots['title-extras']\"\n :class=\"partClasses('card__header', $props.classNames?.header)\"\n >\n <div\n v-if=\"title || description || $slots.header || $slots['title-extras']\"\n :class=\"partClasses('card__heading', $props.classNames?.heading)\"\n >\n <slot name=\"header\">\n <div\n v-if=\"$slots['title-extras']\"\n :class=\"partClasses('card__title-row', $props.classNames?.titleRow)\"\n >\n <component\n :is=\"`h${headingLevel}`\"\n v-if=\"title\"\n :class=\"partClasses('card__title', $props.classNames?.title)\"\n >{{ title }}</component\n ><slot name=\"title-extras\" />\n </div>\n <component\n :is=\"`h${headingLevel}`\"\n v-else-if=\"title\"\n :class=\"partClasses('card__title', $props.classNames?.title)\"\n >{{ title }}</component\n >\n <p\n v-if=\"description\"\n :class=\"partClasses('card__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n </slot>\n </div>\n <div v-if=\"$slots.actions\" :class=\"partClasses('card__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n <div :class=\"partClasses('card__content', $props.classNames?.content)\"><slot /></div>\n <div v-if=\"$slots.footer\" :class=\"partClasses('card__footer', $props.classNames?.footer)\">\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BadgeTone } from './types.js';\nwithDefaults(defineProps<StylingProps<'root'> & { tone?: BadgeTone }>(), { tone: 'neutral' });\n</script>\n<template>\n <span :class=\"partClasses('badge', $props.classNames?.root)\" :data-tone=\"tone\"><slot /></span>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BadgeTone } from './types.js';\nwithDefaults(defineProps<StylingProps<'root'> & { tone?: BadgeTone }>(), { tone: 'neutral' });\n</script>\n<template>\n <span :class=\"partClasses('badge', $props.classNames?.root)\" :data-tone=\"tone\"><slot /></span>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<StylingProps<'root'> & { shape?: 'rectangle' | 'circle'; animated?: boolean }>(),\n {\n shape: 'rectangle',\n animated: true,\n },\n);\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n :class=\"partClasses('skeleton', $props.classNames?.root)\"\n :data-shape=\"shape\"\n :data-animated=\"animated ? 'true' : undefined\"\n aria-hidden=\"true\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<StylingProps<'root'> & { shape?: 'rectangle' | 'circle'; animated?: boolean }>(),\n {\n shape: 'rectangle',\n animated: true,\n },\n);\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n :class=\"partClasses('skeleton', $props.classNames?.root)\"\n :data-shape=\"shape\"\n :data-animated=\"animated ? 'true' : undefined\"\n aria-hidden=\"true\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'root'> & { orientation?: 'horizontal' | 'vertical'; decorative?: boolean }\n >(),\n {\n orientation: 'horizontal',\n decorative: true,\n },\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('separator', $props.classNames?.root)\"\n :data-orientation=\"orientation\"\n :role=\"decorative ? 'presentation' : 'separator'\"\n :aria-hidden=\"decorative ? 'true' : undefined\"\n :aria-orientation=\"decorative ? undefined : orientation\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'root'> & { orientation?: 'horizontal' | 'vertical'; decorative?: boolean }\n >(),\n {\n orientation: 'horizontal',\n decorative: true,\n },\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :class=\"partClasses('separator', $props.classNames?.root)\"\n :data-orientation=\"orientation\"\n :role=\"decorative ? 'presentation' : 'separator'\"\n :aria-hidden=\"decorative ? 'true' : undefined\"\n :aria-orientation=\"decorative ? undefined : orientation\"\n />\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport { TabsList, TabsTrigger } from 'reka-ui';\nimport type { TabItem } from './types.js';\nimport { mountTabsIndicator } from './tabs-indicator.js';\ndefineProps<\n StylingProps<\n 'icon' | 'label' | 'list' | 'listContainer' | 'root' | 'scrollButton' | 'separator' | 'trigger'\n > & {\n label: string;\n items: TabItem[];\n showSeparators: boolean;\n previousLabel: string;\n nextLabel: string;\n }\n>();\ndefineSlots<{ icon?: (props: { item: TabItem }) => unknown }>();\nconst container = ref<HTMLDivElement>();\nlet cleanup: (() => void) | undefined;\nonMounted(() => {\n if (container.value) cleanup = mountTabsIndicator(container.value);\n});\nonBeforeUnmount(() => cleanup?.());\n</script>\n<template>\n <div\n ref=\"container\"\n :class=\"partClasses('tabs__list-container', $props.classNames?.listContainer)\"\n >\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'tabs__scroll-button tabs__scroll-button--prev',\n $props.classNames?.scrollButton,\n )\n \"\n data-tabs-scroll=\"prev\"\n hidden\n :aria-label=\"previousLabel\"\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m14 6-6 6 6 6\" /></svg>\n </button>\n <TabsList :class=\"partClasses('tabs__list', $props.classNames?.list)\" :aria-label=\"label\">\n <TabsTrigger\n v-for=\"(item, index) in items\"\n :key=\"item.id\"\n :class=\"partClasses('tabs__trigger', $props.classNames?.trigger)\"\n :value=\"item.id\"\n :disabled=\"item.isDisabled\"\n >\n <span\n v-if=\"showSeparators && index > 0\"\n :class=\"partClasses('tabs__separator', $props.classNames?.separator)\"\n aria-hidden=\"true\"\n />\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('tabs__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span :class=\"partClasses('tabs__label', $props.classNames?.label)\">{{ item.label }}</span>\n </TabsTrigger>\n </TabsList>\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'tabs__scroll-button tabs__scroll-button--next',\n $props.classNames?.scrollButton,\n )\n \"\n data-tabs-scroll=\"next\"\n hidden\n :aria-label=\"nextLabel\"\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m10 6 6 6-6 6\" /></svg>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport { TabsList, TabsTrigger } from 'reka-ui';\nimport type { TabItem } from './types.js';\nimport { mountTabsIndicator } from './tabs-indicator.js';\ndefineProps<\n StylingProps<\n 'icon' | 'label' | 'list' | 'listContainer' | 'root' | 'scrollButton' | 'separator' | 'trigger'\n > & {\n label: string;\n items: TabItem[];\n showSeparators: boolean;\n previousLabel: string;\n nextLabel: string;\n }\n>();\ndefineSlots<{ icon?: (props: { item: TabItem }) => unknown }>();\nconst container = ref<HTMLDivElement>();\nlet cleanup: (() => void) | undefined;\nonMounted(() => {\n if (container.value) cleanup = mountTabsIndicator(container.value);\n});\nonBeforeUnmount(() => cleanup?.());\n</script>\n<template>\n <div\n ref=\"container\"\n :class=\"partClasses('tabs__list-container', $props.classNames?.listContainer)\"\n >\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'tabs__scroll-button tabs__scroll-button--prev',\n $props.classNames?.scrollButton,\n )\n \"\n data-tabs-scroll=\"prev\"\n hidden\n :aria-label=\"previousLabel\"\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m14 6-6 6 6 6\" /></svg>\n </button>\n <TabsList :class=\"partClasses('tabs__list', $props.classNames?.list)\" :aria-label=\"label\">\n <TabsTrigger\n v-for=\"(item, index) in items\"\n :key=\"item.id\"\n :class=\"partClasses('tabs__trigger', $props.classNames?.trigger)\"\n :value=\"item.id\"\n :disabled=\"item.isDisabled\"\n >\n <span\n v-if=\"showSeparators && index > 0\"\n :class=\"partClasses('tabs__separator', $props.classNames?.separator)\"\n aria-hidden=\"true\"\n />\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('tabs__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span :class=\"partClasses('tabs__label', $props.classNames?.label)\">{{ item.label }}</span>\n </TabsTrigger>\n </TabsList>\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'tabs__scroll-button tabs__scroll-button--next',\n $props.classNames?.scrollButton,\n )\n \"\n data-tabs-scroll=\"next\"\n hidden\n :aria-label=\"nextLabel\"\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m10 6 6 6-6 6\" /></svg>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { TabsRoot, TabsContent } from 'reka-ui';\nimport TabsListView from './TabsListView.vue';\nimport type { TabItem, ButtonSize, TabsVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'actions'\n | 'extras'\n | 'icon'\n | 'label'\n | 'list'\n | 'listContainer'\n | 'navigation'\n | 'panel'\n | 'root'\n | 'scrollButton'\n | 'separator'\n | 'toolbar'\n | 'trigger'\n > & {\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. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n previousLabel?: string;\n nextLabel?: string;\n items: TabItem[];\n modelValue?: string;\n defaultValue?: string;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: undefined,\n activationMode: 'manual',\n variant: 'primary',\n size: 'md',\n orientation: 'horizontal',\n align: 'center',\n fullWidth: false,\n inset: 'default',\n showSeparators: false,\n previousLabel: 'Tab sebelumnya / Previous tabs',\n nextLabel: 'Tab berikutnya / Next tabs',\n dir: undefined,\n id: undefined,\n },\n);\ndefineSlots<{\n default?: (props: { item: TabItem }) => unknown;\n extras?: () => unknown;\n actions?: () => unknown;\n icon?: (props: { item: TabItem }) => unknown;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(\n () =>\n props.items.find((item) => item.id === (props.modelValue ?? local.value) && !item.isDisabled)\n ?.id ?? props.items.find((item) => !item.isDisabled)?.id,\n);\nfunction update(value: string | number) {\n const next = String(value);\n if (next !== selected.value && props.items.some((item) => item.id === next && !item.isDisabled)) {\n local.value = next;\n emit('update:modelValue', next);\n }\n}\n</script>\n<template>\n <TabsRoot\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"\n partClasses(\n [\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 $props.classNames?.root,\n )\n \"\n :model-value=\"selected ?? ''\"\n :activation-mode=\"activationMode\"\n :dir=\"dir\"\n :orientation=\"orientation\"\n :data-orientation=\"orientation\"\n @update:model-value=\"update\"\n >\n <div\n v-if=\"$slots.extras || $slots.actions\"\n :class=\"partClasses('tabs__toolbar', $props.classNames?.toolbar)\"\n >\n <div :class=\"partClasses('tabs__navigation', $props.classNames?.navigation)\">\n <TabsListView\n v-if=\"items.length\"\n :class-names=\"classNames\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <div v-if=\"$slots.extras\" :class=\"partClasses('tabs__extras', $props.classNames?.extras)\">\n <slot name=\"extras\" />\n </div>\n </div>\n <div v-if=\"$slots.actions\" :class=\"partClasses('tabs__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n <TabsListView\n v-else-if=\"items.length\"\n :class-names=\"classNames\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <TabsContent\n v-for=\"item in items\"\n :key=\"item.id\"\n :class=\"partClasses('tabs__panel', $props.classNames?.panel)\"\n :value=\"item.id\"\n ><slot :item=\"item\"\n /></TabsContent>\n </TabsRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { TabsRoot, TabsContent } from 'reka-ui';\nimport TabsListView from './TabsListView.vue';\nimport type { TabItem, ButtonSize, TabsVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'actions'\n | 'extras'\n | 'icon'\n | 'label'\n | 'list'\n | 'listContainer'\n | 'navigation'\n | 'panel'\n | 'root'\n | 'scrollButton'\n | 'separator'\n | 'toolbar'\n | 'trigger'\n > & {\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. */\n inset?: 'default' | 'none';\n showSeparators?: boolean;\n previousLabel?: string;\n nextLabel?: string;\n items: TabItem[];\n modelValue?: string;\n defaultValue?: string;\n activationMode?: 'automatic' | 'manual';\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n modelValue: undefined,\n defaultValue: undefined,\n activationMode: 'manual',\n variant: 'primary',\n size: 'md',\n orientation: 'horizontal',\n align: 'center',\n fullWidth: false,\n inset: 'default',\n showSeparators: false,\n previousLabel: 'Tab sebelumnya / Previous tabs',\n nextLabel: 'Tab berikutnya / Next tabs',\n dir: undefined,\n id: undefined,\n },\n);\ndefineSlots<{\n default?: (props: { item: TabItem }) => unknown;\n extras?: () => unknown;\n actions?: () => unknown;\n icon?: (props: { item: TabItem }) => unknown;\n}>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>();\nconst local = ref(props.defaultValue);\nconst selected = computed(\n () =>\n props.items.find((item) => item.id === (props.modelValue ?? local.value) && !item.isDisabled)\n ?.id ?? props.items.find((item) => !item.isDisabled)?.id,\n);\nfunction update(value: string | number) {\n const next = String(value);\n if (next !== selected.value && props.items.some((item) => item.id === next && !item.isDisabled)) {\n local.value = next;\n emit('update:modelValue', next);\n }\n}\n</script>\n<template>\n <TabsRoot\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"\n partClasses(\n [\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 $props.classNames?.root,\n )\n \"\n :model-value=\"selected ?? ''\"\n :activation-mode=\"activationMode\"\n :dir=\"dir\"\n :orientation=\"orientation\"\n :data-orientation=\"orientation\"\n @update:model-value=\"update\"\n >\n <div\n v-if=\"$slots.extras || $slots.actions\"\n :class=\"partClasses('tabs__toolbar', $props.classNames?.toolbar)\"\n >\n <div :class=\"partClasses('tabs__navigation', $props.classNames?.navigation)\">\n <TabsListView\n v-if=\"items.length\"\n :class-names=\"classNames\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <div v-if=\"$slots.extras\" :class=\"partClasses('tabs__extras', $props.classNames?.extras)\">\n <slot name=\"extras\" />\n </div>\n </div>\n <div v-if=\"$slots.actions\" :class=\"partClasses('tabs__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n <TabsListView\n v-else-if=\"items.length\"\n :class-names=\"classNames\"\n :label=\"label\"\n :items=\"items\"\n :show-separators=\"showSeparators\"\n :previous-label=\"previousLabel\"\n :next-label=\"nextLabel\"\n >\n <template v-if=\"$slots.icon\" #icon=\"{ item }\"><slot name=\"icon\" :item=\"item\" /></template>\n </TabsListView>\n <TabsContent\n v-for=\"item in items\"\n :key=\"item.id\"\n :class=\"partClasses('tabs__panel', $props.classNames?.panel)\"\n :value=\"item.id\"\n ><slot :item=\"item\"\n /></TabsContent>\n </TabsRoot>\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { paginationModel } from './pagination-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'button' | 'gap' | 'root' | 'summary'> & {\n totalItems: number;\n pageSize?: number;\n modelValue?: number;\n defaultValue?: number;\n disabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n pageSize: 10,\n modelValue: undefined,\n defaultValue: 1,\n disabled: false,\n siblingCount: 1,\n label: 'Navigasi halaman',\n previousLabel: 'Sebelumnya',\n nextLabel: 'Berikutnya',\n pageLabel: 'Halaman',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [page: number] }>();\nconst local = ref(props.defaultValue);\nconst model = computed(() =>\n paginationModel(\n props.totalItems,\n props.pageSize,\n props.modelValue ?? local.value,\n props.siblingCount,\n ),\n);\nfunction change(next: number) {\n if (props.disabled || next === model.value.current || next < 1 || next > model.value.count)\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <nav\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('pagination', $props.classNames?.root)\"\n :aria-label=\"label\"\n :dir=\"dir\"\n >\n <button\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :disabled=\"disabled || model.current === 1\"\n @click=\"change(model.current - 1)\"\n >\n {{ previousLabel }}\n </button>\n <template v-for=\"entry in model.entries\" :key=\"entry\">\n <span\n v-if=\"typeof entry === 'string'\"\n :class=\"partClasses('pagination__gap', $props.classNames?.gap)\"\n aria-hidden=\"true\"\n >...</span\n >\n <button\n v-else\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :aria-label=\"`${pageLabel} ${entry}`\"\n :aria-current=\"entry === model.current ? 'page' : undefined\"\n :disabled=\"disabled\"\n @click=\"change(entry)\"\n >\n {{ entry }}\n </button>\n </template>\n <button\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :disabled=\"disabled || model.current === model.count\"\n @click=\"change(model.current + 1)\"\n >\n {{ nextLabel }}\n </button>\n <span :class=\"partClasses('pagination__summary', $props.classNames?.summary)\" aria-live=\"polite\"\n >{{ model.current }} / {{ model.count }}</span\n >\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport { paginationModel } from './pagination-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'button' | 'gap' | 'root' | 'summary'> & {\n totalItems: number;\n pageSize?: number;\n modelValue?: number;\n defaultValue?: number;\n disabled?: boolean;\n siblingCount?: number;\n label?: string;\n previousLabel?: string;\n nextLabel?: string;\n pageLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n pageSize: 10,\n modelValue: undefined,\n defaultValue: 1,\n disabled: false,\n siblingCount: 1,\n label: 'Navigasi halaman',\n previousLabel: 'Sebelumnya',\n nextLabel: 'Berikutnya',\n pageLabel: 'Halaman',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:modelValue': [page: number] }>();\nconst local = ref(props.defaultValue);\nconst model = computed(() =>\n paginationModel(\n props.totalItems,\n props.pageSize,\n props.modelValue ?? local.value,\n props.siblingCount,\n ),\n);\nfunction change(next: number) {\n if (props.disabled || next === model.value.current || next < 1 || next > model.value.count)\n return;\n local.value = next;\n emit('update:modelValue', next);\n}\n</script>\n<template>\n <nav\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('pagination', $props.classNames?.root)\"\n :aria-label=\"label\"\n :dir=\"dir\"\n >\n <button\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :disabled=\"disabled || model.current === 1\"\n @click=\"change(model.current - 1)\"\n >\n {{ previousLabel }}\n </button>\n <template v-for=\"entry in model.entries\" :key=\"entry\">\n <span\n v-if=\"typeof entry === 'string'\"\n :class=\"partClasses('pagination__gap', $props.classNames?.gap)\"\n aria-hidden=\"true\"\n >...</span\n >\n <button\n v-else\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :aria-label=\"`${pageLabel} ${entry}`\"\n :aria-current=\"entry === model.current ? 'page' : undefined\"\n :disabled=\"disabled\"\n @click=\"change(entry)\"\n >\n {{ entry }}\n </button>\n </template>\n <button\n type=\"button\"\n :class=\"partClasses('pagination__button', $props.classNames?.button)\"\n :disabled=\"disabled || model.current === model.count\"\n @click=\"change(model.current + 1)\"\n >\n {{ nextLabel }}\n </button>\n <span :class=\"partClasses('pagination__summary', $props.classNames?.summary)\" aria-live=\"polite\"\n >{{ model.current }} / {{ model.count }}</span\n >\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\ndefineProps<StylingProps<'caption' | 'root' | 'scroll'> & { caption: string }>();\n</script>\n<template>\n <div\n :class=\"partClasses('table__scroll', $props.classNames?.scroll)\"\n role=\"region\"\n :aria-label=\"caption\"\n tabindex=\"0\"\n >\n <table v-bind=\"$attrs\" :class=\"partClasses('table', $props.classNames?.root)\">\n <caption :class=\"partClasses('table__caption', $props.classNames?.caption)\">\n {{\n caption\n }}\n </caption>\n <slot />\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\ndefineProps<StylingProps<'caption' | 'root' | 'scroll'> & { caption: string }>();\n</script>\n<template>\n <div\n :class=\"partClasses('table__scroll', $props.classNames?.scroll)\"\n role=\"region\"\n :aria-label=\"caption\"\n tabindex=\"0\"\n >\n <table v-bind=\"$attrs\" :class=\"partClasses('table', $props.classNames?.root)\">\n <caption :class=\"partClasses('table__caption', $props.classNames?.caption)\">\n {{\n caption\n }}\n </caption>\n <slot />\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport Table from './Table.vue';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'body'\n | 'caption'\n | 'cell'\n | 'column'\n | 'empty'\n | 'error'\n | 'header'\n | 'root'\n | 'row'\n | 'scroll'\n | 'sort'\n | 'status'\n | 'table'\n > & {\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n loading?: boolean;\n disabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n sort: null,\n loading: false,\n disabled: false,\n emptyMessage: 'Tidak ada data.',\n loadingMessage: 'Memuat data...',\n errorMessage: undefined,\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nfunction requestSort(column: DataTableColumn) {\n if (props.loading || props.disabled || !column.sortable) return;\n emit('update:sort', {\n columnId: column.id,\n direction:\n props.sort?.columnId === column.id && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n}\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('data-table', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <Table\n :class-names=\"{\n root: classNames?.table,\n scroll: classNames?.scroll,\n caption: classNames?.caption,\n }\"\n :caption=\"caption\"\n :aria-busy=\"loading || undefined\"\n >\n <thead :class=\"classNames?.header\">\n <tr :class=\"classNames?.row\">\n <th\n v-for=\"column in columns\"\n :key=\"column.id\"\n :class=\"classNames?.column\"\n scope=\"col\"\n :aria-sort=\"\n column.sortable ? (sort?.columnId === column.id ? sort.direction : 'none') : undefined\n \"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n :class=\"partClasses('table__sort', $props.classNames?.sort)\"\n :disabled=\"loading || disabled\"\n @click=\"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></button\n ><template v-else>{{ column.label }}</template>\n </th>\n </tr>\n </thead>\n <tbody :class=\"classNames?.body\">\n <tr v-for=\"row in rows\" :key=\"row.id\" :class=\"classNames?.row\">\n <td v-for=\"column in columns\" :key=\"column.id\" :class=\"classNames?.cell\">\n <slot name=\"cell\" :row=\"row\" :column=\"column\" :value=\"row.cells[column.id]\">{{\n row.cells[column.id] ?? ''\n }}</slot>\n </td>\n </tr>\n <tr v-if=\"!rows.length\">\n <td\n :colspan=\"Math.max(1, columns.length)\"\n :class=\"partClasses('table__empty', $props.classNames?.empty)\"\n >\n {{ loading ? loadingMessage : errorMessage || emptyMessage }}\n </td>\n </tr>\n </tbody>\n </Table>\n <p\n v-if=\"loading\"\n :class=\"partClasses('data-table__status', $props.classNames?.status)\"\n role=\"status\"\n >\n {{ loadingMessage }}\n </p>\n <p\n v-if=\"errorMessage && !loading\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n role=\"alert\"\n >\n {{ errorMessage }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport Table from './Table.vue';\nimport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'body'\n | 'caption'\n | 'cell'\n | 'column'\n | 'empty'\n | 'error'\n | 'header'\n | 'root'\n | 'row'\n | 'scroll'\n | 'sort'\n | 'status'\n | 'table'\n > & {\n caption: string;\n columns: DataTableColumn[];\n rows: DataTableRow[];\n sort?: TableSort | null;\n loading?: boolean;\n disabled?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n errorMessage?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n sort: null,\n loading: false,\n disabled: false,\n emptyMessage: 'Tidak ada data.',\n loadingMessage: 'Memuat data...',\n errorMessage: undefined,\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:sort': [sort: TableSort] }>();\nfunction requestSort(column: DataTableColumn) {\n if (props.loading || props.disabled || !column.sortable) return;\n emit('update:sort', {\n columnId: column.id,\n direction:\n props.sort?.columnId === column.id && props.sort.direction === 'ascending'\n ? 'descending'\n : 'ascending',\n });\n}\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('data-table', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <Table\n :class-names=\"{\n root: classNames?.table,\n scroll: classNames?.scroll,\n caption: classNames?.caption,\n }\"\n :caption=\"caption\"\n :aria-busy=\"loading || undefined\"\n >\n <thead :class=\"classNames?.header\">\n <tr :class=\"classNames?.row\">\n <th\n v-for=\"column in columns\"\n :key=\"column.id\"\n :class=\"classNames?.column\"\n scope=\"col\"\n :aria-sort=\"\n column.sortable ? (sort?.columnId === column.id ? sort.direction : 'none') : undefined\n \"\n >\n <button\n v-if=\"column.sortable\"\n type=\"button\"\n :class=\"partClasses('table__sort', $props.classNames?.sort)\"\n :disabled=\"loading || disabled\"\n @click=\"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></button\n ><template v-else>{{ column.label }}</template>\n </th>\n </tr>\n </thead>\n <tbody :class=\"classNames?.body\">\n <tr v-for=\"row in rows\" :key=\"row.id\" :class=\"classNames?.row\">\n <td v-for=\"column in columns\" :key=\"column.id\" :class=\"classNames?.cell\">\n <slot name=\"cell\" :row=\"row\" :column=\"column\" :value=\"row.cells[column.id]\">{{\n row.cells[column.id] ?? ''\n }}</slot>\n </td>\n </tr>\n <tr v-if=\"!rows.length\">\n <td\n :colspan=\"Math.max(1, columns.length)\"\n :class=\"partClasses('table__empty', $props.classNames?.empty)\"\n >\n {{ loading ? loadingMessage : errorMessage || emptyMessage }}\n </td>\n </tr>\n </tbody>\n </Table>\n <p\n v-if=\"loading\"\n :class=\"partClasses('data-table__status', $props.classNames?.status)\"\n role=\"status\"\n >\n {{ loadingMessage }}\n </p>\n <p\n v-if=\"errorMessage && !loading\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n role=\"alert\"\n >\n {{ errorMessage }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BadgeTone } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'actions' | 'description' | 'root' | 'title'> & {\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n id?: string;\n }\n >(),\n { description: undefined, tone: 'info', announcement: 'off', id: undefined },\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('alert', $props.classNames?.root)\"\n :data-tone=\"tone\"\n :role=\"\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n \"\n >\n <p :class=\"partClasses('alert__title', $props.classNames?.title)\">{{ title }}</p>\n <p\n v-if=\"description\"\n :class=\"partClasses('alert__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <slot />\n <div v-if=\"$slots.actions\" :class=\"partClasses('alert__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BadgeTone } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'actions' | 'description' | 'root' | 'title'> & {\n title: string;\n description?: string;\n tone?: BadgeTone;\n announcement?: 'off' | 'polite' | 'assertive';\n id?: string;\n }\n >(),\n { description: undefined, tone: 'info', announcement: 'off', id: undefined },\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('alert', $props.classNames?.root)\"\n :data-tone=\"tone\"\n :role=\"\n announcement === 'polite' ? 'status' : announcement === 'assertive' ? 'alert' : undefined\n \"\n >\n <p :class=\"partClasses('alert__title', $props.classNames?.title)\">{{ title }}</p>\n <p\n v-if=\"description\"\n :class=\"partClasses('alert__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <slot />\n <div v-if=\"$slots.actions\" :class=\"partClasses('alert__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, nextTick, onBeforeUnmount, onMounted, provide, ref, shallowRef } from 'vue';\nimport { ToastProvider as RekaToastProvider, ToastViewport } from 'reka-ui';\nimport Toast from './Toast.vue';\nimport {\n createToastManager,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\nimport { toastManagerKey } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'action'\n | 'actions'\n | 'body'\n | 'close'\n | 'description'\n | 'indicator'\n | 'progress'\n | 'root'\n | 'title'\n | 'toast'\n | 'viewport'\n > & {\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n hotkey?: string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }\n >(),\n {\n manager: undefined,\n placement: 'bottom-end',\n label: 'Notifikasi',\n closeLabel: 'Tutup',\n hotkey: () => ['altKey', 'KeyT'],\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { toast: ToastManager }) => unknown;\n item?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n toast?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\n// Capture ownership at setup; replacing a mounted provider's manager is unsupported.\nconst manager = props.manager ?? createToastManager();\nconst owned = !props.manager;\nprovide(toastManagerKey, manager);\nconst entries = shallowRef<readonly ToastEntry[]>(manager.getServerSnapshot());\nconst region = ref<HTMLElement>();\nconst active = ref(false);\nconst causes = new Set<string>();\nlet unsubscribe: (() => void) | undefined;\nlet detach: (() => void) | undefined;\nlet previousFocus: HTMLElement | undefined;\nconst positions = new Map<string, { x: number; y: number }>();\nconst movements = new Map<HTMLElement, Animation>();\nlet reflowQueued = false;\nconst hotkeyText = computed(() =>\n props.hotkey\n .map(\n (key) =>\n ({ altKey: 'Alt', ctrlKey: 'Ctrl', metaKey: 'Meta', shiftKey: 'Shift' })[key] ??\n key.replace(/^Key|^Digit/, ''),\n )\n .join('+'),\n);\nconst viewportLabel = computed(() =>\n hotkeyText.value ? `${props.label} (${hotkeyText.value})` : props.label,\n);\nfunction pause(cause: string) {\n if (!causes.has(cause)) {\n causes.add(cause);\n manager.pause(`vue:${cause}`);\n }\n}\nfunction resume(cause: string) {\n if (causes.delete(cause)) manager.resume(`vue:${cause}`);\n}\nfunction focusOut(event: FocusEvent) {\n if (!region.value?.contains(event.relatedTarget as Node | null)) resume('focus');\n}\nfunction focusIn(event: FocusEvent) {\n if (event.relatedTarget instanceof HTMLElement && !region.value?.contains(event.relatedTarget)) {\n previousFocus = event.relatedTarget;\n }\n pause('focus');\n}\nfunction windowBlur() {\n pause('window');\n}\nfunction windowFocus() {\n resume('window');\n}\nfunction visibility() {\n if (document.hidden) pause('document');\n else resume('document');\n}\nfunction list() {\n return region.value?.querySelector<HTMLElement>('.toast-list');\n}\nfunction restoreIfEmpty() {\n const focused = document.activeElement;\n if (!region.value?.contains(focused)) return;\n if (!entries.value.some((entry) => entry.state === 'open')) {\n if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n else if (focused instanceof HTMLElement) focused.blur();\n return;\n }\n const id =\n focused instanceof Element\n ? focused.closest<HTMLElement>('[data-toast-id]')?.dataset.toastId\n : undefined;\n if (id && !entries.value.some((entry) => entry.id === id && entry.state === 'open')) {\n list()?.focus({ preventScroll: true });\n }\n}\nfunction keyboard(event: KeyboardEvent) {\n if (\n !props.hotkey.length ||\n event.defaultPrevented ||\n !entries.value.some((entry) => entry.state === 'open')\n )\n return;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'] as const;\n const matches = props.hotkey.every((key) =>\n modifiers.includes(key as (typeof modifiers)[number])\n ? event[key as (typeof modifiers)[number]]\n : event.code === key ||\n (typeof event.key === 'string' && event.key.toLowerCase() === key.toLowerCase()),\n );\n if (!matches || modifiers.some((key) => event[key] !== props.hotkey.includes(key))) return;\n previousFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement : undefined;\n list()?.focus({ preventScroll: true });\n event.preventDefault();\n}\nfunction escape(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n const target =\n event.target instanceof Element ? event.target.closest<HTMLElement>('[data-toast-id]') : null;\n const entry = target\n ? entries.value.find((item) => item.id === target.dataset.toastId && item.state === 'open')\n : [...entries.value].reverse().find((item) => item.state === 'open');\n if (!entry) return;\n event.preventDefault();\n event.stopPropagation();\n list()?.focus({ preventScroll: true });\n manager.dismiss(entry.id);\n restoreIfEmpty();\n}\nfunction capturePositions() {\n positions.clear();\n if (!active.value || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n // Layout offsets exclude the CSS entry/swipe transform and any current FLIP translation.\n if (element.dataset.toastId)\n positions.set(element.dataset.toastId, {\n x: element.offsetLeft + (origin?.left ?? 0),\n y: element.offsetTop + (origin?.top ?? 0),\n });\n });\n}\nfunction animateMovement(previous: Map<string, { x: number; y: number }>) {\n if (!active.value) return;\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (reduced) {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n return;\n }\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n const before = previous.get(element.dataset.toastId ?? '');\n if (!before || element.dataset.state !== 'open' || !element.animate) return;\n const x = before.x - element.offsetLeft - (origin?.left ?? 0);\n const y = before.y - element.offsetTop - (origin?.top ?? 0);\n if (!x && !y) return;\n movements.get(element)?.cancel();\n const css = getComputedStyle(element);\n const token = css.getPropertyValue('--ds-motion-duration-normal').trim();\n const parsed = Number.parseFloat(token);\n const duration = Number.isFinite(parsed) ? parsed * (token.endsWith('ms') ? 1 : 1000) : 200;\n const animation = element.animate([{ translate: `${x}px ${y}px` }, { translate: '0px 0px' }], {\n duration,\n easing: css.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease',\n });\n movements.set(element, animation);\n const remove = () => {\n if (movements.get(element) === animation) movements.delete(element);\n };\n void animation.finished.then(remove, remove);\n });\n for (const [element, animation] of movements) {\n if (!element.isConnected) {\n animation.cancel();\n movements.delete(element);\n }\n }\n}\nonMounted(() => {\n // attach throws before any subscriptions/listeners on duplicate ownership.\n detach = manager.attach();\n active.value = true;\n entries.value = manager.getSnapshot();\n unsubscribe = manager.subscribe(() => {\n if (!reflowQueued) {\n capturePositions();\n const previous = new Map(positions);\n reflowQueued = true;\n entries.value = manager.getSnapshot();\n void nextTick(() => {\n reflowQueued = false;\n animateMovement(previous);\n });\n }\n entries.value = manager.getSnapshot();\n restoreIfEmpty();\n });\n window.addEventListener('blur', windowBlur);\n window.addEventListener('focus', windowFocus);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keyboard);\n visibility();\n if (!document.hasFocus()) pause('window');\n});\nonBeforeUnmount(() => {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n if (!active.value) return;\n active.value = false;\n const errors: unknown[] = [];\n const cleanup = (operation: (() => void) | undefined) => {\n try {\n operation?.();\n } catch (error) {\n errors.push(error);\n }\n };\n cleanup(unsubscribe);\n cleanup(detach);\n // Detach first to prevent a briefly resumed external timer while clearing our pause causes.\n [...causes].forEach((cause) => cleanup(() => resume(cause)));\n if (owned) cleanup(() => manager.dispose());\n window.removeEventListener('blur', windowBlur);\n window.removeEventListener('focus', windowFocus);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keyboard);\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast provider cleanup failed.');\n});\n</script>\n\n<template>\n <RekaToastProvider :duration=\"Infinity\" :disable-swipe=\"true\" :label=\"label\">\n <slot :toast=\"manager\" />\n <div\n ref=\"region\"\n v-bind=\"$attrs\"\n :class=\"partClasses('toast-region', $props.classNames?.root)\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n @pointerenter=\"pause('hover')\"\n @pointerleave=\"resume('hover')\"\n @focusin=\"focusIn\"\n @focusout=\"focusOut\"\n @keydown.capture=\"escape\"\n >\n <!-- Reka's native array matches keys individually; Kazee handles the complete chord. -->\n <ToastViewport\n :class=\"partClasses('toast-list', $props.classNames?.viewport)\"\n :hotkey=\"[]\"\n :label=\"viewportLabel\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n />\n </div>\n <template v-for=\"entry in entries\" :key=\"entry.generation\"\n ><slot name=\"item\" :entry=\"entry\" :dismiss=\"() => manager.dismiss(entry.id)\">\n <Toast\n :entry=\"entry\"\n :class-names=\"{ ...classNames, root: classNames?.toast }\"\n :manager=\"manager\"\n :placement=\"placement\"\n :dir=\"dir\"\n :close-label=\"closeLabel\"\n :show-progress=\"showProgress\"\n :show-close-button=\"showCloseButton\"\n :swipe-threshold=\"swipeThreshold\"\n >\n <template v-if=\"$slots.toast\" #default=\"slotProps\"\n ><slot name=\"toast\" v-bind=\"slotProps\"\n /></template>\n <template v-if=\"$slots.indicator\" #indicator=\"slotProps\"\n ><slot name=\"indicator\" v-bind=\"slotProps\"\n /></template>\n </Toast> </slot\n ></template>\n </RekaToastProvider>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, nextTick, onBeforeUnmount, onMounted, provide, ref, shallowRef } from 'vue';\nimport { ToastProvider as RekaToastProvider, ToastViewport } from 'reka-ui';\nimport Toast from './Toast.vue';\nimport {\n createToastManager,\n type ToastEntry,\n type ToastManager,\n type ToastPlacement,\n} from './toast-model.js';\nimport { toastManagerKey } from './useToast.js';\n\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'action'\n | 'actions'\n | 'body'\n | 'close'\n | 'description'\n | 'indicator'\n | 'progress'\n | 'root'\n | 'title'\n | 'toast'\n | 'viewport'\n > & {\n manager?: ToastManager;\n placement?: ToastPlacement;\n label?: string;\n closeLabel?: string;\n hotkey?: string[];\n dir?: 'ltr' | 'rtl';\n showProgress?: boolean;\n showCloseButton?: boolean;\n swipeThreshold?: number;\n }\n >(),\n {\n manager: undefined,\n placement: 'bottom-end',\n label: 'Notifikasi',\n closeLabel: 'Tutup',\n hotkey: () => ['altKey', 'KeyT'],\n dir: undefined,\n showProgress: false,\n showCloseButton: false,\n swipeThreshold: 50,\n },\n);\ndefineSlots<{\n default?: (props: { toast: ToastManager }) => unknown;\n item?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n toast?: (props: { entry: ToastEntry; dismiss: () => void }) => unknown;\n indicator?: (props: { entry: ToastEntry }) => unknown;\n}>();\n// Capture ownership at setup; replacing a mounted provider's manager is unsupported.\nconst manager = props.manager ?? createToastManager();\nconst owned = !props.manager;\nprovide(toastManagerKey, manager);\nconst entries = shallowRef<readonly ToastEntry[]>(manager.getServerSnapshot());\nconst region = ref<HTMLElement>();\nconst active = ref(false);\nconst causes = new Set<string>();\nlet unsubscribe: (() => void) | undefined;\nlet detach: (() => void) | undefined;\nlet previousFocus: HTMLElement | undefined;\nconst positions = new Map<string, { x: number; y: number }>();\nconst movements = new Map<HTMLElement, Animation>();\nlet reflowQueued = false;\nconst hotkeyText = computed(() =>\n props.hotkey\n .map(\n (key) =>\n ({ altKey: 'Alt', ctrlKey: 'Ctrl', metaKey: 'Meta', shiftKey: 'Shift' })[key] ??\n key.replace(/^Key|^Digit/, ''),\n )\n .join('+'),\n);\nconst viewportLabel = computed(() =>\n hotkeyText.value ? `${props.label} (${hotkeyText.value})` : props.label,\n);\nfunction pause(cause: string) {\n if (!causes.has(cause)) {\n causes.add(cause);\n manager.pause(`vue:${cause}`);\n }\n}\nfunction resume(cause: string) {\n if (causes.delete(cause)) manager.resume(`vue:${cause}`);\n}\nfunction focusOut(event: FocusEvent) {\n if (!region.value?.contains(event.relatedTarget as Node | null)) resume('focus');\n}\nfunction focusIn(event: FocusEvent) {\n if (event.relatedTarget instanceof HTMLElement && !region.value?.contains(event.relatedTarget)) {\n previousFocus = event.relatedTarget;\n }\n pause('focus');\n}\nfunction windowBlur() {\n pause('window');\n}\nfunction windowFocus() {\n resume('window');\n}\nfunction visibility() {\n if (document.hidden) pause('document');\n else resume('document');\n}\nfunction list() {\n return region.value?.querySelector<HTMLElement>('.toast-list');\n}\nfunction restoreIfEmpty() {\n const focused = document.activeElement;\n if (!region.value?.contains(focused)) return;\n if (!entries.value.some((entry) => entry.state === 'open')) {\n if (previousFocus?.isConnected) previousFocus.focus({ preventScroll: true });\n else if (focused instanceof HTMLElement) focused.blur();\n return;\n }\n const id =\n focused instanceof Element\n ? focused.closest<HTMLElement>('[data-toast-id]')?.dataset.toastId\n : undefined;\n if (id && !entries.value.some((entry) => entry.id === id && entry.state === 'open')) {\n list()?.focus({ preventScroll: true });\n }\n}\nfunction keyboard(event: KeyboardEvent) {\n if (\n !props.hotkey.length ||\n event.defaultPrevented ||\n !entries.value.some((entry) => entry.state === 'open')\n )\n return;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'] as const;\n const matches = props.hotkey.every((key) =>\n modifiers.includes(key as (typeof modifiers)[number])\n ? event[key as (typeof modifiers)[number]]\n : event.code === key ||\n (typeof event.key === 'string' && event.key.toLowerCase() === key.toLowerCase()),\n );\n if (!matches || modifiers.some((key) => event[key] !== props.hotkey.includes(key))) return;\n previousFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement : undefined;\n list()?.focus({ preventScroll: true });\n event.preventDefault();\n}\nfunction escape(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n const target =\n event.target instanceof Element ? event.target.closest<HTMLElement>('[data-toast-id]') : null;\n const entry = target\n ? entries.value.find((item) => item.id === target.dataset.toastId && item.state === 'open')\n : [...entries.value].reverse().find((item) => item.state === 'open');\n if (!entry) return;\n event.preventDefault();\n event.stopPropagation();\n list()?.focus({ preventScroll: true });\n manager.dismiss(entry.id);\n restoreIfEmpty();\n}\nfunction capturePositions() {\n positions.clear();\n if (!active.value || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n // Layout offsets exclude the CSS entry/swipe transform and any current FLIP translation.\n if (element.dataset.toastId)\n positions.set(element.dataset.toastId, {\n x: element.offsetLeft + (origin?.left ?? 0),\n y: element.offsetTop + (origin?.top ?? 0),\n });\n });\n}\nfunction animateMovement(previous: Map<string, { x: number; y: number }>) {\n if (!active.value) return;\n const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (reduced) {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n return;\n }\n const origin = region.value?.getBoundingClientRect();\n region.value?.querySelectorAll<HTMLElement>('.toast').forEach((element) => {\n const before = previous.get(element.dataset.toastId ?? '');\n if (!before || element.dataset.state !== 'open' || !element.animate) return;\n const x = before.x - element.offsetLeft - (origin?.left ?? 0);\n const y = before.y - element.offsetTop - (origin?.top ?? 0);\n if (!x && !y) return;\n movements.get(element)?.cancel();\n const css = getComputedStyle(element);\n const token = css.getPropertyValue('--ds-motion-duration-normal').trim();\n const parsed = Number.parseFloat(token);\n const duration = Number.isFinite(parsed) ? parsed * (token.endsWith('ms') ? 1 : 1000) : 200;\n const animation = element.animate([{ translate: `${x}px ${y}px` }, { translate: '0px 0px' }], {\n duration,\n easing: css.getPropertyValue('--ds-motion-ease-standard').trim() || 'ease',\n });\n movements.set(element, animation);\n const remove = () => {\n if (movements.get(element) === animation) movements.delete(element);\n };\n void animation.finished.then(remove, remove);\n });\n for (const [element, animation] of movements) {\n if (!element.isConnected) {\n animation.cancel();\n movements.delete(element);\n }\n }\n}\nonMounted(() => {\n // attach throws before any subscriptions/listeners on duplicate ownership.\n detach = manager.attach();\n active.value = true;\n entries.value = manager.getSnapshot();\n unsubscribe = manager.subscribe(() => {\n if (!reflowQueued) {\n capturePositions();\n const previous = new Map(positions);\n reflowQueued = true;\n entries.value = manager.getSnapshot();\n void nextTick(() => {\n reflowQueued = false;\n animateMovement(previous);\n });\n }\n entries.value = manager.getSnapshot();\n restoreIfEmpty();\n });\n window.addEventListener('blur', windowBlur);\n window.addEventListener('focus', windowFocus);\n document.addEventListener('visibilitychange', visibility);\n document.addEventListener('keydown', keyboard);\n visibility();\n if (!document.hasFocus()) pause('window');\n});\nonBeforeUnmount(() => {\n for (const animation of movements.values()) animation.cancel();\n movements.clear();\n if (!active.value) return;\n active.value = false;\n const errors: unknown[] = [];\n const cleanup = (operation: (() => void) | undefined) => {\n try {\n operation?.();\n } catch (error) {\n errors.push(error);\n }\n };\n cleanup(unsubscribe);\n cleanup(detach);\n // Detach first to prevent a briefly resumed external timer while clearing our pause causes.\n [...causes].forEach((cause) => cleanup(() => resume(cause)));\n if (owned) cleanup(() => manager.dispose());\n window.removeEventListener('blur', windowBlur);\n window.removeEventListener('focus', windowFocus);\n document.removeEventListener('visibilitychange', visibility);\n document.removeEventListener('keydown', keyboard);\n if (errors.length === 1) throw errors[0];\n if (errors.length > 1) throw new AggregateError(errors, 'Toast provider cleanup failed.');\n});\n</script>\n\n<template>\n <RekaToastProvider :duration=\"Infinity\" :disable-swipe=\"true\" :label=\"label\">\n <slot :toast=\"manager\" />\n <div\n ref=\"region\"\n v-bind=\"$attrs\"\n :class=\"partClasses('toast-region', $props.classNames?.root)\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n @pointerenter=\"pause('hover')\"\n @pointerleave=\"resume('hover')\"\n @focusin=\"focusIn\"\n @focusout=\"focusOut\"\n @keydown.capture=\"escape\"\n >\n <!-- Reka's native array matches keys individually; Kazee handles the complete chord. -->\n <ToastViewport\n :class=\"partClasses('toast-list', $props.classNames?.viewport)\"\n :hotkey=\"[]\"\n :label=\"viewportLabel\"\n :data-placement=\"placement\"\n :dir=\"dir\"\n />\n </div>\n <template v-for=\"entry in entries\" :key=\"entry.generation\"\n ><slot name=\"item\" :entry=\"entry\" :dismiss=\"() => manager.dismiss(entry.id)\">\n <Toast\n :entry=\"entry\"\n :class-names=\"{ ...classNames, root: classNames?.toast }\"\n :manager=\"manager\"\n :placement=\"placement\"\n :dir=\"dir\"\n :close-label=\"closeLabel\"\n :show-progress=\"showProgress\"\n :show-close-button=\"showCloseButton\"\n :swipe-threshold=\"swipeThreshold\"\n >\n <template v-if=\"$slots.toast\" #default=\"slotProps\"\n ><slot name=\"toast\" v-bind=\"slotProps\"\n /></template>\n <template v-if=\"$slots.indicator\" #indicator=\"slotProps\"\n ><slot name=\"indicator\" v-bind=\"slotProps\"\n /></template>\n </Toast> </slot\n ></template>\n </RekaToastProvider>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'actions' | 'description' | 'root' | 'title'> & {\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n id?: string;\n }\n >(),\n { description: undefined, headingLevel: 3, id: undefined },\n);\n</script>\n<template>\n <div v-bind=\"$attrs\" :id=\"id\" :class=\"partClasses('empty', $props.classNames?.root)\">\n <component\n :is=\"`h${headingLevel}`\"\n :class=\"partClasses('empty__title', $props.classNames?.title)\"\n >{{ title }}</component\n >\n <p\n v-if=\"description\"\n :class=\"partClasses('empty__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <slot />\n <div v-if=\"$slots.actions\" :class=\"partClasses('empty__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'actions' | 'description' | 'root' | 'title'> & {\n title: string;\n description?: string;\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n id?: string;\n }\n >(),\n { description: undefined, headingLevel: 3, id: undefined },\n);\n</script>\n<template>\n <div v-bind=\"$attrs\" :id=\"id\" :class=\"partClasses('empty', $props.classNames?.root)\">\n <component\n :is=\"`h${headingLevel}`\"\n :class=\"partClasses('empty__title', $props.classNames?.title)\"\n >{{ title }}</component\n >\n <p\n v-if=\"description\"\n :class=\"partClasses('empty__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <slot />\n <div v-if=\"$slots.actions\" :class=\"partClasses('empty__actions', $props.classNames?.actions)\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BreadcrumbItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'root' | 'separator'> & {\n items: BreadcrumbItem[];\n label?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n { label: 'Jejak halaman', dir: undefined, id: undefined },\n);\n</script>\n<template>\n <nav\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('breadcrumb', $props.classNames?.root)\"\n :aria-label=\"label\"\n :dir=\"dir\"\n >\n <ol>\n <li v-for=\"(item, index) in items\" :key=\"index\">\n <span\n v-if=\"index > 0\"\n :class=\"partClasses('breadcrumb__separator', $props.classNames?.separator)\"\n aria-hidden=\"true\"\n >/</span\n ><span v-if=\"index === items.length - 1\" aria-current=\"page\">{{ item.label }}</span\n ><a v-else-if=\"item.href\" :href=\"item.href\">{{ item.label }}</a\n ><span v-else>{{ item.label }}</span>\n </li>\n </ol>\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { BreadcrumbItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'root' | 'separator'> & {\n items: BreadcrumbItem[];\n label?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n { label: 'Jejak halaman', dir: undefined, id: undefined },\n);\n</script>\n<template>\n <nav\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('breadcrumb', $props.classNames?.root)\"\n :aria-label=\"label\"\n :dir=\"dir\"\n >\n <ol>\n <li v-for=\"(item, index) in items\" :key=\"index\">\n <span\n v-if=\"index > 0\"\n :class=\"partClasses('breadcrumb__separator', $props.classNames?.separator)\"\n aria-hidden=\"true\"\n >/</span\n ><span v-if=\"index === items.length - 1\" aria-current=\"page\">{{ item.label }}</span\n ><a v-else-if=\"item.href\" :href=\"item.href\">{{ item.label }}</a\n ><span v-else>{{ item.label }}</span>\n </li>\n </ol>\n </nav>\n</template>\n","import { computed, ref } from 'vue';\nexport function useDisclosure(\n props: { open?: boolean; defaultOpen?: boolean },\n emit: (open: boolean) => void,\n) {\n const local = ref(props.defaultOpen ?? false);\n const visible = computed(() => props.open ?? local.value);\n function change(next: boolean) {\n if (next === visible.value) return;\n local.value = next;\n emit(next);\n }\n return { visible, change };\n}\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'header' | 'item' | 'link' | 'list' | 'navigation' | 'root' | 'title' | 'toggle'\n > & {\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n currentId: undefined,\n open: undefined,\n defaultOpen: true,\n toggleLabel: 'Menu navigasi',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n navId = computed(() => `${props.id ?? generated}-nav`);\n</script>\n<template>\n <aside\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('sidebar', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <div :class=\"partClasses('sidebar__header', $props.classNames?.header)\">\n <span :class=\"partClasses('sidebar__title', $props.classNames?.title)\">{{ label }}</span\n ><button\n type=\"button\"\n :class=\"partClasses('sidebar__toggle', $props.classNames?.toggle)\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"visible\"\n :aria-controls=\"navId\"\n @click=\"change(!visible)\"\n >\n <span aria-hidden=\"true\">{{ visible ? '\\u2212' : '+' }}</span>\n </button>\n </div>\n <nav :id=\"navId\" :class=\"classNames?.navigation\" :aria-label=\"label\" :hidden=\"!visible\">\n <ul :class=\"classNames?.list\">\n <li v-for=\"item in items\" :key=\"item.id\" :class=\"classNames?.item\">\n <span\n v-if=\"item.isDisabled\"\n :class=\"partClasses('sidebar__link', $props.classNames?.link)\"\n aria-disabled=\"true\"\n >{{ item.label }}</span\n ><a\n v-else\n :class=\"partClasses('sidebar__link', $props.classNames?.link)\"\n :href=\"item.href\"\n :aria-current=\"item.id === currentId ? 'page' : undefined\"\n >{{ item.label }}</a\n >\n </li>\n </ul>\n </nav>\n </aside>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport type { NavigationItem } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'header' | 'item' | 'link' | 'list' | 'navigation' | 'root' | 'title' | 'toggle'\n > & {\n label: string;\n items: NavigationItem[];\n currentId?: string;\n open?: boolean;\n defaultOpen?: boolean;\n toggleLabel?: string;\n dir?: 'ltr' | 'rtl';\n id?: string;\n }\n >(),\n {\n currentId: undefined,\n open: undefined,\n defaultOpen: true,\n toggleLabel: 'Menu navigasi',\n dir: undefined,\n id: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n navId = computed(() => `${props.id ?? generated}-nav`);\n</script>\n<template>\n <aside\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('sidebar', $props.classNames?.root)\"\n :dir=\"dir\"\n >\n <div :class=\"partClasses('sidebar__header', $props.classNames?.header)\">\n <span :class=\"partClasses('sidebar__title', $props.classNames?.title)\">{{ label }}</span\n ><button\n type=\"button\"\n :class=\"partClasses('sidebar__toggle', $props.classNames?.toggle)\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"visible\"\n :aria-controls=\"navId\"\n @click=\"change(!visible)\"\n >\n <span aria-hidden=\"true\">{{ visible ? '\\u2212' : '+' }}</span>\n </button>\n </div>\n <nav :id=\"navId\" :class=\"classNames?.navigation\" :aria-label=\"label\" :hidden=\"!visible\">\n <ul :class=\"classNames?.list\">\n <li v-for=\"item in items\" :key=\"item.id\" :class=\"classNames?.item\">\n <span\n v-if=\"item.isDisabled\"\n :class=\"partClasses('sidebar__link', $props.classNames?.link)\"\n aria-disabled=\"true\"\n >{{ item.label }}</span\n ><a\n v-else\n :class=\"partClasses('sidebar__link', $props.classNames?.link)\"\n :href=\"item.href\"\n :aria-current=\"item.id === currentId ? 'page' : undefined\"\n >{{ item.label }}</a\n >\n </li>\n </ul>\n </nav>\n </aside>\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { chartModel } from './chart-model.js';\nimport Table from './Table.vue';\nimport Empty from './Empty.vue';\nimport type { ChartDatum } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'axis' | 'bar' | 'description' | 'label' | 'line' | 'plot' | 'root' | 'title'> & {\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 }\n >(),\n {\n type: 'bar',\n description: undefined,\n locale: 'id-ID',\n formatOptions: undefined,\n categoryLabel: 'Kategori',\n valueLabel: 'Nilai',\n emptyMessage: 'Belum ada data grafik.',\n id: undefined,\n dir: undefined,\n },\n);\nconst generated = useId(),\n labelId = computed(() => `${props.id ?? generated}-label`),\n model = computed(() => chartModel(props.data)),\n format = computed(() => new Intl.NumberFormat(props.locale, props.formatOptions));\nconst points = computed(() => model.value.items.map((item) => `${item.x},${item.y}`).join(' '));\n</script>\n<template>\n <figure\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('chart', $props.classNames?.root)\"\n :dir=\"dir\"\n :aria-labelledby=\"labelId\"\n >\n <figcaption :id=\"labelId\" :class=\"partClasses('chart__title', $props.classNames?.title)\">\n {{ label }}\n </figcaption>\n <p\n v-if=\"description\"\n :class=\"partClasses('chart__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <template v-if=\"model.items.length\"\n ><svg\n :class=\"partClasses('chart__plot', $props.classNames?.plot)\"\n viewBox=\"0 0 600 210\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n :class=\"partClasses('chart__axis', $props.classNames?.axis)\"\n x1=\"20\"\n x2=\"580\"\n :y1=\"model.baseline\"\n :y2=\"model.baseline\"\n />\n <polyline\n v-if=\"type === 'line'\"\n :class=\"partClasses('chart__line', $props.classNames?.line)\"\n :points=\"points\"\n />\n <g v-for=\"item in model.items\" :key=\"item.id\">\n <rect\n v-if=\"type === 'bar'\"\n :class=\"partClasses('chart__bar', $props.classNames?.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 <circle\n v-else\n :class=\"partClasses('chart__bar', $props.classNames?.bar)\"\n :cx=\"item.x\"\n :cy=\"item.y\"\n r=\"4\"\n />\n <text\n v-if=\"model.items.length <= 12\"\n :class=\"partClasses('chart__label', $props.classNames?.label)\"\n :x=\"item.x\"\n y=\"202\"\n text-anchor=\"middle\"\n >\n {{ item.label.slice(0, 12) }}\n </text>\n </g></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 <tr v-for=\"item in model.items\" :key=\"item.id\">\n <th scope=\"row\">{{ item.label }}</th>\n <td>{{ format.format(item.value) }}</td>\n </tr>\n </tbody></Table\n ></template\n ><Empty v-else :title=\"emptyMessage\" />\n </figure>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport { useId } from 'reka-ui';\nimport { chartModel } from './chart-model.js';\nimport Table from './Table.vue';\nimport Empty from './Empty.vue';\nimport type { ChartDatum } from './dashboard-types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'axis' | 'bar' | 'description' | 'label' | 'line' | 'plot' | 'root' | 'title'> & {\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 }\n >(),\n {\n type: 'bar',\n description: undefined,\n locale: 'id-ID',\n formatOptions: undefined,\n categoryLabel: 'Kategori',\n valueLabel: 'Nilai',\n emptyMessage: 'Belum ada data grafik.',\n id: undefined,\n dir: undefined,\n },\n);\nconst generated = useId(),\n labelId = computed(() => `${props.id ?? generated}-label`),\n model = computed(() => chartModel(props.data)),\n format = computed(() => new Intl.NumberFormat(props.locale, props.formatOptions));\nconst points = computed(() => model.value.items.map((item) => `${item.x},${item.y}`).join(' '));\n</script>\n<template>\n <figure\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses('chart', $props.classNames?.root)\"\n :dir=\"dir\"\n :aria-labelledby=\"labelId\"\n >\n <figcaption :id=\"labelId\" :class=\"partClasses('chart__title', $props.classNames?.title)\">\n {{ label }}\n </figcaption>\n <p\n v-if=\"description\"\n :class=\"partClasses('chart__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <template v-if=\"model.items.length\"\n ><svg\n :class=\"partClasses('chart__plot', $props.classNames?.plot)\"\n viewBox=\"0 0 600 210\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n :class=\"partClasses('chart__axis', $props.classNames?.axis)\"\n x1=\"20\"\n x2=\"580\"\n :y1=\"model.baseline\"\n :y2=\"model.baseline\"\n />\n <polyline\n v-if=\"type === 'line'\"\n :class=\"partClasses('chart__line', $props.classNames?.line)\"\n :points=\"points\"\n />\n <g v-for=\"item in model.items\" :key=\"item.id\">\n <rect\n v-if=\"type === 'bar'\"\n :class=\"partClasses('chart__bar', $props.classNames?.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 <circle\n v-else\n :class=\"partClasses('chart__bar', $props.classNames?.bar)\"\n :cx=\"item.x\"\n :cy=\"item.y\"\n r=\"4\"\n />\n <text\n v-if=\"model.items.length <= 12\"\n :class=\"partClasses('chart__label', $props.classNames?.label)\"\n :x=\"item.x\"\n y=\"202\"\n text-anchor=\"middle\"\n >\n {{ item.label.slice(0, 12) }}\n </text>\n </g></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 <tr v-for=\"item in model.items\" :key=\"item.id\">\n <th scope=\"row\">{{ item.label }}</th>\n <td>{{ format.format(item.value) }}</td>\n </tr>\n </tbody></Table\n ></template\n ><Empty v-else :title=\"emptyMessage\" />\n </figure>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport {\n DialogRoot,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport CloseIcon from './CloseIcon.vue';\nimport type { ButtonVariant } from './types.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'backdrop'\n | 'body'\n | 'close'\n | 'content'\n | 'description'\n | 'footer'\n | 'footerClose'\n | 'header'\n | 'panel'\n | 'root'\n | 'title'\n | 'trigger'\n > & {\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n dismissable?: boolean;\n keyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n size: 'md',\n placement: 'center',\n scroll: 'outside',\n backdrop: 'opaque',\n dismissable: true,\n keyboardDismissDisabled: false,\n showCloseButton: true,\n showFooterClose: true,\n triggerVariant: 'secondary',\n description: undefined,\n dir: undefined,\n closeIconLabel: undefined,\n },\n);\ndefineSlots<{ default?: () => unknown; footer?: () => unknown; trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <DialogRoot :open=\"visible\" @update:open=\"change\">\n <DialogTrigger\n :class=\"\n partClasses(\n ['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only'],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DialogTrigger\n >\n <DialogPortal>\n <DialogOverlay\n :class=\"partClasses('dialog__backdrop dialog__viewport', $props.classNames?.backdrop)\"\n :data-size=\"size\"\n :data-placement=\"placement\"\n :data-scroll=\"scroll\"\n :data-backdrop=\"backdrop\"\n >\n <DialogContent\n :class=\"partClasses('dialog__panel', [$props.classNames?.root, $props.classNames?.panel])\"\n :dir=\"dir\"\n v-bind=\"{ ...$attrs, ...(description ? {} : { 'aria-describedby': undefined }) }\"\n @escape-key-down=\"\n (event) => {\n if (keyboardDismissDisabled) event.preventDefault();\n }\n \"\n @interact-outside=\"\n (event) => {\n if (!dismissable) event.preventDefault();\n }\n \"\n >\n <div :class=\"partClasses('dialog__content', $props.classNames?.content)\">\n <div\n :class=\"partClasses('overlay__header', $props.classNames?.header)\"\n :data-close-button=\"showCloseButton || undefined\"\n >\n <DialogTitle :class=\"partClasses('overlay__title', $props.classNames?.title)\">{{\n title\n }}</DialogTitle>\n <DialogDescription\n v-if=\"description\"\n :class=\"partClasses('overlay__description', $props.classNames?.description)\"\n >{{ description }}</DialogDescription\n >\n <DialogClose\n v-if=\"showCloseButton\"\n :class=\"partClasses('dialog__close', $props.classNames?.close)\"\n :aria-label=\"closeIconLabel ?? `${closeLabel} dialog`\"\n ><CloseIcon\n /></DialogClose>\n </div>\n <div :class=\"partClasses('overlay__body', $props.classNames?.body)\"><slot /></div>\n <div\n v-if=\"$slots.footer || showFooterClose\"\n :class=\"partClasses('overlay__footer', $props.classNames?.footer)\"\n >\n <slot name=\"footer\" /><DialogClose\n v-if=\"showFooterClose\"\n :class=\"partClasses('button button--secondary', $props.classNames?.footerClose)\"\n >{{ closeLabel }}</DialogClose\n >\n </div>\n </div>\n </DialogContent>\n </DialogOverlay>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport {\n DialogRoot,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport CloseIcon from './CloseIcon.vue';\nimport type { ButtonVariant } from './types.js';\nimport type { DialogSize, DialogPlacement, DialogScroll, DialogBackdrop } from './overlay-model.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'backdrop'\n | 'body'\n | 'close'\n | 'content'\n | 'description'\n | 'footer'\n | 'footerClose'\n | 'header'\n | 'panel'\n | 'root'\n | 'title'\n | 'trigger'\n > & {\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n size?: DialogSize;\n placement?: DialogPlacement;\n scroll?: DialogScroll;\n backdrop?: DialogBackdrop;\n dismissable?: boolean;\n keyboardDismissDisabled?: boolean;\n showCloseButton?: boolean;\n showFooterClose?: boolean;\n closeIconLabel?: string;\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n size: 'md',\n placement: 'center',\n scroll: 'outside',\n backdrop: 'opaque',\n dismissable: true,\n keyboardDismissDisabled: false,\n showCloseButton: true,\n showFooterClose: true,\n triggerVariant: 'secondary',\n description: undefined,\n dir: undefined,\n closeIconLabel: undefined,\n },\n);\ndefineSlots<{ default?: () => unknown; footer?: () => unknown; trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <DialogRoot :open=\"visible\" @update:open=\"change\">\n <DialogTrigger\n :class=\"\n partClasses(\n ['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only'],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DialogTrigger\n >\n <DialogPortal>\n <DialogOverlay\n :class=\"partClasses('dialog__backdrop dialog__viewport', $props.classNames?.backdrop)\"\n :data-size=\"size\"\n :data-placement=\"placement\"\n :data-scroll=\"scroll\"\n :data-backdrop=\"backdrop\"\n >\n <DialogContent\n :class=\"partClasses('dialog__panel', [$props.classNames?.root, $props.classNames?.panel])\"\n :dir=\"dir\"\n v-bind=\"{ ...$attrs, ...(description ? {} : { 'aria-describedby': undefined }) }\"\n @escape-key-down=\"\n (event) => {\n if (keyboardDismissDisabled) event.preventDefault();\n }\n \"\n @interact-outside=\"\n (event) => {\n if (!dismissable) event.preventDefault();\n }\n \"\n >\n <div :class=\"partClasses('dialog__content', $props.classNames?.content)\">\n <div\n :class=\"partClasses('overlay__header', $props.classNames?.header)\"\n :data-close-button=\"showCloseButton || undefined\"\n >\n <DialogTitle :class=\"partClasses('overlay__title', $props.classNames?.title)\">{{\n title\n }}</DialogTitle>\n <DialogDescription\n v-if=\"description\"\n :class=\"partClasses('overlay__description', $props.classNames?.description)\"\n >{{ description }}</DialogDescription\n >\n <DialogClose\n v-if=\"showCloseButton\"\n :class=\"partClasses('dialog__close', $props.classNames?.close)\"\n :aria-label=\"closeIconLabel ?? `${closeLabel} dialog`\"\n ><CloseIcon\n /></DialogClose>\n </div>\n <div :class=\"partClasses('overlay__body', $props.classNames?.body)\"><slot /></div>\n <div\n v-if=\"$slots.footer || showFooterClose\"\n :class=\"partClasses('overlay__footer', $props.classNames?.footer)\"\n >\n <slot name=\"footer\" /><DialogClose\n v-if=\"showFooterClose\"\n :class=\"partClasses('button button--secondary', $props.classNames?.footerClose)\"\n >{{ closeLabel }}</DialogClose\n >\n </div>\n </div>\n </DialogContent>\n </DialogOverlay>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport type { DropdownMenuItem } from './dashboard-types.js';\ndefineProps<\n StylingProps<'arrow' | 'check' | 'description' | 'icon' | 'root' | 'shortcut' | 'text'> & {\n item: DropdownMenuItem;\n selectable: boolean;\n }\n>();\ndefineSlots<{ icon?: (props: { item: DropdownMenuItem }) => unknown }>();\n</script>\n<template>\n <CheckIcon\n v-if=\"selectable && !item.children?.length\"\n :class=\"partClasses('menu__check', $props.classNames?.check)\"\n />\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('menu__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span :class=\"partClasses('menu__text', $props.classNames?.text)\"\n ><span>{{ item.label }}</span\n ><span\n v-if=\"item.description\"\n :class=\"partClasses('menu__description', $props.classNames?.description)\"\n >{{ item.description }}</span\n ></span\n >\n <kbd\n v-if=\"item.shortcut\"\n :class=\"partClasses('menu__shortcut', $props.classNames?.shortcut)\"\n aria-hidden=\"true\"\n >{{ item.shortcut }}</kbd\n >\n <ChevronIcon\n v-if=\"item.children?.length\"\n :class=\"partClasses('menu__arrow', $props.classNames?.arrow)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport CheckIcon from './CheckIcon.vue';\nimport ChevronIcon from './ChevronIcon.vue';\nimport type { DropdownMenuItem } from './dashboard-types.js';\ndefineProps<\n StylingProps<'arrow' | 'check' | 'description' | 'icon' | 'root' | 'shortcut' | 'text'> & {\n item: DropdownMenuItem;\n selectable: boolean;\n }\n>();\ndefineSlots<{ icon?: (props: { item: DropdownMenuItem }) => unknown }>();\n</script>\n<template>\n <CheckIcon\n v-if=\"selectable && !item.children?.length\"\n :class=\"partClasses('menu__check', $props.classNames?.check)\"\n />\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('menu__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\"\n /></span>\n <span :class=\"partClasses('menu__text', $props.classNames?.text)\"\n ><span>{{ item.label }}</span\n ><span\n v-if=\"item.description\"\n :class=\"partClasses('menu__description', $props.classNames?.description)\"\n >{{ item.description }}</span\n ></span\n >\n <kbd\n v-if=\"item.shortcut\"\n :class=\"partClasses('menu__shortcut', $props.classNames?.shortcut)\"\n aria-hidden=\"true\"\n >{{ item.shortcut }}</kbd\n >\n <ChevronIcon\n v-if=\"item.children?.length\"\n :class=\"partClasses('menu__arrow', $props.classNames?.arrow)\"\n />\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport {\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuPortal,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n} from 'reka-ui';\nimport MenuItemContent from './MenuItemContent.vue';\nimport { menuGroups, type MenuSelectionMode } from './overlay-model.js';\nimport type { DropdownMenuItem as Item } from './dashboard-types.js';\nconst props = defineProps<\n StylingProps<\n | 'arrow'\n | 'check'\n | 'description'\n | 'heading'\n | 'icon'\n | 'item'\n | 'panel'\n | 'root'\n | 'separator'\n | 'shortcut'\n | 'text'\n > & {\n items: Item[];\n selectedKeys: string[];\n selectionMode: MenuSelectionMode;\n closeOnSelect: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ action: [id: string]; selection: [id: string, checked: boolean] }>();\ndefineSlots<{ icon?: (props: { item: Item }) => unknown }>();\nconst groups = computed(() => menuGroups(props.items));\nfunction keepParentMenuFocus(event: { target: EventTarget | null; preventDefault: () => void }) {\n // Roving focus may briefly land on the parent menu during a direct pointer move into its submenu.\n // Actual item focus, outside presses, Left and Escape retain the provider's normal dismissal.\n if (event.target instanceof HTMLElement && event.target.getAttribute('role') === 'menu')\n event.preventDefault();\n}\nfunction action(event: Event, item: Item) {\n if (props.disabled || item.isDisabled) {\n event.preventDefault();\n return;\n }\n if (!props.closeOnSelect) event.preventDefault();\n emit('action', item.id);\n}\n</script>\n<template>\n <DropdownMenuRadioGroup\n :model-value=\"selectedKeys[0] ?? ''\"\n @update:model-value=\"\n (value) => {\n if (selectionMode === 'single' && typeof value === 'string') emit('selection', value, true);\n }\n \"\n >\n <template v-for=\"(group, index) in groups\" :key=\"group.key\">\n <DropdownMenuSeparator\n v-if=\"index > 0\"\n :class=\"partClasses('menu__separator', $props.classNames?.separator)\"\n />\n <DropdownMenuGroup :aria-label=\"group.label\">\n <DropdownMenuLabel\n v-if=\"group.label\"\n :class=\"partClasses('menu__heading', $props.classNames?.heading)\"\n >{{ group.label }}</DropdownMenuLabel\n >\n <template v-for=\"item in group.items\" :key=\"item.id\">\n <DropdownMenuSub v-if=\"item.children?.length\">\n <DropdownMenuSubTrigger\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :data-tone=\"item.tone ?? 'default'\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal\n ><DropdownMenuSubContent\n :class=\"partClasses('menu__panel menu__list', $props.classNames?.panel)\"\n :aria-label=\"item.label\"\n :side-offset=\"4\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n @focus-outside=\"keepParentMenuFocus\"\n >\n <DropdownMenuBranch\n :class-names=\"classNames\"\n :items=\"item.children\"\n :selected-keys=\"selectedKeys\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect\"\n :disabled=\"disabled || item.isDisabled\"\n :dir=\"dir\"\n @action=\"(id) => emit('action', id)\"\n @selection=\"(id, checked) => emit('selection', id, checked)\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\"\n /></template>\n </DropdownMenuBranch> </DropdownMenuSubContent\n ></DropdownMenuPortal>\n </DropdownMenuSub>\n <DropdownMenuRadioItem\n v-else-if=\"selectionMode === 'single'\"\n :value=\"item.id\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuRadioItem>\n <DropdownMenuCheckboxItem\n v-else-if=\"selectionMode === 'multiple'\"\n :model-value=\"selectedKeys.includes(item.id)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @update:model-value=\"\n (checked) => {\n if (!disabled && !item.isDisabled) emit('selection', item.id, checked === true);\n }\n \"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuCheckboxItem>\n <DropdownMenuItem\n v-else\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuItem>\n </template>\n </DropdownMenuGroup>\n </template>\n </DropdownMenuRadioGroup>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport {\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuPortal,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n} from 'reka-ui';\nimport MenuItemContent from './MenuItemContent.vue';\nimport { menuGroups, type MenuSelectionMode } from './overlay-model.js';\nimport type { DropdownMenuItem as Item } from './dashboard-types.js';\nconst props = defineProps<\n StylingProps<\n | 'arrow'\n | 'check'\n | 'description'\n | 'heading'\n | 'icon'\n | 'item'\n | 'panel'\n | 'root'\n | 'separator'\n | 'shortcut'\n | 'text'\n > & {\n items: Item[];\n selectedKeys: string[];\n selectionMode: MenuSelectionMode;\n closeOnSelect: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ action: [id: string]; selection: [id: string, checked: boolean] }>();\ndefineSlots<{ icon?: (props: { item: Item }) => unknown }>();\nconst groups = computed(() => menuGroups(props.items));\nfunction keepParentMenuFocus(event: { target: EventTarget | null; preventDefault: () => void }) {\n // Roving focus may briefly land on the parent menu during a direct pointer move into its submenu.\n // Actual item focus, outside presses, Left and Escape retain the provider's normal dismissal.\n if (event.target instanceof HTMLElement && event.target.getAttribute('role') === 'menu')\n event.preventDefault();\n}\nfunction action(event: Event, item: Item) {\n if (props.disabled || item.isDisabled) {\n event.preventDefault();\n return;\n }\n if (!props.closeOnSelect) event.preventDefault();\n emit('action', item.id);\n}\n</script>\n<template>\n <DropdownMenuRadioGroup\n :model-value=\"selectedKeys[0] ?? ''\"\n @update:model-value=\"\n (value) => {\n if (selectionMode === 'single' && typeof value === 'string') emit('selection', value, true);\n }\n \"\n >\n <template v-for=\"(group, index) in groups\" :key=\"group.key\">\n <DropdownMenuSeparator\n v-if=\"index > 0\"\n :class=\"partClasses('menu__separator', $props.classNames?.separator)\"\n />\n <DropdownMenuGroup :aria-label=\"group.label\">\n <DropdownMenuLabel\n v-if=\"group.label\"\n :class=\"partClasses('menu__heading', $props.classNames?.heading)\"\n >{{ group.label }}</DropdownMenuLabel\n >\n <template v-for=\"item in group.items\" :key=\"item.id\">\n <DropdownMenuSub v-if=\"item.children?.length\">\n <DropdownMenuSubTrigger\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :data-tone=\"item.tone ?? 'default'\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal\n ><DropdownMenuSubContent\n :class=\"partClasses('menu__panel menu__list', $props.classNames?.panel)\"\n :aria-label=\"item.label\"\n :side-offset=\"4\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n @focus-outside=\"keepParentMenuFocus\"\n >\n <DropdownMenuBranch\n :class-names=\"classNames\"\n :items=\"item.children\"\n :selected-keys=\"selectedKeys\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect\"\n :disabled=\"disabled || item.isDisabled\"\n :dir=\"dir\"\n @action=\"(id) => emit('action', id)\"\n @selection=\"(id, checked) => emit('selection', id, checked)\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\"\n /></template>\n </DropdownMenuBranch> </DropdownMenuSubContent\n ></DropdownMenuPortal>\n </DropdownMenuSub>\n <DropdownMenuRadioItem\n v-else-if=\"selectionMode === 'single'\"\n :value=\"item.id\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuRadioItem>\n <DropdownMenuCheckboxItem\n v-else-if=\"selectionMode === 'multiple'\"\n :model-value=\"selectedKeys.includes(item.id)\"\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @update:model-value=\"\n (checked) => {\n if (!disabled && !item.isDisabled) emit('selection', item.id, checked === true);\n }\n \"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" selectable\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuCheckboxItem>\n <DropdownMenuItem\n v-else\n :disabled=\"disabled || item.isDisabled\"\n :text-value=\"item.label\"\n :class=\"partClasses('menu__item', $props.classNames?.item)\"\n :data-tone=\"item.tone ?? 'default'\"\n @select=\"(event) => action(event, item)\"\n >\n <MenuItemContent :class-names=\"classNames\" :item=\"item\" :selectable=\"false\"\n ><template v-if=\"$slots.icon\" #icon=\"slot\"\n ><slot name=\"icon\" v-bind=\"slot\" /></template\n ></MenuItemContent>\n </DropdownMenuItem>\n </template>\n </DropdownMenuGroup>\n </template>\n </DropdownMenuRadioGroup>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport DropdownMenuBranch from './DropdownMenuBranch.vue';\nimport {\n menuSelection,\n menuLeaves,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'arrow'\n | 'check'\n | 'description'\n | 'heading'\n | 'icon'\n | 'item'\n | 'panel'\n | 'root'\n | 'separator'\n | 'shortcut'\n | 'text'\n | 'trigger'\n > & {\n triggerLabel: string;\n items: DropdownMenuItem[];\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n selectionMode: 'none',\n closeOnSelect: undefined,\n placement: 'bottom-start',\n triggerVariant: 'secondary',\n dir: undefined,\n selectedKeys: undefined,\n defaultSelectedKeys: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:open': [open: boolean];\n action: [id: string];\n 'update:selectedKeys': [keys: string[]];\n}>();\ndefineSlots<{ trigger?: () => unknown; icon?: (props: { item: DropdownMenuItem }) => unknown }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst local = ref(props.defaultSelectedKeys ?? []);\nconst selected = computed(() =>\n menuSelection(props.selectedKeys ?? local.value, props.items, props.selectionMode),\n);\nconst side = computed(() => props.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right');\nconst align = computed(() => props.placement.split('-')[1] as 'start' | 'end');\nfunction select(id: string, checked: boolean) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (!item || item.isDisabled || props.selectionMode === 'none') return;\n const next = menuSelection(\n props.selectionMode === 'single'\n ? [id]\n : checked\n ? [...selected.value, id]\n : selected.value.filter((key) => key !== id),\n props.items,\n props.selectionMode,\n );\n local.value = next;\n emit('update:selectedKeys', next);\n}\nfunction action(id: string) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (item && !item.isDisabled) emit('action', id);\n}\n</script>\n<template>\n <DropdownMenuRoot :open=\"visible\" :dir=\"dir\" @update:open=\"change\">\n <DropdownMenuTrigger\n :class=\"\n partClasses(\n ['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only'],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled || !items.length\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DropdownMenuTrigger\n >\n <DropdownMenuPortal\n ><DropdownMenuContent\n v-bind=\"$attrs\"\n :class=\"\n partClasses('menu__panel menu__list', [$props.classNames?.root, $props.classNames?.panel])\n \"\n :aria-label=\"triggerLabel\"\n :side=\"side\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >\n <DropdownMenuBranch\n :class-names=\"classNames\"\n :items=\"items\"\n :selected-keys=\"selected\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect ?? selectionMode !== 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @action=\"action\"\n @selection=\"select\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"><slot name=\"icon\" v-bind=\"slot\" /></template>\n </DropdownMenuBranch> </DropdownMenuContent\n ></DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref } from 'vue';\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\nimport DropdownMenuBranch from './DropdownMenuBranch.vue';\nimport {\n menuSelection,\n menuLeaves,\n type MenuSelectionMode,\n type MenuPlacement,\n} from './overlay-model.js';\nimport type { DropdownMenuItem } from './dashboard-types.js';\nimport type { ButtonVariant } from './types.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'arrow'\n | 'check'\n | 'description'\n | 'heading'\n | 'icon'\n | 'item'\n | 'panel'\n | 'root'\n | 'separator'\n | 'shortcut'\n | 'text'\n | 'trigger'\n > & {\n triggerLabel: string;\n items: DropdownMenuItem[];\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n selectionMode?: MenuSelectionMode;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n closeOnSelect?: boolean;\n placement?: MenuPlacement;\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n selectionMode: 'none',\n closeOnSelect: undefined,\n placement: 'bottom-start',\n triggerVariant: 'secondary',\n dir: undefined,\n selectedKeys: undefined,\n defaultSelectedKeys: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:open': [open: boolean];\n action: [id: string];\n 'update:selectedKeys': [keys: string[]];\n}>();\ndefineSlots<{ trigger?: () => unknown; icon?: (props: { item: DropdownMenuItem }) => unknown }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst local = ref(props.defaultSelectedKeys ?? []);\nconst selected = computed(() =>\n menuSelection(props.selectedKeys ?? local.value, props.items, props.selectionMode),\n);\nconst side = computed(() => props.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right');\nconst align = computed(() => props.placement.split('-')[1] as 'start' | 'end');\nfunction select(id: string, checked: boolean) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (!item || item.isDisabled || props.selectionMode === 'none') return;\n const next = menuSelection(\n props.selectionMode === 'single'\n ? [id]\n : checked\n ? [...selected.value, id]\n : selected.value.filter((key) => key !== id),\n props.items,\n props.selectionMode,\n );\n local.value = next;\n emit('update:selectedKeys', next);\n}\nfunction action(id: string) {\n const item = menuLeaves(props.items, props.disabled).find((item) => item.id === id);\n if (item && !item.isDisabled) emit('action', id);\n}\n</script>\n<template>\n <DropdownMenuRoot :open=\"visible\" :dir=\"dir\" @update:open=\"change\">\n <DropdownMenuTrigger\n :class=\"\n partClasses(\n ['button', `button--${triggerVariant}`, triggerIconOnly && 'button--icon-only'],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled || !items.length\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></DropdownMenuTrigger\n >\n <DropdownMenuPortal\n ><DropdownMenuContent\n v-bind=\"$attrs\"\n :class=\"\n partClasses('menu__panel menu__list', [$props.classNames?.root, $props.classNames?.panel])\n \"\n :aria-label=\"triggerLabel\"\n :side=\"side\"\n :align=\"align\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >\n <DropdownMenuBranch\n :class-names=\"classNames\"\n :items=\"items\"\n :selected-keys=\"selected\"\n :selection-mode=\"selectionMode\"\n :close-on-select=\"closeOnSelect ?? selectionMode !== 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @action=\"action\"\n @selection=\"select\"\n >\n <template v-if=\"$slots.icon\" #icon=\"slot\"><slot name=\"icon\" v-bind=\"slot\" /></template>\n </DropdownMenuBranch> </DropdownMenuContent\n ></DropdownMenuPortal>\n </DropdownMenuRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport {\n PopoverRoot,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n useId,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'body' | 'close' | 'description' | 'footer' | 'panel' | 'root' | 'title' | 'trigger'\n > & {\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n description: undefined,\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n titleId = `${generated}-title`,\n descriptionId = computed(() => (props.description ? `${generated}-description` : undefined));\n</script>\n<template>\n <PopoverRoot :open=\"visible\" @update:open=\"change\"\n ><PopoverTrigger\n :class=\"partClasses('button button--secondary', $props.classNames?.trigger)\"\n :disabled=\"disabled\"\n >{{ triggerLabel }}</PopoverTrigger\n ><PopoverPortal\n ><PopoverContent as-child side=\"bottom\" align=\"start\" :side-offset=\"8\" :collision-padding=\"16\"\n ><div\n v-bind=\"$attrs\"\n :class=\"\n partClasses('popover__panel popover__content', [\n $props.classNames?.root,\n $props.classNames?.panel,\n ])\n \"\n :dir=\"dir\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n >\n <h2 :id=\"titleId\" :class=\"partClasses('overlay__title', $props.classNames?.title)\">\n {{ title }}\n </h2>\n <p\n v-if=\"description\"\n :id=\"descriptionId\"\n :class=\"partClasses('overlay__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <div :class=\"partClasses('overlay__body', $props.classNames?.body)\"><slot /></div>\n <div :class=\"partClasses('overlay__footer', $props.classNames?.footer)\">\n <PopoverClose\n :class=\"partClasses('button button--secondary', $props.classNames?.close)\"\n >{{ closeLabel }}</PopoverClose\n >\n </div>\n </div></PopoverContent\n ></PopoverPortal\n ></PopoverRoot\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed } from 'vue';\nimport {\n PopoverRoot,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n useId,\n} from 'reka-ui';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<\n 'body' | 'close' | 'description' | 'footer' | 'panel' | 'root' | 'title' | 'trigger'\n > & {\n triggerLabel: string;\n title: string;\n description?: string;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n closeLabel?: string;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n description: undefined,\n open: undefined,\n defaultOpen: false,\n disabled: false,\n closeLabel: 'Tutup',\n dir: undefined,\n },\n);\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\nconst generated = useId(),\n titleId = `${generated}-title`,\n descriptionId = computed(() => (props.description ? `${generated}-description` : undefined));\n</script>\n<template>\n <PopoverRoot :open=\"visible\" @update:open=\"change\"\n ><PopoverTrigger\n :class=\"partClasses('button button--secondary', $props.classNames?.trigger)\"\n :disabled=\"disabled\"\n >{{ triggerLabel }}</PopoverTrigger\n ><PopoverPortal\n ><PopoverContent as-child side=\"bottom\" align=\"start\" :side-offset=\"8\" :collision-padding=\"16\"\n ><div\n v-bind=\"$attrs\"\n :class=\"\n partClasses('popover__panel popover__content', [\n $props.classNames?.root,\n $props.classNames?.panel,\n ])\n \"\n :dir=\"dir\"\n :aria-labelledby=\"titleId\"\n :aria-describedby=\"descriptionId\"\n >\n <h2 :id=\"titleId\" :class=\"partClasses('overlay__title', $props.classNames?.title)\">\n {{ title }}\n </h2>\n <p\n v-if=\"description\"\n :id=\"descriptionId\"\n :class=\"partClasses('overlay__description', $props.classNames?.description)\"\n >\n {{ description }}\n </p>\n <div :class=\"partClasses('overlay__body', $props.classNames?.body)\"><slot /></div>\n <div :class=\"partClasses('overlay__footer', $props.classNames?.footer)\">\n <PopoverClose\n :class=\"partClasses('button button--secondary', $props.classNames?.close)\"\n >{{ closeLabel }}</PopoverClose\n >\n </div>\n </div></PopoverContent\n ></PopoverPortal\n ></PopoverRoot\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n} from 'reka-ui';\nimport type { ButtonVariant, ButtonSize } from './types.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'panel' | 'root' | 'trigger'> & {\n triggerLabel: string;\n text: string;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n dir: undefined,\n triggerIconOnly: false,\n triggerVariant: 'secondary',\n triggerSize: 'md',\n },\n);\ndefineSlots<{ trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <TooltipProvider :delay-duration=\"300\" :skip-delay-duration=\"0\" :disable-hoverable-content=\"true\"\n ><TooltipRoot :open=\"visible\" @update:open=\"change\"\n ><TooltipTrigger\n :class=\"\n partClasses(\n [\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></TooltipTrigger\n ><TooltipPortal\n ><TooltipContent\n v-bind=\"$attrs\"\n :class=\"\n partClasses('tooltip__panel', [$props.classNames?.root, $props.classNames?.panel])\n \"\n side=\"top\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >{{ text }}</TooltipContent\n ></TooltipPortal\n ></TooltipRoot\n ></TooltipProvider\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n} from 'reka-ui';\nimport type { ButtonVariant, ButtonSize } from './types.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\nconst props = withDefaults(\n defineProps<\n StylingProps<'panel' | 'root' | 'trigger'> & {\n triggerLabel: string;\n text: string;\n triggerIconOnly?: boolean;\n triggerVariant?: ButtonVariant;\n triggerSize?: ButtonSize;\n open?: boolean;\n defaultOpen?: boolean;\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n }\n >(),\n {\n open: undefined,\n defaultOpen: false,\n disabled: false,\n dir: undefined,\n triggerIconOnly: false,\n triggerVariant: 'secondary',\n triggerSize: 'md',\n },\n);\ndefineSlots<{ trigger?: () => unknown }>();\nconst emit = defineEmits<{ 'update:open': [open: boolean] }>();\nconst { visible, change } = useDisclosure(props, (next) => emit('update:open', next));\n</script>\n<template>\n <TooltipProvider :delay-duration=\"300\" :skip-delay-duration=\"0\" :disable-hoverable-content=\"true\"\n ><TooltipRoot :open=\"visible\" @update:open=\"change\"\n ><TooltipTrigger\n :class=\"\n partClasses(\n [\n 'button',\n `button--${triggerVariant}`,\n triggerSize !== 'md' && `button--${triggerSize}`,\n triggerIconOnly && 'button--icon-only',\n ],\n $props.classNames?.trigger,\n )\n \"\n :aria-label=\"triggerLabel\"\n :disabled=\"disabled\"\n ><slot name=\"trigger\">{{ triggerLabel }}</slot></TooltipTrigger\n ><TooltipPortal\n ><TooltipContent\n v-bind=\"$attrs\"\n :class=\"\n partClasses('tooltip__panel', [$props.classNames?.root, $props.classNames?.panel])\n \"\n side=\"top\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n :dir=\"dir\"\n >{{ text }}</TooltipContent\n ></TooltipPortal\n ></TooltipRoot\n ></TooltipProvider\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { SpinnerSize, SpinnerColor } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'arc' | 'label' | 'root' | 'track'> & {\n size?: SpinnerSize;\n color?: SpinnerColor;\n label?: string;\n id?: string;\n }\n >(),\n { size: 'md', color: 'current', label: undefined, id: undefined },\n);\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses(['spinner', `spinner--${size}`], $props.classNames?.root)\"\n :data-color=\"color\"\n :role=\"label ? 'status' : undefined\"\n :aria-label=\"label || undefined\"\n :aria-hidden=\"!label || undefined\"\n ><svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle\n :class=\"partClasses('spinner__track', $props.classNames?.track)\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n />\n <circle\n :class=\"partClasses('spinner__arc', $props.classNames?.arc)\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n stroke-dasharray=\"36 64\"\n /></svg\n ><span v-if=\"label\" :class=\"partClasses('spinner__label', $props.classNames?.label)\">{{\n label\n }}</span></span\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport type { SpinnerSize, SpinnerColor } from './types.js';\ndefineOptions({ inheritAttrs: false });\nwithDefaults(\n defineProps<\n StylingProps<'arc' | 'label' | 'root' | 'track'> & {\n size?: SpinnerSize;\n color?: SpinnerColor;\n label?: string;\n id?: string;\n }\n >(),\n { size: 'md', color: 'current', label: undefined, id: undefined },\n);\n</script>\n<template>\n <span\n v-bind=\"$attrs\"\n :id=\"id\"\n :class=\"partClasses(['spinner', `spinner--${size}`], $props.classNames?.root)\"\n :data-color=\"color\"\n :role=\"label ? 'status' : undefined\"\n :aria-label=\"label || undefined\"\n :aria-hidden=\"!label || undefined\"\n ><svg viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <circle\n :class=\"partClasses('spinner__track', $props.classNames?.track)\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n />\n <circle\n :class=\"partClasses('spinner__arc', $props.classNames?.arc)\"\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n pathLength=\"100\"\n stroke-dasharray=\"36 64\"\n /></svg\n ><span v-if=\"label\" :class=\"partClasses('spinner__label', $props.classNames?.label)\">{{\n label\n }}</span></span\n >\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, getCurrentInstance, watch } from 'vue';\nimport {\n ComboboxRoot,\n ComboboxAnchor,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPortal,\n ComboboxContent,\n ComboboxViewport,\n ComboboxItem,\n} from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, filterOptions, type SelectOption } from './selection-options.js';\nconst props = defineProps<\n StylingProps<\n | 'check'\n | 'clear'\n | 'closeIcon'\n | 'control'\n | 'description'\n | 'empty'\n | 'error'\n | 'icon'\n | 'input'\n | 'item'\n | 'itemLabel'\n | 'label'\n | 'leading'\n | 'list'\n | 'popover'\n | 'required'\n | 'root'\n | 'toggle'\n > & {\n label: string;\n options: SelectOption[];\n modelValue?: string;\n defaultValue?: string;\n placeholder?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n clearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string | undefined] }>();\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref(props.defaultValue);\nconst draft = ref<string | null>(null);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst id = computed(\n () => selectionIds(controlled() ? props.modelValue : local.value, props.options, false)[0],\n);\nconst selected = computed(() => props.options.find((o) => o.id === id.value));\nwatch(\n () => selected.value?.id,\n () => {\n draft.value = null;\n },\n);\nconst text = computed(() => draft.value ?? selected.value?.label ?? '');\nconst filtered = computed(() =>\n draft.value === null ? props.options : filterOptions(props.options, draft.value),\n);\nconst invalid = computed(() => props.invalid || (tried.value && props.required && !id.value));\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && !id.value ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLInputElement>('.combobox__input')?.focus();\n}\nfunction change(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, false)[0];\n local.value = next;\n emit('update:modelValue', next);\n draft.value = null;\n}\nfunction search(value: string) {\n if (props.disabled) return;\n draft.value = value;\n if (value === '' && id.value) {\n local.value = undefined;\n emit('update:modelValue', undefined);\n }\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n draft.value = null;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div ref=\"wrapper\" :class=\"partClasses('select combobox', $props.classNames?.root)\" :dir=\"dir\">\n <label :class=\"partClasses('select__label', $props.classNames?.label)\" :for=\"controlId\"\n >{{ label\n }}<span\n v-if=\"required\"\n :class=\"partClasses('selection__required', $props.classNames?.required)\"\n aria-hidden=\"true\"\n >\n *</span\n ></label\n >\n <ComboboxRoot\n :model-value=\"id ?? null\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n ignore-filter\n :reset-search-term-on-blur=\"false\"\n :reset-search-term-on-select=\"false\"\n @update:model-value=\"change\"\n @update:open=\"\n (open) => {\n if (!open) draft = null;\n }\n \"\n >\n <ComboboxAnchor\n :class=\"partClasses('combobox__control', $props.classNames?.control)\"\n :data-invalid=\"invalid || undefined\"\n :data-disabled=\"disabled || undefined\"\n >\n <span\n v-if=\"$slots.start\"\n :class=\"partClasses('selection__leading', $props.classNames?.leading)\"\n aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <ComboboxInput\n :id=\"controlId\"\n :model-value=\"text\"\n :display-value=\"() => selected?.label ?? ''\"\n :class=\"partClasses('combobox__input', $props.classNames?.input)\"\n :placeholder=\"placeholder\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n @update:model-value=\"search\"\n />\n <button\n v-if=\"clearable\"\n type=\"button\"\n :class=\"partClasses('combobox__clear', $props.classNames?.clear)\"\n :data-empty=\"(!id && !text) || undefined\"\n :aria-hidden=\"(!id && !text) || undefined\"\n :tabindex=\"!id && !text ? -1 : undefined\"\n :disabled=\"disabled || (!id && !text)\"\n :aria-label=\"clearLabel ?? 'Hapus pilihan'\"\n @click=\"\n change(undefined);\n focus();\n \"\n >\n <CloseIcon :class=\"partClasses('selection__close-icon', $props.classNames?.closeIcon)\" />\n </button>\n <ComboboxTrigger\n :class=\"partClasses('combobox__toggle', $props.classNames?.toggle)\"\n :aria-label=\"toggleLabel ?? 'Buka pilihan'\"\n ><ChevronIcon :class=\"partClasses('select__icon', $props.classNames?.icon)\"\n /></ComboboxTrigger>\n </ComboboxAnchor>\n <ComboboxPortal\n ><ComboboxContent\n :class=\"partClasses('select__popover combobox__popover', $props.classNames?.popover)\"\n position=\"popper\"\n :side-offset=\"4\"\n ><ComboboxViewport :class=\"partClasses('select__list', $props.classNames?.list)\">\n <ComboboxItem\n v-for=\"option in filtered\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n :class=\"partClasses('select__item', $props.classNames?.item)\"\n ><span :class=\"partClasses('select__item-label', $props.classNames?.itemLabel)\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span\n v-if=\"option.description\"\n :class=\"partClasses('selection__description', $props.classNames?.description)\"\n >{{ option.description }}</span\n ></slot\n ></span\n ><CheckIcon :class=\"partClasses('select__check', $props.classNames?.check)\"\n /></ComboboxItem>\n <span\n v-if=\"!filtered.length\"\n :class=\"partClasses('selection__empty', $props.classNames?.empty)\"\n role=\"status\"\n >{{ emptyMessage ?? 'Tidak ada pilihan.' }}</span\n >\n </ComboboxViewport></ComboboxContent\n ></ComboboxPortal\n >\n </ComboboxRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"id ?? ''\" :disabled=\"disabled\" />\n <SelectionValidation\n :has-value=\"!!id\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, getCurrentInstance, watch } from 'vue';\nimport {\n ComboboxRoot,\n ComboboxAnchor,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxPortal,\n ComboboxContent,\n ComboboxViewport,\n ComboboxItem,\n} from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport CloseIcon from './CloseIcon.vue';\nimport CheckIcon from './CheckIcon.vue';\nimport FieldFeedback from './FieldFeedback.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport { useFeedback } from './useFeedback.js';\nimport { selectionIds, filterOptions, type SelectOption } from './selection-options.js';\nconst props = defineProps<\n StylingProps<\n | 'check'\n | 'clear'\n | 'closeIcon'\n | 'control'\n | 'description'\n | 'empty'\n | 'error'\n | 'icon'\n | 'input'\n | 'item'\n | 'itemLabel'\n | 'label'\n | 'leading'\n | 'list'\n | 'popover'\n | 'required'\n | 'root'\n | 'toggle'\n > & {\n label: string;\n options: SelectOption[];\n modelValue?: string;\n defaultValue?: string;\n placeholder?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n invalid?: boolean;\n description?: string;\n errorMessage?: string;\n requiredMessage?: string;\n clearable?: boolean;\n clearLabel?: string;\n toggleLabel?: string;\n emptyMessage?: string;\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: string | undefined] }>();\ndefineSlots<{\n start?: () => unknown;\n option?: (props: { option: SelectOption }) => unknown;\n}>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref(props.defaultValue);\nconst draft = ref<string | null>(null);\nconst tried = ref(false);\nconst wrapper = ref<HTMLDivElement>();\nconst id = computed(\n () => selectionIds(controlled() ? props.modelValue : local.value, props.options, false)[0],\n);\nconst selected = computed(() => props.options.find((o) => o.id === id.value));\nwatch(\n () => selected.value?.id,\n () => {\n draft.value = null;\n },\n);\nconst text = computed(() => draft.value ?? selected.value?.label ?? '');\nconst filtered = computed(() =>\n draft.value === null ? props.options : filterOptions(props.options, draft.value),\n);\nconst invalid = computed(() => props.invalid || (tried.value && props.required && !id.value));\nconst error = computed(\n () =>\n props.errorMessage ??\n (props.required && !id.value ? (props.requiredMessage ?? 'Pilihan wajib diisi.') : undefined),\n);\nconst { controlId, describedBy, showError } = useFeedback({\n get description() {\n return props.description;\n },\n get invalid() {\n return invalid.value;\n },\n get errorMessage() {\n return error.value;\n },\n});\nfunction focus() {\n wrapper.value?.querySelector<HTMLInputElement>('.combobox__input')?.focus();\n}\nfunction change(value: unknown) {\n if (props.disabled) return;\n const next = selectionIds(value, props.options, false)[0];\n local.value = next;\n emit('update:modelValue', next);\n draft.value = null;\n}\nfunction search(value: string) {\n if (props.disabled) return;\n draft.value = value;\n if (value === '' && id.value) {\n local.value = undefined;\n emit('update:modelValue', undefined);\n }\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n tried.value = false;\n draft.value = null;\n if (!controlled()) local.value = props.defaultValue;\n }\n}\n</script>\n<template>\n <div ref=\"wrapper\" :class=\"partClasses('select combobox', $props.classNames?.root)\" :dir=\"dir\">\n <label :class=\"partClasses('select__label', $props.classNames?.label)\" :for=\"controlId\"\n >{{ label\n }}<span\n v-if=\"required\"\n :class=\"partClasses('selection__required', $props.classNames?.required)\"\n aria-hidden=\"true\"\n >\n *</span\n ></label\n >\n <ComboboxRoot\n :model-value=\"id ?? null\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n ignore-filter\n :reset-search-term-on-blur=\"false\"\n :reset-search-term-on-select=\"false\"\n @update:model-value=\"change\"\n @update:open=\"\n (open) => {\n if (!open) draft = null;\n }\n \"\n >\n <ComboboxAnchor\n :class=\"partClasses('combobox__control', $props.classNames?.control)\"\n :data-invalid=\"invalid || undefined\"\n :data-disabled=\"disabled || undefined\"\n >\n <span\n v-if=\"$slots.start\"\n :class=\"partClasses('selection__leading', $props.classNames?.leading)\"\n aria-hidden=\"true\"\n ><slot name=\"start\"\n /></span>\n <ComboboxInput\n :id=\"controlId\"\n :model-value=\"text\"\n :display-value=\"() => selected?.label ?? ''\"\n :class=\"partClasses('combobox__input', $props.classNames?.input)\"\n :placeholder=\"placeholder\"\n :aria-required=\"required || undefined\"\n :aria-invalid=\"invalid || undefined\"\n :aria-describedby=\"describedBy\"\n @update:model-value=\"search\"\n />\n <button\n v-if=\"clearable\"\n type=\"button\"\n :class=\"partClasses('combobox__clear', $props.classNames?.clear)\"\n :data-empty=\"(!id && !text) || undefined\"\n :aria-hidden=\"(!id && !text) || undefined\"\n :tabindex=\"!id && !text ? -1 : undefined\"\n :disabled=\"disabled || (!id && !text)\"\n :aria-label=\"clearLabel ?? 'Hapus pilihan'\"\n @click=\"\n change(undefined);\n focus();\n \"\n >\n <CloseIcon :class=\"partClasses('selection__close-icon', $props.classNames?.closeIcon)\" />\n </button>\n <ComboboxTrigger\n :class=\"partClasses('combobox__toggle', $props.classNames?.toggle)\"\n :aria-label=\"toggleLabel ?? 'Buka pilihan'\"\n ><ChevronIcon :class=\"partClasses('select__icon', $props.classNames?.icon)\"\n /></ComboboxTrigger>\n </ComboboxAnchor>\n <ComboboxPortal\n ><ComboboxContent\n :class=\"partClasses('select__popover combobox__popover', $props.classNames?.popover)\"\n position=\"popper\"\n :side-offset=\"4\"\n ><ComboboxViewport :class=\"partClasses('select__list', $props.classNames?.list)\">\n <ComboboxItem\n v-for=\"option in filtered\"\n :key=\"option.id\"\n :value=\"option.id\"\n :text-value=\"option.label\"\n :disabled=\"option.isDisabled\"\n :class=\"partClasses('select__item', $props.classNames?.item)\"\n ><span :class=\"partClasses('select__item-label', $props.classNames?.itemLabel)\"\n ><slot name=\"option\" :option=\"option\"\n >{{ option.label\n }}<span\n v-if=\"option.description\"\n :class=\"partClasses('selection__description', $props.classNames?.description)\"\n >{{ option.description }}</span\n ></slot\n ></span\n ><CheckIcon :class=\"partClasses('select__check', $props.classNames?.check)\"\n /></ComboboxItem>\n <span\n v-if=\"!filtered.length\"\n :class=\"partClasses('selection__empty', $props.classNames?.empty)\"\n role=\"status\"\n >{{ emptyMessage ?? 'Tidak ada pilihan.' }}</span\n >\n </ComboboxViewport></ComboboxContent\n ></ComboboxPortal\n >\n </ComboboxRoot>\n <FieldFeedback\n :class-names=\"{ description: classNames?.description, error: classNames?.error }\"\n :control-id=\"controlId\"\n :description=\"description\"\n :error-message=\"error\"\n :show-error=\"showError\"\n />\n <input v-if=\"name\" type=\"hidden\" :name=\"name\" :value=\"id ?? ''\" :disabled=\"disabled\" />\n <SelectionValidation\n :has-value=\"!!id\"\n :required=\"required\"\n :disabled=\"disabled\"\n @invalid=\"\n tried = true;\n focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\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","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, ref } from 'vue';\nimport { ToggleGroupRoot, ToggleGroupItem as RekaItem } from 'reka-ui';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<\n StylingProps<'icon' | 'item' | 'root'> & {\n label: string;\n items: ToggleGroupItem[];\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n iconOnly?: boolean;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ icon?: (props: { item: ToggleGroupItem }) => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n toggleIds(controlled() ? props.modelValue : local.value, props.items, multiple.value),\n);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const requested = new Set(toggleIds(value, props.items, true));\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple.value && ids.value.includes(item.id)) requested.add(item.id);\n else if (!ids.value.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple.value);\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\n</script>\n<template>\n <ToggleGroupRoot\n :class=\"partClasses('toggle-group', $props.classNames?.root)\"\n :aria-label=\"label\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :data-variant=\"variant ?? 'outline'\"\n :data-size=\"size ?? 'md'\"\n :data-icon-only=\"iconOnly || undefined\"\n @update:model-value=\"update\"\n >\n <RekaItem\n v-for=\"item in items\"\n :key=\"item.id\"\n :value=\"item.id\"\n type=\"button\"\n :class=\"partClasses('toggle-group__item', $props.classNames?.item)\"\n :aria-label=\"item.label\"\n :disabled=\"disabled || item.isDisabled\"\n >\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('toggle-group__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\" /></span\n ><span v-if=\"!iconOnly\">{{ item.label }}</span>\n </RekaItem>\n </ToggleGroupRoot>\n</template>\n","<script setup lang=\"ts\" generic=\"M extends 'single' | 'multiple' = 'single'\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, getCurrentInstance, ref } from 'vue';\nimport { ToggleGroupRoot, ToggleGroupItem as RekaItem } from 'reka-ui';\nimport { toggleIds, type ToggleGroupItem, type ToggleGroupVariant } from './toggle-group-model.js';\nimport type { ButtonSize } from './types.js';\ntype Value = M extends 'multiple' ? string[] : string | null;\nconst props = defineProps<\n StylingProps<'icon' | 'item' | 'root'> & {\n label: string;\n items: ToggleGroupItem[];\n selectionMode?: M;\n modelValue?: Value;\n defaultValue?: Value;\n disabled?: boolean;\n iconOnly?: boolean;\n disallowEmptySelection?: boolean;\n variant?: ToggleGroupVariant;\n size?: ButtonSize;\n orientation?: 'horizontal' | 'vertical';\n dir?: 'ltr' | 'rtl';\n }\n>();\nconst emit = defineEmits<{ 'update:modelValue': [value: Value] }>();\ndefineSlots<{ icon?: (props: { item: ToggleGroupItem }) => unknown }>();\nconst instance = getCurrentInstance();\nconst controlled = () =>\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'modelValue') ||\n Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'model-value');\nconst local = ref<unknown>(props.defaultValue);\nconst multiple = computed(() => props.selectionMode === 'multiple');\nconst ids = computed(() =>\n toggleIds(controlled() ? props.modelValue : local.value, props.items, multiple.value),\n);\nfunction update(value: unknown) {\n if (props.disabled) return;\n const requested = new Set(toggleIds(value, props.items, true));\n for (const item of props.items.filter((item) => item.isDisabled)) {\n if (multiple.value && ids.value.includes(item.id)) requested.add(item.id);\n else if (!ids.value.includes(item.id)) requested.delete(item.id);\n }\n const next = toggleIds([...requested], props.items, multiple.value);\n if (next.length === ids.value.length && next.every((id, index) => id === ids.value[index]))\n return;\n if (props.disallowEmptySelection && ids.value.length && !next.length) return;\n const result = (multiple.value ? next : (next[0] ?? null)) as Value;\n local.value = result;\n emit('update:modelValue', result);\n}\n</script>\n<template>\n <ToggleGroupRoot\n :class=\"partClasses('toggle-group', $props.classNames?.root)\"\n :aria-label=\"label\"\n :type=\"multiple ? 'multiple' : 'single'\"\n :model-value=\"multiple ? ids : (ids[0] ?? '')\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n :orientation=\"orientation ?? 'horizontal'\"\n :data-orientation=\"orientation ?? 'horizontal'\"\n :data-variant=\"variant ?? 'outline'\"\n :data-size=\"size ?? 'md'\"\n :data-icon-only=\"iconOnly || undefined\"\n @update:model-value=\"update\"\n >\n <RekaItem\n v-for=\"item in items\"\n :key=\"item.id\"\n :value=\"item.id\"\n type=\"button\"\n :class=\"partClasses('toggle-group__item', $props.classNames?.item)\"\n :aria-label=\"item.label\"\n :disabled=\"disabled || item.isDisabled\"\n >\n <span\n v-if=\"$slots.icon\"\n :class=\"partClasses('toggle-group__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n ><slot name=\"icon\" :item=\"item\" /></span\n ><span v-if=\"!iconOnly\">{{ item.label }}</span>\n </RekaItem>\n </ToggleGroupRoot>\n</template>\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","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, shallowRef, watch } from 'vue';\nimport {\n RangeCalendarRoot,\n RangeCalendarPrev,\n RangeCalendarNext,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n type DateRange as CalendarRange,\n} from 'reka-ui';\nimport { type DateValue } from '@internationalized/date';\nimport ChevronIcon from './ChevronIcon.vue';\nimport {\n asDate,\n currentDate,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n type DateRangeLabels,\n} from './date-range-model.js';\nconst props = defineProps<\n StylingProps<\n | 'apply'\n | 'body'\n | 'calendar'\n | 'cancel'\n | 'clear'\n | 'content'\n | 'day'\n | 'field'\n | 'footer'\n | 'grid'\n | 'heading'\n | 'inputs'\n | 'intro'\n | 'jump'\n | 'main'\n | 'month'\n | 'months'\n | 'nav'\n | 'navigation'\n | 'preset'\n | 'presets'\n | 'root'\n | 'summary'\n | 'validation'\n | 'weekday'\n > & {\n options: DateRangeOptions;\n draft: DateRange;\n labels: DateRangeLabels;\n id: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n }\n>();\nconst emit = defineEmits<{ draft: [value: DateRange]; apply: []; cancel: [] }>();\nconst locale = computed(() => props.options.locale ?? 'id-ID');\nconst nullable = computed(() => (props.draft.start || props.draft.end ? props.draft : null));\nconst errorCode = computed(\n () =>\n rangeError(nullable.value, props.options) ??\n (props.required && !nullable.value ? 'required' : null),\n);\nconst error = computed(() => (errorCode.value ? props.labels[errorCode.value] : undefined));\nfunction initialFocus() {\n const date =\n asDate(props.draft.start) ?? asDate(props.options.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.options.minDate),\n max = asDate(props.options.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n}\nconst focused = shallowRef<DateValue>(initialFocus());\nwatch(\n () => props.draft.start,\n () => {\n if (asDate(props.draft.start)) focused.value = asDate(props.draft.start)!;\n },\n);\nconst calendarValue = computed(() => ({\n start: asDate(props.draft.start),\n end: props.draft.start <= props.draft.end ? asDate(props.draft.end) : undefined,\n}));\nfunction select(value: CalendarRange) {\n if (!props.disabled && !props.readonly)\n emit('draft', { start: value.start?.toString() ?? '', end: value.end?.toString() ?? '' });\n}\nfunction edit(part: 'start' | 'end', event: Event) {\n emit('draft', { ...props.draft, [part]: (event.target as HTMLInputElement).value });\n}\nfunction jumpYear(event: Event) {\n const el = event.target as HTMLInputElement;\n const year = Number(el.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n focused.value = focused.value.set({ year });\n else el.value = String(focused.value.year);\n}\nconst monthLabel = (date: DateValue) =>\n new Intl.DateTimeFormat(locale.value, {\n month: 'long',\n year: 'numeric',\n calendar: 'gregory',\n timeZone: 'UTC',\n }).format(date.toDate('UTC'));\nconst unavailable = (date: DateValue) =>\n props.options.isDateUnavailable?.(date.toString()) ?? false;\n</script>\n<template>\n <div\n :class=\"partClasses('date-range__content', $props.classNames?.content)\"\n :data-readonly=\"readonly || undefined\"\n >\n <header :class=\"partClasses('date-range__intro', $props.classNames?.intro)\">\n <h2 :id=\"`${id}-title`\">{{ labels.title }}</h2>\n <p :class=\"partClasses('date-range__summary', $props.classNames?.summary)\" aria-live=\"polite\">\n {{ rangeText(nullable, locale) || labels.incomplete }}\n </p>\n </header>\n <div :class=\"partClasses('date-range__body', $props.classNames?.body)\">\n <div\n v-if=\"options.presets?.length\"\n :class=\"partClasses('date-range__presets', $props.classNames?.presets)\"\n role=\"group\"\n :aria-label=\"labels.presets\"\n >\n <button\n v-for=\"preset in options.presets\"\n :key=\"preset.id\"\n type=\"button\"\n :class=\"partClasses('date-range__preset', $props.classNames?.preset)\"\n :disabled=\"disabled || readonly || !!rangeError(preset.value, options)\"\n :aria-pressed=\"draft.start === preset.value.start && draft.end === preset.value.end\"\n @click=\"emit('draft', { ...preset.value })\"\n >\n {{ preset.label }}\n </button>\n </div>\n <div :class=\"partClasses('date-range__main', $props.classNames?.main)\">\n <div\n v-if=\"options.showMonthYearPicker\"\n :class=\"partClasses('date-range__jump', $props.classNames?.jump)\"\n >\n <label\n ><span>{{ locale.startsWith('id') ? 'Bulan' : 'Month' }}</span\n ><select\n form=\"\"\n :aria-label=\"locale.startsWith('id') ? 'Bulan' : 'Month'\"\n :disabled=\"disabled\"\n :value=\"focused.month\"\n @change=\"\n focused = focused.set({ month: Number(($event.target as HTMLSelectElement).value) })\n \"\n >\n <option v-for=\"month in 12\" :key=\"month\" :value=\"month\">\n {{\n new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month, day: 1 }).toDate('UTC'))\n }}\n </option>\n </select></label\n ><label\n ><span>{{ locale.startsWith('id') ? 'Tahun' : 'Year' }}</span\n ><input\n type=\"number\"\n form=\"\"\n :disabled=\"disabled\"\n :value=\"focused.year\"\n :min=\"asDate(options.minDate)?.year ?? 1\"\n :max=\"asDate(options.maxDate)?.year ?? 9999\"\n @change=\"jumpYear\"\n /></label>\n </div>\n <div\n v-if=\"options.showInputs !== false\"\n :class=\"partClasses('date-range__inputs', $props.classNames?.inputs)\"\n >\n <label\n v-for=\"part in ['start', 'end'] as const\"\n :key=\"part\"\n :class=\"partClasses('date-range__field', $props.classNames?.field)\"\n ><span>{{ labels[part] }}</span\n ><input\n type=\"date\"\n form=\"\"\n :value=\"draft[part]\"\n :min=\"options.minDate\"\n :max=\"options.maxDate\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"!!errorCode\"\n :aria-describedby=\"error ? `${id}-draft-error` : undefined\"\n @input=\"edit(part, $event)\"\n /></label>\n </div>\n <RangeCalendarRoot\n v-slot=\"{ grid, weekDays }\"\n v-model:placeholder=\"focused\"\n :class=\"partClasses('date-range__calendar', $props.classNames?.calendar)\"\n :model-value=\"calendarValue\"\n :number-of-months=\"options.visibleMonths ?? 2\"\n :week-starts-on=\"options.weekStartsOn ?? 1\"\n weekday-format=\"short\"\n :calendar-label=\"labels.title\"\n :locale=\"`${locale.split('-u-')[0]}-u-ca-gregory`\"\n :dir=\"options.dir\"\n :min-value=\"asDate(options.minDate)\"\n :max-value=\"asDate(options.maxDate)\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :is-date-unavailable=\"unavailable\"\n @update:model-value=\"select\"\n >\n <div :class=\"partClasses('date-range__navigation', $props.classNames?.navigation)\">\n <RangeCalendarPrev\n as=\"button\"\n type=\"button\"\n :class=\"\n partClasses('date-range__nav date-range__nav--previous', $props.classNames?.nav)\n \"\n :aria-label=\"labels.previousMonth\"\n ><ChevronIcon /></RangeCalendarPrev\n ><RangeCalendarNext\n as=\"button\"\n type=\"button\"\n :class=\"partClasses('date-range__nav date-range__nav--next', $props.classNames?.nav)\"\n :aria-label=\"labels.nextMonth\"\n ><ChevronIcon\n /></RangeCalendarNext>\n </div>\n <div :class=\"partClasses('date-range__months', $props.classNames?.months)\">\n <div\n v-for=\"month in grid\"\n :key=\"month.value.toString()\"\n :class=\"partClasses('date-range__month', $props.classNames?.month)\"\n >\n <h2 :class=\"partClasses('date-range__heading', $props.classNames?.heading)\">\n {{ monthLabel(month.value) }}\n </h2>\n <RangeCalendarGrid :class=\"partClasses('date-range__grid', $props.classNames?.grid)\"\n ><RangeCalendarGridHead\n ><RangeCalendarGridRow\n ><RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n :class=\"partClasses('date-range__weekday', $props.classNames?.weekday)\"\n >{{ day }}</RangeCalendarHeadCell\n ></RangeCalendarGridRow\n ></RangeCalendarGridHead\n >\n <RangeCalendarGridBody\n ><RangeCalendarGridRow v-for=\"(week, index) in month.rows\" :key=\"index\"\n ><RangeCalendarCell v-for=\"date in week\" :key=\"date.toString()\" :date=\"date\"\n ><RangeCalendarCellTrigger\n :class=\"partClasses('date-range__day', $props.classNames?.day)\"\n :day=\"date\"\n :month=\"\n month.value\n \" /></RangeCalendarCell></RangeCalendarGridRow></RangeCalendarGridBody\n ></RangeCalendarGrid>\n </div>\n </div>\n </RangeCalendarRoot>\n <div\n :class=\"partClasses('date-range__validation', $props.classNames?.validation)\"\n aria-live=\"polite\"\n >\n <p v-if=\"error\" :id=\"`${id}-draft-error`\" role=\"alert\">{{ error }}</p>\n </div>\n </div>\n </div>\n <footer :class=\"partClasses('date-range__footer', $props.classNames?.footer)\">\n <button\n type=\"button\"\n :class=\"partClasses('button button--ghost button--sm', $props.classNames?.clear)\"\n :disabled=\"disabled || readonly\"\n @click=\"emit('draft', { start: '', end: '' })\"\n >\n {{ labels.clear }}\n </button>\n <div>\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'button button--secondary button--sm date-range__cancel',\n $props.classNames?.cancel,\n )\n \"\n @click=\"emit('cancel')\"\n >\n {{ labels.cancel }}</button\n ><button\n type=\"button\"\n :class=\"\n partClasses(\n 'button button--primary button--sm date-range__apply',\n $props.classNames?.apply,\n )\n \"\n :disabled=\"disabled || readonly || !!errorCode\"\n @click=\"emit('apply')\"\n >\n {{ labels.apply }}\n </button>\n </div>\n </footer>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, shallowRef, watch } from 'vue';\nimport {\n RangeCalendarRoot,\n RangeCalendarPrev,\n RangeCalendarNext,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n type DateRange as CalendarRange,\n} from 'reka-ui';\nimport { type DateValue } from '@internationalized/date';\nimport ChevronIcon from './ChevronIcon.vue';\nimport {\n asDate,\n currentDate,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n type DateRangeLabels,\n} from './date-range-model.js';\nconst props = defineProps<\n StylingProps<\n | 'apply'\n | 'body'\n | 'calendar'\n | 'cancel'\n | 'clear'\n | 'content'\n | 'day'\n | 'field'\n | 'footer'\n | 'grid'\n | 'heading'\n | 'inputs'\n | 'intro'\n | 'jump'\n | 'main'\n | 'month'\n | 'months'\n | 'nav'\n | 'navigation'\n | 'preset'\n | 'presets'\n | 'root'\n | 'summary'\n | 'validation'\n | 'weekday'\n > & {\n options: DateRangeOptions;\n draft: DateRange;\n labels: DateRangeLabels;\n id: string;\n disabled: boolean;\n readonly: boolean;\n required: boolean;\n }\n>();\nconst emit = defineEmits<{ draft: [value: DateRange]; apply: []; cancel: [] }>();\nconst locale = computed(() => props.options.locale ?? 'id-ID');\nconst nullable = computed(() => (props.draft.start || props.draft.end ? props.draft : null));\nconst errorCode = computed(\n () =>\n rangeError(nullable.value, props.options) ??\n (props.required && !nullable.value ? 'required' : null),\n);\nconst error = computed(() => (errorCode.value ? props.labels[errorCode.value] : undefined));\nfunction initialFocus() {\n const date =\n asDate(props.draft.start) ?? asDate(props.options.referenceDate) ?? asDate(currentDate())!;\n const min = asDate(props.options.minDate),\n max = asDate(props.options.maxDate);\n return min && date.compare(min) < 0 ? min : max && date.compare(max) > 0 ? max : date;\n}\nconst focused = shallowRef<DateValue>(initialFocus());\nwatch(\n () => props.draft.start,\n () => {\n if (asDate(props.draft.start)) focused.value = asDate(props.draft.start)!;\n },\n);\nconst calendarValue = computed(() => ({\n start: asDate(props.draft.start),\n end: props.draft.start <= props.draft.end ? asDate(props.draft.end) : undefined,\n}));\nfunction select(value: CalendarRange) {\n if (!props.disabled && !props.readonly)\n emit('draft', { start: value.start?.toString() ?? '', end: value.end?.toString() ?? '' });\n}\nfunction edit(part: 'start' | 'end', event: Event) {\n emit('draft', { ...props.draft, [part]: (event.target as HTMLInputElement).value });\n}\nfunction jumpYear(event: Event) {\n const el = event.target as HTMLInputElement;\n const year = Number(el.value);\n if (Number.isInteger(year) && year >= 1 && year <= 9999)\n focused.value = focused.value.set({ year });\n else el.value = String(focused.value.year);\n}\nconst monthLabel = (date: DateValue) =>\n new Intl.DateTimeFormat(locale.value, {\n month: 'long',\n year: 'numeric',\n calendar: 'gregory',\n timeZone: 'UTC',\n }).format(date.toDate('UTC'));\nconst unavailable = (date: DateValue) =>\n props.options.isDateUnavailable?.(date.toString()) ?? false;\n</script>\n<template>\n <div\n :class=\"partClasses('date-range__content', $props.classNames?.content)\"\n :data-readonly=\"readonly || undefined\"\n >\n <header :class=\"partClasses('date-range__intro', $props.classNames?.intro)\">\n <h2 :id=\"`${id}-title`\">{{ labels.title }}</h2>\n <p :class=\"partClasses('date-range__summary', $props.classNames?.summary)\" aria-live=\"polite\">\n {{ rangeText(nullable, locale) || labels.incomplete }}\n </p>\n </header>\n <div :class=\"partClasses('date-range__body', $props.classNames?.body)\">\n <div\n v-if=\"options.presets?.length\"\n :class=\"partClasses('date-range__presets', $props.classNames?.presets)\"\n role=\"group\"\n :aria-label=\"labels.presets\"\n >\n <button\n v-for=\"preset in options.presets\"\n :key=\"preset.id\"\n type=\"button\"\n :class=\"partClasses('date-range__preset', $props.classNames?.preset)\"\n :disabled=\"disabled || readonly || !!rangeError(preset.value, options)\"\n :aria-pressed=\"draft.start === preset.value.start && draft.end === preset.value.end\"\n @click=\"emit('draft', { ...preset.value })\"\n >\n {{ preset.label }}\n </button>\n </div>\n <div :class=\"partClasses('date-range__main', $props.classNames?.main)\">\n <div\n v-if=\"options.showMonthYearPicker\"\n :class=\"partClasses('date-range__jump', $props.classNames?.jump)\"\n >\n <label\n ><span>{{ locale.startsWith('id') ? 'Bulan' : 'Month' }}</span\n ><select\n form=\"\"\n :aria-label=\"locale.startsWith('id') ? 'Bulan' : 'Month'\"\n :disabled=\"disabled\"\n :value=\"focused.month\"\n @change=\"\n focused = focused.set({ month: Number(($event.target as HTMLSelectElement).value) })\n \"\n >\n <option v-for=\"month in 12\" :key=\"month\" :value=\"month\">\n {{\n new Intl.DateTimeFormat(locale, {\n month: 'long',\n timeZone: 'UTC',\n calendar: 'gregory',\n }).format(focused.set({ month, day: 1 }).toDate('UTC'))\n }}\n </option>\n </select></label\n ><label\n ><span>{{ locale.startsWith('id') ? 'Tahun' : 'Year' }}</span\n ><input\n type=\"number\"\n form=\"\"\n :disabled=\"disabled\"\n :value=\"focused.year\"\n :min=\"asDate(options.minDate)?.year ?? 1\"\n :max=\"asDate(options.maxDate)?.year ?? 9999\"\n @change=\"jumpYear\"\n /></label>\n </div>\n <div\n v-if=\"options.showInputs !== false\"\n :class=\"partClasses('date-range__inputs', $props.classNames?.inputs)\"\n >\n <label\n v-for=\"part in ['start', 'end'] as const\"\n :key=\"part\"\n :class=\"partClasses('date-range__field', $props.classNames?.field)\"\n ><span>{{ labels[part] }}</span\n ><input\n type=\"date\"\n form=\"\"\n :value=\"draft[part]\"\n :min=\"options.minDate\"\n :max=\"options.maxDate\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :aria-invalid=\"!!errorCode\"\n :aria-describedby=\"error ? `${id}-draft-error` : undefined\"\n @input=\"edit(part, $event)\"\n /></label>\n </div>\n <RangeCalendarRoot\n v-slot=\"{ grid, weekDays }\"\n v-model:placeholder=\"focused\"\n :class=\"partClasses('date-range__calendar', $props.classNames?.calendar)\"\n :model-value=\"calendarValue\"\n :number-of-months=\"options.visibleMonths ?? 2\"\n :week-starts-on=\"options.weekStartsOn ?? 1\"\n weekday-format=\"short\"\n :calendar-label=\"labels.title\"\n :locale=\"`${locale.split('-u-')[0]}-u-ca-gregory`\"\n :dir=\"options.dir\"\n :min-value=\"asDate(options.minDate)\"\n :max-value=\"asDate(options.maxDate)\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :is-date-unavailable=\"unavailable\"\n @update:model-value=\"select\"\n >\n <div :class=\"partClasses('date-range__navigation', $props.classNames?.navigation)\">\n <RangeCalendarPrev\n as=\"button\"\n type=\"button\"\n :class=\"\n partClasses('date-range__nav date-range__nav--previous', $props.classNames?.nav)\n \"\n :aria-label=\"labels.previousMonth\"\n ><ChevronIcon /></RangeCalendarPrev\n ><RangeCalendarNext\n as=\"button\"\n type=\"button\"\n :class=\"partClasses('date-range__nav date-range__nav--next', $props.classNames?.nav)\"\n :aria-label=\"labels.nextMonth\"\n ><ChevronIcon\n /></RangeCalendarNext>\n </div>\n <div :class=\"partClasses('date-range__months', $props.classNames?.months)\">\n <div\n v-for=\"month in grid\"\n :key=\"month.value.toString()\"\n :class=\"partClasses('date-range__month', $props.classNames?.month)\"\n >\n <h2 :class=\"partClasses('date-range__heading', $props.classNames?.heading)\">\n {{ monthLabel(month.value) }}\n </h2>\n <RangeCalendarGrid :class=\"partClasses('date-range__grid', $props.classNames?.grid)\"\n ><RangeCalendarGridHead\n ><RangeCalendarGridRow\n ><RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n :class=\"partClasses('date-range__weekday', $props.classNames?.weekday)\"\n >{{ day }}</RangeCalendarHeadCell\n ></RangeCalendarGridRow\n ></RangeCalendarGridHead\n >\n <RangeCalendarGridBody\n ><RangeCalendarGridRow v-for=\"(week, index) in month.rows\" :key=\"index\"\n ><RangeCalendarCell v-for=\"date in week\" :key=\"date.toString()\" :date=\"date\"\n ><RangeCalendarCellTrigger\n :class=\"partClasses('date-range__day', $props.classNames?.day)\"\n :day=\"date\"\n :month=\"\n month.value\n \" /></RangeCalendarCell></RangeCalendarGridRow></RangeCalendarGridBody\n ></RangeCalendarGrid>\n </div>\n </div>\n </RangeCalendarRoot>\n <div\n :class=\"partClasses('date-range__validation', $props.classNames?.validation)\"\n aria-live=\"polite\"\n >\n <p v-if=\"error\" :id=\"`${id}-draft-error`\" role=\"alert\">{{ error }}</p>\n </div>\n </div>\n </div>\n <footer :class=\"partClasses('date-range__footer', $props.classNames?.footer)\">\n <button\n type=\"button\"\n :class=\"partClasses('button button--ghost button--sm', $props.classNames?.clear)\"\n :disabled=\"disabled || readonly\"\n @click=\"emit('draft', { start: '', end: '' })\"\n >\n {{ labels.clear }}\n </button>\n <div>\n <button\n type=\"button\"\n :class=\"\n partClasses(\n 'button button--secondary button--sm date-range__cancel',\n $props.classNames?.cancel,\n )\n \"\n @click=\"emit('cancel')\"\n >\n {{ labels.cancel }}</button\n ><button\n type=\"button\"\n :class=\"\n partClasses(\n 'button button--primary button--sm date-range__apply',\n $props.classNames?.apply,\n )\n \"\n :disabled=\"disabled || readonly || !!errorCode\"\n @click=\"emit('apply')\"\n >\n {{ labels.apply }}\n </button>\n </div>\n </footer>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, watch } from 'vue';\nimport { PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent, useId } from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport DateRangePanel from './DateRangePanel.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport {\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends DateRangeOptions {\n modelValue?: DateRange | null;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n}\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'apply'\n | 'body'\n | 'calendar'\n | 'cancel'\n | 'chevron'\n | 'clear'\n | 'content'\n | 'day'\n | 'description'\n | 'error'\n | 'field'\n | 'footer'\n | 'grid'\n | 'heading'\n | 'icon'\n | 'inputs'\n | 'intro'\n | 'jump'\n | 'label'\n | 'main'\n | 'month'\n | 'months'\n | 'nav'\n | 'navigation'\n | 'panel'\n | 'preset'\n | 'presets'\n | 'root'\n | 'summary'\n | 'trigger'\n | 'validation'\n | 'value'\n | 'weekday'\n > &\n Props\n >(),\n {\n modelValue: undefined,\n defaultValue: null,\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n locale: 'id-ID',\n dir: undefined,\n visibleMonths: 2,\n weekStartsOn: 1,\n display: 'popover',\n showInputs: true,\n showMonthYearPicker: false,\n triggerDisplay: 'text',\n presets: () => [],\n labels: undefined,\n formatRange: undefined,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n referenceDate: undefined,\n open: undefined,\n defaultOpen: false,\n minDate: undefined,\n maxDate: undefined,\n minDays: undefined,\n maxDays: undefined,\n isDateUnavailable: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [value: DateRange | null];\n 'update:open': [open: boolean];\n apply: [value: DateRange | null];\n}>();\nconst local = ref<DateRange | null>(props.defaultValue);\nconst committed = computed(() => (props.modelValue !== undefined ? props.modelValue : local.value));\nconst draft = ref<DateRange>({ ...(committed.value ?? { start: '', end: '' }) });\nwatch(\n () => [committed.value?.start, committed.value?.end],\n () => {\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n },\n);\nconst labels = computed(() => ({ ...dateRangeLabels(props.locale), ...props.labels }));\nconst id = useId(),\n root = ref<HTMLDivElement>(),\n formError = ref(false);\nconst disclosure = useDisclosure(props, (next) => emit('update:open', next));\nconst visible = computed(() => disclosure.visible.value && !props.disabled);\nfunction changeOpen(next: boolean) {\n if (next && props.disabled) return;\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n disclosure.change(next);\n}\nconst committedError = computed(() => rangeError(committed.value, props));\nconst outerError = computed(() => props.invalid || !!committedError.value || formError.value);\nconst text = computed(() => {\n const value = committed.value;\n if (!value) return labels.value.placeholder;\n const preset = props.presets.find(\n (p) => p.value.start === value.start && p.value.end === value.end,\n );\n return (\n props.formatRange?.(value, props.locale) ?? preset?.label ?? rangeText(value, props.locale)\n );\n});\nfunction apply() {\n const next = draft.value.start || draft.value.end ? { ...draft.value } : null;\n if (props.disabled || props.readonly || rangeError(next, props) || (props.required && !next))\n return;\n local.value = next;\n formError.value = false;\n emit('update:modelValue', next);\n emit('apply', next);\n disclosure.change(false);\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n if (props.modelValue === undefined) local.value = props.defaultValue;\n formError.value = false;\n changeOpen(false);\n }\n}\nconst describedBy = computed(() =>\n outerError.value ? `${id}-error` : props.description ? `${id}-description` : undefined,\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n ref=\"root\"\n :class=\"\n partClasses(\n [\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ],\n $props.classNames?.root,\n )\n \"\n :dir=\"dir\"\n :data-disabled=\"disabled || undefined\"\n >\n <span :id=\"`${id}-label`\" :class=\"partClasses('date-range__label', $props.classNames?.label)\"\n >{{ label }}<span v-if=\"required\" aria-hidden=\"true\"> *</span></span\n >\n <section\n v-if=\"display === 'inline'\"\n :class=\"partClasses('date-range__panel date-range__inline', $props.classNames?.panel)\"\n :aria-labelledby=\"`${id}-title`\"\n :dir=\"dir\"\n >\n <DateRangePanel\n :id=\"id\"\n :class-names=\"classNames\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n />\n </section>\n <PopoverRoot v-else :open=\"visible\" @update:open=\"changeOpen\"\n ><PopoverTrigger\n :class=\"partClasses('date-range__trigger', $props.classNames?.trigger)\"\n :disabled=\"disabled\"\n :aria-labelledby=\"`${id}-label ${id}-value`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"outerError\"\n >\n <svg\n :class=\"partClasses('date-range__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" /></svg\n ><span\n :id=\"`${id}-value`\"\n :class=\"partClasses('date-range__value', $props.classNames?.value)\"\n :data-placeholder=\"!committed || undefined\"\n >{{ text }}</span\n ><ChevronIcon\n :class=\"partClasses('date-range__chevron', $props.classNames?.chevron)\"\n /> </PopoverTrigger\n ><PopoverPortal\n ><PopoverContent\n as-child\n side=\"bottom\"\n align=\"start\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n ><div\n :class=\"partClasses('date-range__panel date-range__dialog', $props.classNames?.panel)\"\n :dir=\"dir\"\n :aria-labelledby=\"`${id}-title`\"\n >\n <DateRangePanel\n :id=\"id\"\n :class-names=\"classNames\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n /></div></PopoverContent></PopoverPortal\n ></PopoverRoot>\n <span\n v-if=\"description\"\n :id=\"`${id}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <span\n v-if=\"outerError\"\n :id=\"`${id}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n role=\"alert\"\n >{{ errorMessage ?? (committedError ? labels[committedError] : labels.required) }}</span\n >\n <template v-if=\"name\"\n ><input\n type=\"hidden\"\n :name=\"`${name}.start`\"\n :value=\"committed?.start ?? ''\"\n :disabled=\"disabled\" /><input\n type=\"hidden\"\n :name=\"`${name}.end`\"\n :value=\"committed?.end ?? ''\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"!!committed && !committedError\"\n :required=\"required || !!committedError\"\n :disabled=\"disabled\"\n @invalid=\"\n formError = true;\n root?.querySelector<HTMLButtonElement>('.date-range__trigger')?.focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { partClasses, type StylingProps } from './styling.js';\nimport { computed, ref, watch } from 'vue';\nimport { PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent, useId } from 'reka-ui';\nimport ChevronIcon from './ChevronIcon.vue';\nimport DateRangePanel from './DateRangePanel.vue';\nimport SelectionValidation from './SelectionValidation.vue';\nimport {\n dateRangeLabels,\n rangeError,\n rangeText,\n type DateRange,\n type DateRangeOptions,\n} from './date-range-model.js';\nimport { useDisclosure } from './useDisclosure.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends DateRangeOptions {\n modelValue?: DateRange | null;\n disabled?: boolean;\n readonly?: boolean;\n required?: boolean;\n invalid?: boolean;\n}\nconst props = withDefaults(\n defineProps<\n StylingProps<\n | 'apply'\n | 'body'\n | 'calendar'\n | 'cancel'\n | 'chevron'\n | 'clear'\n | 'content'\n | 'day'\n | 'description'\n | 'error'\n | 'field'\n | 'footer'\n | 'grid'\n | 'heading'\n | 'icon'\n | 'inputs'\n | 'intro'\n | 'jump'\n | 'label'\n | 'main'\n | 'month'\n | 'months'\n | 'nav'\n | 'navigation'\n | 'panel'\n | 'preset'\n | 'presets'\n | 'root'\n | 'summary'\n | 'trigger'\n | 'validation'\n | 'value'\n | 'weekday'\n > &\n Props\n >(),\n {\n modelValue: undefined,\n defaultValue: null,\n size: 'md',\n variant: 'primary',\n fullWidth: true,\n locale: 'id-ID',\n dir: undefined,\n visibleMonths: 2,\n weekStartsOn: 1,\n display: 'popover',\n showInputs: true,\n showMonthYearPicker: false,\n triggerDisplay: 'text',\n presets: () => [],\n labels: undefined,\n formatRange: undefined,\n description: undefined,\n errorMessage: undefined,\n name: undefined,\n referenceDate: undefined,\n open: undefined,\n defaultOpen: false,\n minDate: undefined,\n maxDate: undefined,\n minDays: undefined,\n maxDays: undefined,\n isDateUnavailable: undefined,\n },\n);\nconst emit = defineEmits<{\n 'update:modelValue': [value: DateRange | null];\n 'update:open': [open: boolean];\n apply: [value: DateRange | null];\n}>();\nconst local = ref<DateRange | null>(props.defaultValue);\nconst committed = computed(() => (props.modelValue !== undefined ? props.modelValue : local.value));\nconst draft = ref<DateRange>({ ...(committed.value ?? { start: '', end: '' }) });\nwatch(\n () => [committed.value?.start, committed.value?.end],\n () => {\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n },\n);\nconst labels = computed(() => ({ ...dateRangeLabels(props.locale), ...props.labels }));\nconst id = useId(),\n root = ref<HTMLDivElement>(),\n formError = ref(false);\nconst disclosure = useDisclosure(props, (next) => emit('update:open', next));\nconst visible = computed(() => disclosure.visible.value && !props.disabled);\nfunction changeOpen(next: boolean) {\n if (next && props.disabled) return;\n draft.value = { ...(committed.value ?? { start: '', end: '' }) };\n disclosure.change(next);\n}\nconst committedError = computed(() => rangeError(committed.value, props));\nconst outerError = computed(() => props.invalid || !!committedError.value || formError.value);\nconst text = computed(() => {\n const value = committed.value;\n if (!value) return labels.value.placeholder;\n const preset = props.presets.find(\n (p) => p.value.start === value.start && p.value.end === value.end,\n );\n return (\n props.formatRange?.(value, props.locale) ?? preset?.label ?? rangeText(value, props.locale)\n );\n});\nfunction apply() {\n const next = draft.value.start || draft.value.end ? { ...draft.value } : null;\n if (props.disabled || props.readonly || rangeError(next, props) || (props.required && !next))\n return;\n local.value = next;\n formError.value = false;\n emit('update:modelValue', next);\n emit('apply', next);\n disclosure.change(false);\n}\nfunction reset(cancelled: boolean) {\n if (!cancelled) {\n if (props.modelValue === undefined) local.value = props.defaultValue;\n formError.value = false;\n changeOpen(false);\n }\n}\nconst describedBy = computed(() =>\n outerError.value ? `${id}-error` : props.description ? `${id}-description` : undefined,\n);\n</script>\n<template>\n <div\n v-bind=\"$attrs\"\n ref=\"root\"\n :class=\"\n partClasses(\n [\n 'date-range',\n `date-range--${size}`,\n `date-range--${variant}`,\n !fullWidth && 'date-range--fit',\n hideLabel && 'date-range--label-hidden',\n triggerDisplay === 'icon' && 'date-range--icon-trigger',\n ],\n $props.classNames?.root,\n )\n \"\n :dir=\"dir\"\n :data-disabled=\"disabled || undefined\"\n >\n <span :id=\"`${id}-label`\" :class=\"partClasses('date-range__label', $props.classNames?.label)\"\n >{{ label }}<span v-if=\"required\" aria-hidden=\"true\"> *</span></span\n >\n <section\n v-if=\"display === 'inline'\"\n :class=\"partClasses('date-range__panel date-range__inline', $props.classNames?.panel)\"\n :aria-labelledby=\"`${id}-title`\"\n :dir=\"dir\"\n >\n <DateRangePanel\n :id=\"id\"\n :class-names=\"classNames\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n />\n </section>\n <PopoverRoot v-else :open=\"visible\" @update:open=\"changeOpen\"\n ><PopoverTrigger\n :class=\"partClasses('date-range__trigger', $props.classNames?.trigger)\"\n :disabled=\"disabled\"\n :aria-labelledby=\"`${id}-label ${id}-value`\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"outerError\"\n >\n <svg\n :class=\"partClasses('date-range__icon', $props.classNames?.icon)\"\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M7 3v4m10-4v4M3 10h18\" /></svg\n ><span\n :id=\"`${id}-value`\"\n :class=\"partClasses('date-range__value', $props.classNames?.value)\"\n :data-placeholder=\"!committed || undefined\"\n >{{ text }}</span\n ><ChevronIcon\n :class=\"partClasses('date-range__chevron', $props.classNames?.chevron)\"\n /> </PopoverTrigger\n ><PopoverPortal\n ><PopoverContent\n as-child\n side=\"bottom\"\n align=\"start\"\n :side-offset=\"8\"\n :collision-padding=\"16\"\n ><div\n :class=\"partClasses('date-range__panel date-range__dialog', $props.classNames?.panel)\"\n :dir=\"dir\"\n :aria-labelledby=\"`${id}-title`\"\n >\n <DateRangePanel\n :id=\"id\"\n :class-names=\"classNames\"\n :options=\"props\"\n :draft=\"draft\"\n :labels=\"labels\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :required=\"required\"\n @draft=\"draft = $event\"\n @apply=\"apply\"\n @cancel=\"changeOpen(false)\"\n /></div></PopoverContent></PopoverPortal\n ></PopoverRoot>\n <span\n v-if=\"description\"\n :id=\"`${id}-description`\"\n :class=\"partClasses('input__description', $props.classNames?.description)\"\n >{{ description }}</span\n >\n <span\n v-if=\"outerError\"\n :id=\"`${id}-error`\"\n :class=\"partClasses('input__error', $props.classNames?.error)\"\n role=\"alert\"\n >{{ errorMessage ?? (committedError ? labels[committedError] : labels.required) }}</span\n >\n <template v-if=\"name\"\n ><input\n type=\"hidden\"\n :name=\"`${name}.start`\"\n :value=\"committed?.start ?? ''\"\n :disabled=\"disabled\" /><input\n type=\"hidden\"\n :name=\"`${name}.end`\"\n :value=\"committed?.end ?? ''\"\n :disabled=\"disabled\"\n /></template>\n <SelectionValidation\n :has-value=\"!!committed && !committedError\"\n :required=\"required || !!committedError\"\n :disabled=\"disabled\"\n @invalid=\"\n formError = true;\n root?.querySelector<HTMLButtonElement>('.date-range__trigger')?.focus();\n \"\n @reset=\"reset\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, type HTMLAttributes } from 'vue';\nimport { ListboxRoot, ListboxContent, SelectViewport } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends /* @vue-ignore */ HTMLAttributes {\n modelValue?: string | string[];\n defaultValue?: string | string[];\n selectionMode?: 'single' | 'multiple';\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n dir: undefined,\n});\nconst emit = defineEmits<{ 'update:modelValue': [value: string | string[]] }>();\nconst select = inject(selectCompositionKey, undefined);\nconst feedback = select ? undefined : provideFeedbackContext();\nfunction update(value: unknown) {\n if (props.disabled) return;\n emit('update:modelValue', Array.isArray(value) ? value.map(String) : String(value));\n}\n</script>\n<template>\n <SelectViewport v-if=\"select\" v-bind=\"$attrs\" class=\"select__list\"><slot /></SelectViewport>\n <ListboxRoot\n v-else\n :model-value=\"modelValue\"\n :default-value=\"defaultValue\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <ListboxContent\n :aria-describedby=\"feedback?.describedBy.value\"\n v-bind=\"$attrs\"\n class=\"listbox__list\"\n ><slot\n /></ListboxContent>\n </ListboxRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { inject, type HTMLAttributes } from 'vue';\nimport { ListboxRoot, ListboxContent, SelectViewport } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\ndefineOptions({ inheritAttrs: false });\ninterface Props extends /* @vue-ignore */ HTMLAttributes {\n modelValue?: string | string[];\n defaultValue?: string | string[];\n selectionMode?: 'single' | 'multiple';\n disabled?: boolean;\n dir?: 'ltr' | 'rtl';\n}\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n dir: undefined,\n});\nconst emit = defineEmits<{ 'update:modelValue': [value: string | string[]] }>();\nconst select = inject(selectCompositionKey, undefined);\nconst feedback = select ? undefined : provideFeedbackContext();\nfunction update(value: unknown) {\n if (props.disabled) return;\n emit('update:modelValue', Array.isArray(value) ? value.map(String) : String(value));\n}\n</script>\n<template>\n <SelectViewport v-if=\"select\" v-bind=\"$attrs\" class=\"select__list\"><slot /></SelectViewport>\n <ListboxRoot\n v-else\n :model-value=\"modelValue\"\n :default-value=\"defaultValue\"\n :multiple=\"selectionMode === 'multiple'\"\n :disabled=\"disabled\"\n :dir=\"dir\"\n @update:model-value=\"update\"\n >\n <ListboxContent\n :aria-describedby=\"feedback?.describedBy.value\"\n v-bind=\"$attrs\"\n class=\"listbox__list\"\n ><slot\n /></ListboxContent>\n </ListboxRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject, watchEffect } from 'vue';\nimport { ListboxItem, SelectItem, SelectItemText } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\ndefineOptions({ inheritAttrs: false });\nconst props = defineProps<{\n value?: string;\n id?: string;\n textValue?: string;\n disabled?: boolean;\n}>();\nconst select = inject(selectCompositionKey, undefined);\nconst feedback = provideFeedbackContext();\nconst value = computed(() => props.value ?? props.id);\nif (!value.value) throw new Error('ListBox.Item requires a nonempty value or id.');\nwatchEffect(() => {\n if (select && value.value) select.registerLabel(value.value, props.textValue ?? value.value);\n});\n</script>\n<template>\n <SelectItem\n v-if=\"select\"\n v-bind=\"$attrs\"\n :aria-describedby=\"feedback.describedBy.value\"\n :value=\"value!\"\n :text-value=\"textValue\"\n :disabled=\"disabled\"\n class=\"select__item\"\n >\n <template v-if=\"textValue\"\n ><SelectItemText hidden>{{ textValue }}</SelectItemText\n ><slot\n /></template>\n <SelectItemText v-else class=\"select__item-label\"><slot /></SelectItemText>\n </SelectItem>\n <ListboxItem\n v-else\n :aria-describedby=\"feedback.describedBy.value\"\n v-bind=\"$attrs\"\n :value=\"value!\"\n :disabled=\"disabled\"\n class=\"listbox__item\"\n ><slot\n /></ListboxItem>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject, watchEffect } from 'vue';\nimport { ListboxItem, SelectItem, SelectItemText } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nimport { provideFeedbackContext } from './feedback-context.js';\ndefineOptions({ inheritAttrs: false });\nconst props = defineProps<{\n value?: string;\n id?: string;\n textValue?: string;\n disabled?: boolean;\n}>();\nconst select = inject(selectCompositionKey, undefined);\nconst feedback = provideFeedbackContext();\nconst value = computed(() => props.value ?? props.id);\nif (!value.value) throw new Error('ListBox.Item requires a nonempty value or id.');\nwatchEffect(() => {\n if (select && value.value) select.registerLabel(value.value, props.textValue ?? value.value);\n});\n</script>\n<template>\n <SelectItem\n v-if=\"select\"\n v-bind=\"$attrs\"\n :aria-describedby=\"feedback.describedBy.value\"\n :value=\"value!\"\n :text-value=\"textValue\"\n :disabled=\"disabled\"\n class=\"select__item\"\n >\n <template v-if=\"textValue\"\n ><SelectItemText hidden>{{ textValue }}</SelectItemText\n ><slot\n /></template>\n <SelectItemText v-else class=\"select__item-label\"><slot /></SelectItemText>\n </SelectItem>\n <ListboxItem\n v-else\n :aria-describedby=\"feedback.describedBy.value\"\n v-bind=\"$attrs\"\n :value=\"value!\"\n :disabled=\"disabled\"\n class=\"listbox__item\"\n ><slot\n /></ListboxItem>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ListboxItemIndicator, SelectItemIndicator } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst select = inject(selectCompositionKey, undefined);\n</script>\n<template>\n <SelectItemIndicator v-if=\"select\" class=\"select__check\"\n ><slot><CheckIcon /></slot\n ></SelectItemIndicator>\n <ListboxItemIndicator v-else class=\"listbox__check\"\n ><slot><CheckIcon /></slot\n ></ListboxItemIndicator>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ListboxItemIndicator, SelectItemIndicator } from 'reka-ui';\nimport CheckIcon from './CheckIcon.vue';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst select = inject(selectCompositionKey, undefined);\n</script>\n<template>\n <SelectItemIndicator v-if=\"select\" class=\"select__check\"\n ><slot><CheckIcon /></slot\n ></SelectItemIndicator>\n <ListboxItemIndicator v-else class=\"listbox__check\"\n ><slot><CheckIcon /></slot\n ></ListboxItemIndicator>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ListboxGroup, SelectGroup } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst select = inject(selectCompositionKey, undefined);\n</script>\n<template>\n <SelectGroup v-if=\"select\" class=\"select__section\"><slot /></SelectGroup>\n <ListboxGroup v-else class=\"listbox__section\"><slot /></ListboxGroup>\n</template>\n","<script setup lang=\"ts\">\nimport { inject } from 'vue';\nimport { ListboxGroup, SelectGroup } from 'reka-ui';\nimport { selectCompositionKey } from './select-composition-context.js';\nconst select = inject(selectCompositionKey, undefined);\n</script>\n<template>\n <SelectGroup v-if=\"select\" class=\"select__section\"><slot /></SelectGroup>\n <ListboxGroup v-else class=\"listbox__section\"><slot /></ListboxGroup>\n</template>\n","import * as Parts from './composition.js';\nexport { default as Button } from './Button.vue';\nexport { default as ButtonGroup } from './ButtonGroup.js';\nexport { default as ButtonGroupSeparator } from './ButtonGroupSeparator.js';\nexport { default as ToggleButton } from './ToggleButton.vue';\nexport { default as ToggleButtonGroup } from './ToggleButtonGroup.vue';\nexport { default as ToggleButtonGroupSeparator } from './ButtonGroupSeparator.js';\nimport SelectCompact from './Select.vue';\nexport const Select: typeof SelectCompact & {\n Root: typeof Parts.SelectRoot;\n Trigger: typeof Parts.SelectTrigger;\n Value: typeof Parts.SelectValue;\n Indicator: typeof Parts.SelectIndicator;\n Control: typeof Parts.SelectControl;\n ClearButton: typeof Parts.SelectClearButton;\n Popover: typeof Parts.SelectPopover;\n Listbox: typeof Parts.SelectListbox;\n Item: typeof Parts.SelectItem;\n ItemText: typeof Parts.SelectItemText;\n ItemIndicator: typeof Parts.SelectItemIndicator;\n Section: typeof Parts.SelectSection;\n SectionLabel: typeof Parts.SelectSectionLabel;\n} = /* @__PURE__ */ Object.assign(SelectCompact, {\n Root: Parts.SelectRoot,\n Trigger: Parts.SelectTrigger,\n Value: Parts.SelectValue,\n Indicator: Parts.SelectIndicator,\n Control: Parts.SelectControl,\n ClearButton: Parts.SelectClearButton,\n Popover: Parts.SelectPopover,\n Listbox: Parts.SelectListbox,\n Item: Parts.SelectItem,\n ItemText: Parts.SelectItemText,\n ItemIndicator: Parts.SelectItemIndicator,\n Section: Parts.SelectSection,\n SectionLabel: Parts.SelectSectionLabel,\n});\nexport { default as SelectGroup } from './SelectGroup.js';\nexport type { SelectSize, SelectVariant } from './types.js';\nimport InputCompact from './Input.vue';\nexport const Input: typeof InputCompact & {\n Root: typeof Parts.InputRoot;\n Group: typeof Parts.InputGroup;\n Control: typeof Parts.InputControl;\n Label: typeof Parts.InputLabel;\n Prefix: typeof Parts.InputPrefix;\n Suffix: typeof Parts.InputSuffix;\n} = /* @__PURE__ */ Object.assign(InputCompact, {\n Root: Parts.InputRoot,\n Group: Parts.InputGroup,\n Control: Parts.InputControl,\n Label: Parts.InputLabel,\n Prefix: Parts.InputPrefix,\n Suffix: Parts.InputSuffix,\n});\nexport type { ButtonSize, ButtonVariant, SelectOption, InputSize, InputType } from './types.js';\nexport type { InputVariant, InputMode, InputEnterKeyHint } from './types.js';\nimport TextareaCompact from './Textarea.vue';\nexport const Textarea: typeof TextareaCompact & {\n Root: typeof Parts.InputRoot;\n Control: typeof Parts.TextareaControl;\n Label: typeof Parts.InputLabel;\n} = /* @__PURE__ */ Object.assign(TextareaCompact, {\n Root: Parts.InputRoot,\n Control: Parts.TextareaControl,\n Label: Parts.InputLabel,\n});\nexport { default as Label } from './Label.vue';\nimport CheckboxCompact from './Checkbox.vue';\nexport const Checkbox: typeof CheckboxCompact & {\n Root: typeof Parts.CheckboxRoot;\n Content: typeof Parts.CheckboxContent;\n Indicator: typeof Parts.CheckboxIndicator;\n} = /* @__PURE__ */ Object.assign(CheckboxCompact, {\n Root: Parts.CheckboxRoot,\n Content: Parts.CheckboxContent,\n Indicator: Parts.CheckboxIndicator,\n});\nimport RadioGroupCompact from './RadioGroup.vue';\nexport const RadioGroup: typeof RadioGroupCompact & {\n Root: typeof Parts.RadioGroupRoot;\n Item: typeof Parts.RadioGroupItem;\n Indicator: typeof Parts.RadioGroupIndicator;\n Content: typeof Parts.RadioGroupContent;\n} = /* @__PURE__ */ Object.assign(RadioGroupCompact, {\n Root: Parts.RadioGroupRoot,\n Item: Parts.RadioGroupItem,\n Indicator: Parts.RadioGroupIndicator,\n Content: Parts.RadioGroupContent,\n});\nimport SwitchCompact from './Switch.vue';\nexport const Switch: typeof SwitchCompact & {\n Root: typeof Parts.SwitchRoot;\n Content: typeof Parts.SwitchContent;\n Thumb: typeof Parts.SwitchThumb;\n Icon: typeof Parts.SwitchIcon;\n} = /* @__PURE__ */ Object.assign(SwitchCompact, {\n Root: Parts.SwitchRoot,\n Content: Parts.SwitchContent,\n Thumb: Parts.SwitchThumb,\n Icon: Parts.SwitchIcon,\n});\nexport type { RadioOption } from './types.js';\nimport FieldCompact from './Field.vue';\nexport const Field: typeof FieldCompact & {\n Root: typeof Parts.InputRoot;\n Label: typeof Parts.InputLabel;\n Control: typeof Parts.InputControl;\n Description: typeof Parts.Description;\n Error: typeof Parts.FieldError;\n} = /* @__PURE__ */ Object.assign(FieldCompact, {\n Root: Parts.InputRoot,\n Label: Parts.InputLabel,\n Control: Parts.InputControl,\n Description: Parts.Description,\n Error: Parts.FieldError,\n});\nimport FormCompact from './Form.vue';\nexport const Form: typeof FormCompact & { Root: typeof FormCompact } =\n /* @__PURE__ */ Object.assign(FormCompact, { Root: FormCompact });\nexport type { ValidationErrors, FieldControlProps, FieldSlotProps } from './types.js';\nimport ListboxCompact from './Listbox.vue';\nexport const Listbox: typeof ListboxCompact & {\n Root: typeof Parts.ListboxRoot;\n Content: typeof Parts.ListboxContent;\n Item: typeof Parts.ListboxItem;\n ItemIndicator: typeof Parts.ListboxItemIndicator;\n Section: typeof Parts.ListboxSection;\n SectionLabel: typeof Parts.ListboxSectionLabel;\n} = /* @__PURE__ */ Object.assign(ListboxCompact, {\n Root: Parts.ListboxRoot,\n Content: Parts.ListboxContent,\n Item: Parts.ListboxItem,\n ItemIndicator: Parts.ListboxItemIndicator,\n Section: Parts.ListboxSection,\n SectionLabel: Parts.ListboxSectionLabel,\n});\nimport NumberFieldCompact from './NumberField.vue';\nexport const NumberField: typeof NumberFieldCompact & {\n Root: typeof Parts.NumberFieldRoot;\n Group: typeof Parts.NumberFieldGroup;\n Input: typeof Parts.NumberFieldInput;\n IncrementButton: typeof Parts.NumberFieldIncrementButton;\n DecrementButton: typeof Parts.NumberFieldDecrementButton;\n} = /* @__PURE__ */ Object.assign(NumberFieldCompact, {\n Root: Parts.NumberFieldRoot,\n Group: Parts.NumberFieldGroup,\n Input: Parts.NumberFieldInput,\n IncrementButton: Parts.NumberFieldIncrementButton,\n DecrementButton: Parts.NumberFieldDecrementButton,\n});\nexport type { ListboxOption, ListboxSelectionMode } from './listbox-selection.js';\nimport CardCompact from './Card.vue';\nexport const Card: typeof CardCompact & {\n Root: typeof Parts.CardRoot;\n Header: typeof Parts.CardHeader;\n Heading: typeof Parts.CardHeading;\n Title: typeof Parts.CardTitle;\n Description: typeof Parts.CardDescription;\n Content: typeof Parts.CardContent;\n Footer: typeof Parts.CardFooter;\n Actions: typeof Parts.CardActions;\n} = /* @__PURE__ */ Object.assign(CardCompact, {\n Root: Parts.CardRoot,\n Header: Parts.CardHeader,\n Heading: Parts.CardHeading,\n Title: Parts.CardTitle,\n Description: Parts.CardDescription,\n Content: Parts.CardContent,\n Footer: Parts.CardFooter,\n Actions: Parts.CardActions,\n});\nimport BadgeCompact from './Badge.vue';\nexport const Badge: typeof BadgeCompact & {\n Label: typeof Parts.BadgeLabel;\n Anchor: typeof Parts.BadgeAnchor;\n} = /* @__PURE__ */ Object.assign(BadgeCompact, {\n Label: Parts.BadgeLabel,\n Anchor: Parts.BadgeAnchor,\n});\nexport { default as Skeleton } from './Skeleton.vue';\nexport { default as Separator } from './Separator.vue';\nexport type { BadgeTone } from './types.js';\nimport TabsCompact from './Tabs.vue';\nexport const Tabs: typeof TabsCompact & {\n Root: typeof Parts.TabsRoot;\n List: typeof Parts.TabsList;\n Tab: typeof Parts.TabsTab;\n Panel: typeof Parts.TabsPanel;\n Indicator: typeof Parts.TabsIndicator;\n ListContainer: typeof Parts.TabsListContainer;\n Separator: typeof Parts.TabsSeparator;\n} = /* @__PURE__ */ Object.assign(TabsCompact, {\n Root: Parts.TabsRoot,\n List: Parts.TabsList,\n Tab: Parts.TabsTab,\n Panel: Parts.TabsPanel,\n Indicator: Parts.TabsIndicator,\n ListContainer: Parts.TabsListContainer,\n Separator: Parts.TabsSeparator,\n});\nimport PaginationCompact from './Pagination.vue';\nexport const Pagination: typeof PaginationCompact & {\n Root: typeof Parts.PaginationRoot;\n List: typeof Parts.PaginationList;\n Item: typeof Parts.PaginationItem;\n Previous: typeof Parts.PaginationPrevious;\n Next: typeof Parts.PaginationNext;\n First: typeof Parts.PaginationFirst;\n Last: typeof Parts.PaginationLast;\n Ellipsis: typeof Parts.PaginationEllipsis;\n Content: typeof Parts.PaginationContent;\n Summary: typeof Parts.PaginationSummary;\n} = /* @__PURE__ */ Object.assign(PaginationCompact, {\n Root: Parts.PaginationRoot,\n List: Parts.PaginationList,\n Item: Parts.PaginationItem,\n Previous: Parts.PaginationPrevious,\n Next: Parts.PaginationNext,\n First: Parts.PaginationFirst,\n Last: Parts.PaginationLast,\n Ellipsis: Parts.PaginationEllipsis,\n Content: Parts.PaginationContent,\n Summary: Parts.PaginationSummary,\n});\nimport TableCompact from './Table.vue';\nexport const Table: typeof TableCompact & {\n Root: typeof Parts.TableRoot;\n ScrollContainer: typeof Parts.TableScrollContainer;\n Caption: typeof Parts.TableCaption;\n Header: typeof Parts.TableHeader;\n Body: typeof Parts.TableBody;\n Footer: typeof Parts.TableFooter;\n Row: typeof Parts.TableRow;\n Column: typeof Parts.TableColumn;\n Cell: typeof Parts.TableCell;\n} = /* @__PURE__ */ Object.assign(TableCompact, {\n Root: Parts.TableRoot,\n ScrollContainer: Parts.TableScrollContainer,\n Caption: Parts.TableCaption,\n Header: Parts.TableHeader,\n Body: Parts.TableBody,\n Footer: Parts.TableFooter,\n Row: Parts.TableRow,\n Column: Parts.TableColumn,\n Cell: Parts.TableCell,\n});\nimport DataTableCompact from './DataTable.vue';\nexport const DataTable: typeof DataTableCompact & {\n Root: typeof Parts.DataTableRoot;\n SortButton: typeof Parts.DataTableSortButton;\n Status: typeof Parts.DataTableStatus;\n Error: typeof Parts.DataTableError;\n Header: typeof Parts.TableHeader;\n Body: typeof Parts.TableBody;\n Row: typeof Parts.TableRow;\n Column: typeof Parts.TableColumn;\n Cell: typeof Parts.TableCell;\n Caption: typeof Parts.TableCaption;\n} = /* @__PURE__ */ Object.assign(DataTableCompact, {\n Root: Parts.DataTableRoot,\n SortButton: Parts.DataTableSortButton,\n Status: Parts.DataTableStatus,\n Error: Parts.DataTableError,\n Header: Parts.TableHeader,\n Body: Parts.TableBody,\n Row: Parts.TableRow,\n Column: Parts.TableColumn,\n Cell: Parts.TableCell,\n Caption: Parts.TableCaption,\n});\nexport type { DataTableColumn, DataTableRow, TableSort } from './data-table-types.js';\nexport type { TabItem } from './types.js';\nimport AlertCompact from './Alert.vue';\nexport const Alert: typeof AlertCompact & {\n Root: typeof Parts.AlertRoot;\n Title: typeof Parts.AlertTitle;\n Description: typeof Parts.AlertDescription;\n Content: typeof Parts.AlertContent;\n Indicator: typeof Parts.AlertIndicator;\n Actions: typeof Parts.AlertActions;\n} = /* @__PURE__ */ Object.assign(AlertCompact, {\n Root: Parts.AlertRoot,\n Title: Parts.AlertTitle,\n Description: Parts.AlertDescription,\n Content: Parts.AlertContent,\n Indicator: Parts.AlertIndicator,\n Actions: Parts.AlertActions,\n});\nimport ToastProvider from './ToastProvider.vue';\nexport { ToastProvider };\nimport ToastCompact from './Toast.vue';\nexport const Toast: typeof ToastCompact & {\n Provider: typeof ToastProvider;\n Root: typeof Parts.ToastRoot;\n Title: typeof Parts.ToastTitle;\n Description: typeof Parts.ToastDescription;\n CloseButton: typeof Parts.ToastCloseButton;\n ActionButton: typeof Parts.ToastActionButton;\n Viewport: typeof Parts.ToastViewport;\n Content: typeof Parts.ToastContent;\n Indicator: typeof Parts.ToastIndicator;\n Actions: typeof Parts.ToastActions;\n Progress: typeof Parts.ToastProgress;\n} = /* @__PURE__ */ Object.assign(ToastCompact, {\n Provider: ToastProvider,\n Root: Parts.ToastRoot,\n Title: Parts.ToastTitle,\n Description: Parts.ToastDescription,\n CloseButton: Parts.ToastCloseButton,\n ActionButton: Parts.ToastActionButton,\n Viewport: Parts.ToastViewport,\n Content: Parts.ToastContent,\n Indicator: Parts.ToastIndicator,\n Actions: Parts.ToastActions,\n Progress: Parts.ToastProgress,\n});\nexport { useToast } from './useToast.js';\nexport { createToastManager } from './toast-model.js';\nexport type {\n ToastTone,\n ToastPlacement,\n ToastCloseReason,\n ToastAction,\n ToastOptions,\n ToastEntry,\n ToastManagerOptions,\n ToastPromiseMessages,\n ToastManager,\n} from './toast-model.js';\nimport EmptyCompact from './Empty.vue';\nexport const Empty: typeof EmptyCompact & {\n Root: typeof Parts.EmptyRoot;\n Title: typeof Parts.EmptyTitle;\n Description: typeof Parts.EmptyDescription;\n Actions: typeof Parts.EmptyActions;\n} = /* @__PURE__ */ Object.assign(EmptyCompact, {\n Root: Parts.EmptyRoot,\n Title: Parts.EmptyTitle,\n Description: Parts.EmptyDescription,\n Actions: Parts.EmptyActions,\n});\nimport BreadcrumbCompact from './Breadcrumb.vue';\nexport const Breadcrumb: typeof BreadcrumbCompact & {\n Root: typeof Parts.BreadcrumbRoot;\n List: typeof Parts.BreadcrumbList;\n Item: typeof Parts.BreadcrumbItem;\n Link: typeof Parts.BreadcrumbLink;\n Separator: typeof Parts.BreadcrumbSeparator;\n Current: typeof Parts.BreadcrumbCurrent;\n} = /* @__PURE__ */ Object.assign(BreadcrumbCompact, {\n Root: Parts.BreadcrumbRoot,\n List: Parts.BreadcrumbList,\n Item: Parts.BreadcrumbItem,\n Link: Parts.BreadcrumbLink,\n Separator: Parts.BreadcrumbSeparator,\n Current: Parts.BreadcrumbCurrent,\n});\nimport SidebarCompact from './Sidebar.vue';\nexport const Sidebar: typeof SidebarCompact & {\n Root: typeof Parts.SidebarRoot;\n Toggle: typeof Parts.SidebarToggle;\n Navigation: typeof Parts.SidebarNavigation;\n Title: typeof Parts.SidebarTitle;\n List: typeof Parts.SidebarList;\n Header: typeof Parts.SidebarHeader;\n Content: typeof Parts.SidebarContent;\n Item: typeof Parts.SidebarItem;\n Footer: typeof Parts.SidebarFooter;\n} = /* @__PURE__ */ Object.assign(SidebarCompact, {\n Root: Parts.SidebarRoot,\n Toggle: Parts.SidebarToggle,\n Navigation: Parts.SidebarNavigation,\n Title: Parts.SidebarTitle,\n List: Parts.SidebarList,\n Header: Parts.SidebarHeader,\n Content: Parts.SidebarContent,\n Item: Parts.SidebarItem,\n Footer: Parts.SidebarFooter,\n});\nimport ChartCompact from './Chart.vue';\nexport const Chart: typeof ChartCompact & {\n Root: typeof Parts.ChartRoot;\n Title: typeof Parts.ChartTitle;\n Description: typeof Parts.ChartDescription;\n} = /* @__PURE__ */ Object.assign(ChartCompact, {\n Root: Parts.ChartRoot,\n Title: Parts.ChartTitle,\n Description: Parts.ChartDescription,\n});\nimport DialogCompact from './Dialog.vue';\nexport const Dialog: typeof DialogCompact & {\n Root: typeof Parts.DialogRoot;\n Trigger: typeof Parts.DialogTrigger;\n Portal: typeof Parts.DialogPortal;\n Backdrop: typeof Parts.DialogBackdrop;\n Content: typeof Parts.DialogContent;\n Title: typeof Parts.DialogTitle;\n Description: typeof Parts.DialogDescription;\n CloseButton: typeof Parts.DialogCloseButton;\n Header: typeof Parts.DialogHeader;\n Body: typeof Parts.DialogBody;\n Footer: typeof Parts.DialogFooter;\n} = /* @__PURE__ */ Object.assign(DialogCompact, {\n Root: Parts.DialogRoot,\n Trigger: Parts.DialogTrigger,\n Portal: Parts.DialogPortal,\n Backdrop: Parts.DialogBackdrop,\n Content: Parts.DialogContent,\n Title: Parts.DialogTitle,\n Description: Parts.DialogDescription,\n CloseButton: Parts.DialogCloseButton,\n Header: Parts.DialogHeader,\n Body: Parts.DialogBody,\n Footer: Parts.DialogFooter,\n});\nimport DropdownMenuCompact from './DropdownMenu.vue';\nexport const DropdownMenu: typeof DropdownMenuCompact & {\n Root: typeof Parts.DropdownMenuRoot;\n Trigger: typeof Parts.DropdownMenuTrigger;\n Portal: typeof Parts.DropdownMenuPortal;\n Content: typeof Parts.DropdownMenuContent;\n Item: typeof Parts.DropdownMenuItem;\n ItemIndicator: typeof Parts.DropdownMenuItemIndicator;\n Section: typeof Parts.DropdownMenuSection;\n SectionLabel: typeof Parts.DropdownMenuSectionLabel;\n Separator: typeof Parts.DropdownMenuSeparator;\n CheckboxItem: typeof Parts.DropdownMenuCheckboxItem;\n RadioGroup: typeof Parts.DropdownMenuRadioGroup;\n RadioItem: typeof Parts.DropdownMenuRadioItem;\n Sub: typeof Parts.DropdownMenuSub;\n SubTrigger: typeof Parts.DropdownMenuSubTrigger;\n SubContent: typeof Parts.DropdownMenuSubContent;\n} = /* @__PURE__ */ Object.assign(DropdownMenuCompact, {\n Root: Parts.DropdownMenuRoot,\n Trigger: Parts.DropdownMenuTrigger,\n Portal: Parts.DropdownMenuPortal,\n Content: Parts.DropdownMenuContent,\n Item: Parts.DropdownMenuItem,\n ItemIndicator: Parts.DropdownMenuItemIndicator,\n Section: Parts.DropdownMenuSection,\n SectionLabel: Parts.DropdownMenuSectionLabel,\n Separator: Parts.DropdownMenuSeparator,\n CheckboxItem: Parts.DropdownMenuCheckboxItem,\n RadioGroup: Parts.DropdownMenuRadioGroup,\n RadioItem: Parts.DropdownMenuRadioItem,\n Sub: Parts.DropdownMenuSub,\n SubTrigger: Parts.DropdownMenuSubTrigger,\n SubContent: Parts.DropdownMenuSubContent,\n});\nimport PopoverCompact from './Popover.vue';\nexport const Popover: typeof PopoverCompact & {\n Root: typeof Parts.PopoverRoot;\n Trigger: typeof Parts.PopoverTrigger;\n Portal: typeof Parts.PopoverPortal;\n Content: typeof Parts.PopoverContent;\n Arrow: typeof Parts.PopoverArrow;\n CloseButton: typeof Parts.PopoverCloseButton;\n Heading: typeof Parts.PopoverHeading;\n Body: typeof Parts.PopoverBody;\n Footer: typeof Parts.PopoverFooter;\n} = /* @__PURE__ */ Object.assign(PopoverCompact, {\n Root: Parts.PopoverRoot,\n Trigger: Parts.PopoverTrigger,\n Portal: Parts.PopoverPortal,\n Content: Parts.PopoverContent,\n Arrow: Parts.PopoverArrow,\n CloseButton: Parts.PopoverCloseButton,\n Heading: Parts.PopoverHeading,\n Body: Parts.PopoverBody,\n Footer: Parts.PopoverFooter,\n});\nimport TooltipCompact from './Tooltip.vue';\nexport const Tooltip: typeof TooltipCompact & {\n Root: typeof Parts.TooltipRoot;\n Trigger: typeof Parts.TooltipTrigger;\n Portal: typeof Parts.TooltipPortal;\n Provider: typeof Parts.TooltipProvider;\n Content: typeof Parts.TooltipContent;\n Arrow: typeof Parts.TooltipArrow;\n} = /* @__PURE__ */ Object.assign(TooltipCompact, {\n Root: Parts.TooltipRoot,\n Trigger: Parts.TooltipTrigger,\n Portal: Parts.TooltipPortal,\n Provider: Parts.TooltipProvider,\n Content: Parts.TooltipContent,\n Arrow: Parts.TooltipArrow,\n});\nexport type {\n NavigationItem,\n BreadcrumbItem,\n ChartDatum,\n DropdownMenuItem,\n} from './dashboard-types.js';\n\nexport { default as Spinner } from './Spinner.vue';\nexport type { SpinnerSize, SpinnerColor } from './types.js';\nimport ComboboxCompact from './Combobox.vue';\nexport const Combobox: typeof ComboboxCompact & {\n Root: typeof Parts.ComboboxRoot;\n Input: typeof Parts.ComboboxInput;\n Trigger: typeof Parts.ComboboxTrigger;\n Content: typeof Parts.ComboboxContent;\n Item: typeof Parts.ComboboxItem;\n ItemIndicator: typeof Parts.ComboboxItemIndicator;\n Section: typeof Parts.ComboboxSection;\n SectionLabel: typeof Parts.ComboboxSectionLabel;\n Anchor: typeof Parts.ComboboxAnchor;\n ClearButton: typeof Parts.ComboboxClearButton;\n Portal: typeof Parts.ComboboxPortal;\n} = /* @__PURE__ */ Object.assign(ComboboxCompact, {\n Root: Parts.ComboboxRoot,\n Input: Parts.ComboboxInput,\n Trigger: Parts.ComboboxTrigger,\n Content: Parts.ComboboxContent,\n Item: Parts.ComboboxItem,\n ItemIndicator: Parts.ComboboxItemIndicator,\n Section: Parts.ComboboxSection,\n SectionLabel: Parts.ComboboxSectionLabel,\n Anchor: Parts.ComboboxAnchor,\n ClearButton: Parts.ComboboxClearButton,\n Portal: Parts.ComboboxPortal,\n});\n\nexport type {\n MenuSelectionMode,\n MenuPlacement,\n DialogSize,\n DialogPlacement,\n DialogScroll,\n DialogBackdrop,\n} from './overlay-model.js';\n\nimport ToggleGroupCompact from './ToggleGroup.vue';\nexport const ToggleGroup: typeof ToggleGroupCompact & {\n Root: typeof Parts.ToggleGroupRoot;\n Item: typeof Parts.ToggleGroupItem;\n} = /* @__PURE__ */ Object.assign(ToggleGroupCompact, {\n Root: Parts.ToggleGroupRoot,\n Item: Parts.ToggleGroupItem,\n});\nexport type { ToggleGroupItem, ToggleGroupMode, ToggleGroupVariant } from './toggle-group-model.js';\nexport type { TabsVariant } from './types.js';\nimport DateRangePickerCompact from './DateRangePicker.vue';\nexport const DateRangePicker: typeof DateRangePickerCompact & {\n Root: typeof Parts.DateRangePickerRoot;\n Anchor: typeof Parts.DateRangePickerAnchor;\n Trigger: typeof Parts.DateRangePickerTrigger;\n Content: typeof Parts.DateRangePickerContent;\n Field: typeof Parts.DateRangePickerField;\n Input: typeof Parts.DateRangePickerInput;\n Calendar: typeof Parts.DateRangePickerCalendar;\n Header: typeof Parts.DateRangePickerHeader;\n Heading: typeof Parts.DateRangePickerHeading;\n Prev: typeof Parts.DateRangePickerPrev;\n Next: typeof Parts.DateRangePickerNext;\n Grid: typeof Parts.DateRangePickerGrid;\n GridHead: typeof Parts.DateRangePickerGridHead;\n GridBody: typeof Parts.DateRangePickerGridBody;\n GridRow: typeof Parts.DateRangePickerGridRow;\n HeadCell: typeof Parts.DateRangePickerHeadCell;\n Cell: typeof Parts.DateRangePickerCell;\n CellTrigger: typeof Parts.DateRangePickerCellTrigger;\n Close: typeof Parts.DateRangePickerClose;\n Arrow: typeof Parts.DateRangePickerArrow;\n} = /* @__PURE__ */ Object.assign(DateRangePickerCompact, {\n Root: Parts.DateRangePickerRoot,\n Anchor: Parts.DateRangePickerAnchor,\n Trigger: Parts.DateRangePickerTrigger,\n Content: Parts.DateRangePickerContent,\n Field: Parts.DateRangePickerField,\n Input: Parts.DateRangePickerInput,\n Calendar: Parts.DateRangePickerCalendar,\n Header: Parts.DateRangePickerHeader,\n Heading: Parts.DateRangePickerHeading,\n Prev: Parts.DateRangePickerPrev,\n Next: Parts.DateRangePickerNext,\n Grid: Parts.DateRangePickerGrid,\n GridHead: Parts.DateRangePickerGridHead,\n GridBody: Parts.DateRangePickerGridBody,\n GridRow: Parts.DateRangePickerGridRow,\n HeadCell: Parts.DateRangePickerHeadCell,\n Cell: Parts.DateRangePickerCell,\n CellTrigger: Parts.DateRangePickerCellTrigger,\n Close: Parts.DateRangePickerClose,\n Arrow: Parts.DateRangePickerArrow,\n});\nexport { createDateRangePresets } from './date-range-model.js';\nexport { rangeText as formatDateRange } from './date-range-model.js';\nexport type {\n DateRange,\n DateRangePreset,\n DateRangeLabels,\n DateRangeSize,\n DateRangeVariant,\n} from './date-range-model.js';\n\nexport * from './composition.js';\nexport type { StylingProps } from './styling.js';\n\n/** Casing alias for consumers familiar with HeroUI ListBox. */\nimport CompositionListBox from './CompositionListBox.vue';\nimport CompositionListBoxItem from './CompositionListBoxItem.vue';\nimport CompositionListBoxItemIndicator from './CompositionListBoxItemIndicator.vue';\nimport CompositionListBoxSection from './CompositionListBoxSection.vue';\nexport const ListBox: typeof CompositionListBox & {\n Root: typeof CompositionListBox;\n Item: typeof CompositionListBoxItem;\n ItemIndicator: typeof CompositionListBoxItemIndicator;\n Section: typeof CompositionListBoxSection;\n} = /* @__PURE__ */ Object.assign(CompositionListBox, {\n Root: CompositionListBox,\n Item: CompositionListBoxItem,\n ItemIndicator: CompositionListBoxItemIndicator,\n Section: CompositionListBoxSection,\n});\n"],"mappings":"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AAC,KAAK;G,IAAOC,WAAQ,KAAA,QAAA,SAAA,C;;;;;;AEC9D,IAAa,kBAA0D,gCACrE,KAAK,YACL,mBACA,sBACM,EAAEE,mBAAW,CACrB;AACA,IAAa,gBAA4D,gCACvE,KAAK,gBACL,iBACA,cACF;AACA,IAAa,aAAqD,gCAChE,KAAK,YACL,cACA,cACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,oBACF;AACA,IAAa,sBAAuE,gCAClF,KAAK,qBACL,uBACA,uBACM,EAAEC,iBAAS,CACnB;AACA,IAAa,gBAAyD,gCACpE,KAAK,aACL,iBACA,iBACF;AACA,IAAa,qBAA8D,gCACzE,KAAK,aACL,sBACA,eACF;AACA,IAAa,WAAiD,gCAC5D,KAAK,UACL,YACA,oBACF;AACA,IAAa,WAAiD,gCAC5D,KAAK,UACL,YACA,YACF;AACA,IAAa,UAAmD,gCAC9D,KAAK,aACL,WACA,eACF;AACA,IAAa,YAAqD,gCAChE,KAAK,aACL,aACA,aACF;AACA,IAAa,gBAA2D,gCACtE,KAAK,eACL,iBACA,iBACF;AACA,IAAa,cAAuD,gCAClE,KAAK,aACL,eACA,SACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,eACF;AACA,IAAa,cAAuD,gCAClE,KAAK,aACL,eACA,eACF;AACA,IAAa,uBACK,gCACd,KAAK,sBACL,wBACA,wBACM,EAAEA,iBAAS,CACnB;AACF,IAAa,iBAA2D,gCACtE,KAAK,cACL,kBACA,kBACF;AACA,IAAa,sBAAqE,gCAChF,KAAK,mBACL,uBACA,OACF;AACA,IAAa,eAAyD,gCACpE,KAAK,cACL,gBACA,mBACF;AAEA,IAAa,aAAqD,gCAChE,KAAK,YACL,cACA,iBACF;AACA,IAAa,cAAuD,gCAClE,KAAK,aACL,eACA,eACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,aACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,gBACF;AACA,IAAa,sBAAuE,gCAClF,KAAK,qBACL,uBACA,YACF;AACA,IAAa,kBAA+D,gCAC1E,KAAK,iBACL,mBACA,oBACF;AACA,IAAa,mBAAiE,gCAC5E,KAAK,kBACL,oBACA,uBACF;AACA,IAAa,6BACK,gCACd,KAAK,sBACL,8BACA,oBACF;AACF,IAAa,6BACK,gCACd,KAAK,sBACL,8BACA,oBACF;AACF,IAAa,eAAyD,gCACpE,KAAK,cACL,gBACA,iBACF;AACA,IAAa,gBAA2D,gCACtE,KAAK,eACL,iBACA,mBACF;AACA,IAAa,kBAA+D,gCAC1E,KAAK,iBACL,mBACA,kBACF;AACA,IAAa,kBAA+D,gCAC1E,KAAK,iBACL,mBACA,iBACF;AACA,IAAa,eAAyD,gCACpE,KAAK,cACL,gBACA,cACF;AACA,IAAa,wBACK,gCACd,KAAK,uBACL,yBACA,uBACM,EAAEA,iBAAS,CACnB;AACF,IAAa,kBAA6D,gCACxE,KAAK,eACL,mBACA,iBACF;AACA,IAAa,uBAAkE,gCAC7E,KAAK,eACL,wBACA,eACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,iBACF;AACA,IAAa,sBAAkE,gCAC7E,KAAK,gBACL,uBACA,iBACF;AACA,IAAa,gBAA2D,gCACtE,KAAK,eACL,iBACA,0BACF;AACA,IAAa,iBAA4D,gCACvE,KAAK,eACL,kBACA,mCACF;AACA,IAAa,gBAA2D,gCACtE,KAAK,eACL,iBACA,+BACF;AACA,IAAa,cAAuD,gCAClE,KAAK,aACL,eACA,gBACF;AACA,IAAa,oBAAmE,gCAC9E,KAAK,mBACL,qBACA,sBACF;AACA,IAAa,oBAA6D,gCACxE,KAAK,aACL,qBACA,eACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,0BACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,iCACF;AACA,IAAa,eAAyD,gCACpE,KAAK,cACL,gBACA,gBACF;AACA,IAAa,qBAA+D,gCAC1E,KAAK,cACL,sBACA,gBACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,EACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,gBACF;AACA,IAAa,eAAyD,gCACpE,KAAK,cACL,gBACA,gBACF;AACA,IAAa,sBAAuE,gCAClF,KAAK,qBACL,uBACA,0BACF;AACA,IAAa,sBAAuE,gCAClF,KAAK,qBACL,uBACA,wBACF;AACA,IAAa,mBAAiE,gCAC5E,KAAK,kBACL,oBACA,YACF;AACA,IAAa,4BACK,gCACd,KAAK,2BACL,6BACA,yBACM,EAAEA,iBAAS,CACnB;AACF,IAAa,sBAAqE,gCAChF,KAAK,mBACL,uBACA,eACF;AACA,IAAa,2BACK,gCACd,KAAK,mBACL,4BACA,eACF;AACF,IAAa,wBACK,gCACd,KAAK,uBACL,yBACA,iBACF;AACF,IAAa,2BACK,gCACd,KAAK,0BACL,4BACA,YACF;AACF,IAAa,yBACK,gCACd,KAAK,wBACL,0BACA,aACF;AACF,IAAa,wBACK,gCACd,KAAK,uBACL,yBACA,YACF;AACF,IAAa,yBACK,gCACd,KAAK,wBACL,0BACA,YACF;AACF,IAAa,yBACK,gCACd,KAAK,wBACL,0BACA,wBACF;AACF,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,YACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,kBACF;AACA,IAAa,iBAAiE,gCAC5E,KAAK,oBACL,kBACA,oBACF;AACA,IAAa,qBAAiE,gCAC5E,KAAK,gBACL,sBACA,oBACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,oBACF;AACA,IAAa,kBAA+D,gCAC1E,KAAK,iBACL,mBACA,oBACF;AACA,IAAa,iBAA6D,gCACxE,KAAK,gBACL,kBACA,oBACF;AACA,IAAa,qBAAqE,gCAChF,KAAK,oBACL,sBACA,iBACF;AACA,IAAa,YAAiD,gCAC5DC,eACA,aACA,IACA,KAAA,GACA,EAAE,UAAU,KAAK,CACnB;AACA,IAAa,aAAqD,gCAChE,KAAK,YACL,cACA,cACF;AACA,IAAa,mBAAiE,gCAC5E,KAAK,kBACL,oBACA,oBACF;AAGA,IAAa,gBAA2D,gCACtE,KAAK,eACL,iBACA,YACF;AACA,IAAa,WAA2B,4BAAY,YAA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"}