unipo-ui 1.0.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-SVRTAYZW.cjs → chunk-DEF5CA7C.cjs} +22 -2
- package/dist/chunk-DEF5CA7C.cjs.map +1 -0
- package/dist/{chunk-2FW3QITF.js → chunk-SJ4DJOMZ.js} +21 -3
- package/dist/chunk-SJ4DJOMZ.js.map +1 -0
- package/dist/{content-f6eK74xx.d.cts → content-DaJPx5LX.d.cts} +6 -1
- package/dist/{content-f6eK74xx.d.ts → content-DaJPx5LX.d.ts} +6 -1
- package/dist/index.cjs +208 -175
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -2
- package/dist/index.d.ts +17 -2
- package/dist/index.js +31 -6
- package/dist/index.js.map +1 -1
- package/dist/registry.json +103 -9
- package/dist/scss/components/_display.scss +46 -0
- package/dist/scss/components/_layout.scss +20 -0
- package/dist/scss/components/_overlays.scss +14 -1
- package/dist/siakad.cjs +1195 -783
- package/dist/siakad.cjs.map +1 -1
- package/dist/siakad.d.cts +306 -4
- package/dist/siakad.d.ts +306 -4
- package/dist/siakad.js +426 -23
- package/dist/siakad.js.map +1 -1
- package/dist/ui-unipo.css +77 -1
- package/dist/ui-unipo.min.css +1 -1
- package/package.json +2 -2
- package/src/components/galat.tsx +33 -0
- package/src/components/layout.tsx +42 -4
- package/src/index.ts +1 -0
- package/src/siakad/akademik.tsx +2 -1
- package/src/siakad/aplikasi.tsx +4 -2
- package/src/siakad/berkas.tsx +203 -0
- package/src/siakad/dasbor.tsx +4 -2
- package/src/siakad/galat.tsx +48 -0
- package/src/siakad/index.ts +3 -0
- package/src/siakad/kalender.tsx +3 -1
- package/src/siakad/kelengkapan.tsx +3 -1
- package/src/siakad/kurikulum.tsx +2 -1
- package/src/siakad/lms.tsx +2 -1
- package/src/siakad/log.tsx +7 -3
- package/src/siakad/pilih.tsx +321 -0
- package/src/siakad/provider.tsx +12 -3
- package/dist/chunk-2FW3QITF.js.map +0 -1
- package/dist/chunk-SVRTAYZW.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/cn.ts","../src/lib/format.ts","../src/components/actions.tsx","../src/components/forms.tsx","../src/components/select.tsx","../src/components/overlays.tsx","../src/components/display.tsx","../src/components/calendar.tsx","../src/components/code.tsx","../src/components/galat.tsx","../src/components/navbar.tsx","../src/components/faq.tsx","../src/components/identity.tsx","../src/components/filter.tsx","../src/components/data-table.tsx","../src/components/status.tsx","../src/components/schedule.tsx","../src/components/content.tsx","../src/components/wizard.tsx","../src/components/charts.tsx"],"names":["BaseSeparator","jsxs","jsx","BaseField","BaseFieldset","BaseInput","BaseCheckbox","BaseRadio","BaseCheckboxGroup","BaseRadioGroup","BaseSwitch","BaseNumberField","React","BaseSlider","BaseToggle","BaseToggleGroup","BaseSelect","Check","BaseCombobox","X","Fragment","BaseDialog","React3","BaseAlertDialog","BasePopover","BaseTooltip","BaseMenu","CircleAlert","BaseToast","useRender","mergeProps","Info","CircleCheck","TriangleAlert","BaseAvatar","BaseTabs","BaseAccordion","BaseCollapsible","BaseProgress","React4","BaseScrollArea","React5","ChevronLeft","ChevronRight","iso","React6","React7","ChevronDown","MenuIcon","React8","Search","React9","v","labelOf","React10","isEmpty","SearchX","AlertTriangle","React11","React12","CalendarDays","Tag","Clock","MapPin","ArrowRight","React13","React14","ArrowUpRight","Minus","Panel"],"mappings":"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","file":"chunk-SJ4DJOMZ.js","sourcesContent":["type Part = string | false | null | undefined | 0;\ntype StatefulClass<S> = (state: S) => string | undefined;\n\n/**\n * Gabungkan nama kelas; nilai falsy diabaikan. Bila salah satu bagian berupa fungsi\n * (className bergantung state pada komponen Base UI), hasilnya juga fungsi.\n */\nexport function cn(...parts: Part[]): string;\nexport function cn<S>(...parts: Array<Part | StatefulClass<S>>): string | ((state: S) => string);\nexport function cn<S>(...parts: Array<Part | StatefulClass<S>>): string | ((state: S) => string) {\n if (parts.some((p) => typeof p === 'function')) {\n return (state: S) =>\n parts\n .map((p) => (typeof p === 'function' ? p(state) : p))\n .filter(Boolean)\n .join(' ');\n }\n return parts.filter(Boolean).join(' ');\n}\n\n/** Atribut data boolean: true -> \"\" (ada), false/undefined -> tidak dirender. */\nexport function dataFlag(v: boolean | undefined): '' | undefined {\n return v ? '' : undefined;\n}\n","const LOCALE = 'id-ID';\n\n/** Inisial dari nama, mis. \"Siti Nurhaliza Putri\" -> \"SN\". Gelar dan kata sambung diabaikan. */\nexport function initials(name: string | null | undefined, max = 2): string {\n if (!name) return '?';\n const words = name\n .replace(/,.*$/, '')\n .replace(/\\b(dr|drs|dra|ir|prof|h|hj|s\\.\\w+|m\\.\\w+)\\.?\\s/gi, ' ')\n .replace(/[^\\p{L}\\p{N}\\s]/gu, ' ')\n .split(/\\s+/)\n .filter((w) => w && !/^(dan|di|ke|dari|untuk|bin|binti|the|of|and)$/i.test(w));\n if (!words.length) return '?';\n if (words.length === 1) return words[0].slice(0, max).toUpperCase();\n return words\n .slice(0, max)\n .map((w) => w[0])\n .join('')\n .toUpperCase();\n}\n\n/** Warna latar avatar/monogram yang stabil per nama (hue dari hash). */\nexport function hueFromString(text: string): number {\n let h = 0;\n for (let i = 0; i < text.length; i++) h = (h * 31 + text.charCodeAt(i)) >>> 0;\n return h % 360;\n}\n\nexport function formatNumber(n: number | null | undefined, opts?: Intl.NumberFormatOptions): string {\n if (n == null || Number.isNaN(n)) return '–';\n return new Intl.NumberFormat(LOCALE, opts).format(n);\n}\n\nexport function formatCompact(n: number | null | undefined): string {\n return formatNumber(n, { notation: 'compact', maximumFractionDigits: 1 });\n}\n\nexport function formatRupiah(n: number | null | undefined): string {\n return formatNumber(n, { style: 'currency', currency: 'IDR', maximumFractionDigits: 0 });\n}\n\nexport function formatDate(d: Date | string | null | undefined, style: 'short' | 'medium' | 'long' | 'full' = 'medium'): string {\n if (!d) return '–';\n const date = typeof d === 'string' ? new Date(d.length === 10 ? d + 'T00:00:00' : d) : d;\n if (Number.isNaN(date.getTime())) return String(d);\n return new Intl.DateTimeFormat(LOCALE, { dateStyle: style }).format(date);\n}\n\nexport function formatTime(d: Date | string | null | undefined): string {\n if (!d) return '–';\n const date = typeof d === 'string' ? new Date(d) : d;\n return new Intl.DateTimeFormat(LOCALE, { hour: '2-digit', minute: '2-digit' }).format(date);\n}\n\n/** \"3 hari lalu\", \"dalam 2 jam\" */\nexport function formatRelative(d: Date | string, now: Date = new Date()): string {\n const date = typeof d === 'string' ? new Date(d) : d;\n const diff = (date.getTime() - now.getTime()) / 1000;\n const rtf = new Intl.RelativeTimeFormat(LOCALE, { numeric: 'auto' });\n const units: [Intl.RelativeTimeFormatUnit, number][] = [\n ['year', 31536000],\n ['month', 2592000],\n ['week', 604800],\n ['day', 86400],\n ['hour', 3600],\n ['minute', 60],\n ];\n for (const [unit, sec] of units) if (Math.abs(diff) >= sec) return rtf.format(Math.round(diff / sec), unit);\n return rtf.format(Math.round(diff), 'second');\n}\n\nexport function formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n const u = ['KB', 'MB', 'GB'];\n let v = bytes / 1024;\n let i = 0;\n while (v >= 1024 && i < u.length - 1) {\n v /= 1024;\n i++;\n }\n return `${formatNumber(v, { maximumFractionDigits: 1 })} ${u[i]}`;\n}\n\n/** Rupiah ringkas untuk kartu dan sumbu: \"Rp 1,2 M\", \"Rp 350 jt\", \"Rp 12 rb\". */\nexport function formatRupiahRingkas(n: number | null | undefined): string {\n if (n == null || Number.isNaN(n)) return '–';\n const a = Math.abs(n);\n const [d, s] = a >= 1e12 ? [1e12, 'T'] : a >= 1e9 ? [1e9, 'M'] : a >= 1e6 ? [1e6, 'jt'] : a >= 1e3 ? [1e3, 'rb'] : [1, ''];\n return `Rp ${formatNumber(n / d, { maximumFractionDigits: n / d >= 100 ? 0 : 1 })}${s ? ' ' + s : ''}`;\n}\n\n/** Persen dengan satu desimal: 92,4%. */\nexport function formatPersen(n: number | null | undefined, digits = 1): string {\n if (n == null || Number.isNaN(n)) return '–';\n return `${formatNumber(n, { maximumFractionDigits: digits })}%`;\n}\n","'use client';\nimport * as React from 'react';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Separator as BaseSeparator } from '@base-ui/react/separator';\nimport { X } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\n\n// ---------------------------------------------------------------- Button\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'soft' | 'ghost' | 'destructive' | 'destructive-soft' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface ButtonProps extends useRender.ComponentProps<'button'> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Tombol berisi ikon saja (persegi). Wajib beri `aria-label`. */\n iconOnly?: boolean;\n fullWidth?: boolean;\n /** Menampilkan spinner dan menonaktifkan klik, lebar tombol tetap. */\n loading?: boolean;\n}\n\n/**\n * Tombol. Untuk tautan, pakai `render={<a href=\"...\" />}` agar gaya tetap sama tanpa role=\"button\".\n */\nexport function Button({ variant = 'primary', size = 'md', iconOnly, fullWidth, loading, className, render, children, disabled, ...props }: ButtonProps) {\n const defaultProps = {\n className: cn('u-button', className),\n 'data-variant': variant,\n 'data-size': size,\n 'data-icon-only': dataFlag(iconOnly),\n 'data-full-width': dataFlag(fullWidth),\n 'data-loading': dataFlag(loading),\n 'aria-busy': loading || undefined,\n disabled: disabled || loading,\n type: render ? undefined : ('button' as const),\n children: (\n <>\n {children}\n {loading && <Spinner size={size === 'lg' || size === 'xl' ? 'md' : 'sm'} />}\n </>\n ),\n };\n return useRender({ render, defaultTagName: 'button', props: mergeProps<'button'>(defaultProps, props) });\n}\n\nexport function ButtonGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div role=\"group\" className={cn('u-button-group', className)} {...props} />;\n}\n\n// ---------------------------------------------------------------- Badge\nexport type BadgeVariant = 'neutral' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' | 'solid' | 'outline';\n\nexport interface BadgeProps extends React.ComponentProps<'span'> {\n variant?: BadgeVariant;\n size?: 'md' | 'lg';\n shape?: 'pill' | 'square';\n /** Titik status di depan teks. */\n dot?: boolean;\n}\n\nexport function Badge({ variant = 'neutral', size, shape, dot, className, children, ...props }: BadgeProps) {\n return (\n <span className={cn('u-badge', className)} data-variant={variant} data-size={size} data-shape={shape} {...props}>\n {dot && <span className=\"u-badge-dot\" aria-hidden />}\n {children}\n </span>\n );\n}\n\n// ---------------------------------------------------------------- Tag\nexport interface TagProps extends useRender.ComponentProps<'span'> {\n active?: boolean;\n size?: 'sm' | 'md';\n icon?: React.ReactNode;\n /** Bila diisi, tombol hapus (x) ditampilkan. */\n onRemove?: () => void;\n removeLabel?: string;\n}\n\n/** Tag/label kategori, mis. kategori berita atau kata kunci. Bisa dijadikan tautan dengan `render={<a href />}`. */\nexport function Tag({ active, size, icon, onRemove, removeLabel = 'Hapus', className, render, children, ...props }: TagProps) {\n return useRender({\n render,\n defaultTagName: 'span',\n props: mergeProps<'span'>(\n {\n className: cn('u-tag', className),\n 'data-active': dataFlag(active),\n 'data-size': size,\n children: (\n <>\n {icon}\n {children}\n {onRemove && (\n <button\n type=\"button\"\n className=\"u-tag-remove\"\n aria-label={removeLabel}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemove();\n }}\n >\n <X size={12} />\n </button>\n )}\n </>\n ),\n } as React.ComponentProps<'span'>,\n props,\n ),\n });\n}\n\n// ---------------------------------------------------------------- Kbd\nexport function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {\n return <kbd className={cn('u-kbd', className)} {...props} />;\n}\n\n// ---------------------------------------------------------------- Spinner\nexport function Spinner({ size = 'md', className, label = 'Memuat', ...props }: { size?: 'sm' | 'md' | 'lg'; label?: string } & React.ComponentProps<'svg'>) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" role=\"status\" aria-label={label} className={cn('u-spinner', className)} data-size={size} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.2\" strokeWidth=\"2.5\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------- Skeleton\nexport function Skeleton({ shape, className, style, width, height, ...props }: { shape?: 'rect' | 'circle' | 'text'; width?: number | string; height?: number | string } & React.ComponentProps<'span'>) {\n return <span aria-hidden className={cn('u-skeleton', className)} data-shape={shape} style={{ width, height, ...style }} {...props} />;\n}\n\n// ---------------------------------------------------------------- Separator\nexport function Separator({ className, orientation = 'horizontal', label, ...props }: { orientation?: 'horizontal' | 'vertical'; label?: React.ReactNode } & Omit<React.ComponentProps<typeof BaseSeparator>, 'orientation'>) {\n if (label) {\n return (\n <div role=\"separator\" className={cn('u-separator-label', typeof className === 'string' && className)}>\n {label}\n </div>\n );\n }\n return <BaseSeparator orientation={orientation} className={cn('u-separator', className)} {...props} />;\n}\n\n// ---------------------------------------------------------------- VisuallyHidden\nexport function VisuallyHidden(props: React.ComponentProps<'span'>) {\n return <span className=\"u-sr-only\" {...props} />;\n}\n","'use client';\nimport * as React from 'react';\nimport { Field as BaseField } from '@base-ui/react/field';\nimport { Fieldset as BaseFieldset } from '@base-ui/react/fieldset';\nimport { Input as BaseInput } from '@base-ui/react/input';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react/checkbox-group';\nimport { Radio as BaseRadio } from '@base-ui/react/radio';\nimport { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';\nimport { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport { NumberField as BaseNumberField } from '@base-ui/react/number-field';\nimport { OTPField } from '@base-ui/react/otp-field';\nimport { Slider as BaseSlider } from '@base-ui/react/slider';\nimport { Toggle as BaseToggle } from '@base-ui/react/toggle';\nimport { ToggleGroup as BaseToggleGroup } from '@base-ui/react/toggle-group';\nimport { Check, CircleAlert, Minus, Plus } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\n\n// ---------------------------------------------------------------- Label\nexport interface LabelProps extends React.ComponentProps<'label'> {\n required?: boolean;\n optional?: boolean;\n}\nexport function Label({ className, required, optional, children, ...props }: LabelProps) {\n return (\n <label className={cn('u-label', className)} {...props}>\n {children}\n {required && <span className=\"u-label-required\" aria-hidden>*</span>}\n {optional && <span className=\"u-label-optional\">(opsional)</span>}\n </label>\n );\n}\n\n// ---------------------------------------------------------------- Field\nexport interface FieldProps extends Omit<React.ComponentProps<typeof BaseField.Root>, 'children'> {\n label?: React.ReactNode;\n description?: React.ReactNode;\n /** Pesan galat. Bila diisi, field ditandai tidak valid. */\n error?: React.ReactNode;\n required?: boolean;\n optional?: boolean;\n orientation?: 'vertical' | 'horizontal';\n children: React.ReactNode;\n}\n\n/**\n * Pembungkus satu isian: label, kontrol, deskripsi, dan galat saling terhubung (aria) secara otomatis.\n * Kontrol di dalamnya harus komponen UNIPO (Input, Select, Checkbox, ...) atau dibungkus `FieldControl`.\n */\nexport function Field({ label, description, error, required, optional, orientation, className, children, invalid, ...props }: FieldProps) {\n return (\n <BaseField.Root className={cn('u-field', className)} data-orientation={orientation} invalid={invalid ?? Boolean(error)} {...props}>\n {label && (\n <BaseField.Label className=\"u-label\">\n {label}\n {required && <span className=\"u-label-required\" aria-hidden>*</span>}\n {optional && <span className=\"u-label-optional\">(opsional)</span>}\n </BaseField.Label>\n )}\n {children}\n {description && !error && <BaseField.Description className=\"u-field-description\">{description}</BaseField.Description>}\n {error && (\n <BaseField.Error className=\"u-field-error\" match>\n <CircleAlert aria-hidden />\n {error}\n </BaseField.Error>\n )}\n </BaseField.Root>\n );\n}\nexport const FieldControl = BaseField.Control;\nexport function FieldDescription({ className, ...props }: React.ComponentProps<typeof BaseField.Description>) {\n return <BaseField.Description className={cn('u-field-description', className)} {...props} />;\n}\nexport function FieldError({ className, children, ...props }: React.ComponentProps<typeof BaseField.Error>) {\n return (\n <BaseField.Error className={cn('u-field-error', className)} {...props}>\n <CircleAlert aria-hidden />\n {children as React.ReactNode}\n </BaseField.Error>\n );\n}\n\nexport function Fieldset({ legend, className, children, ...props }: { legend?: React.ReactNode } & React.ComponentProps<typeof BaseFieldset.Root>) {\n return (\n <BaseFieldset.Root className={cn('u-fieldset', className)} {...props}>\n {legend && <BaseFieldset.Legend className=\"u-fieldset-legend\">{legend}</BaseFieldset.Legend>}\n {children as React.ReactNode}\n </BaseFieldset.Root>\n );\n}\n\n// ---------------------------------------------------------------- Input / Textarea\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\nexport interface InputProps extends Omit<React.ComponentProps<typeof BaseInput>, 'size'> {\n size?: ControlSize;\n}\nexport function Input({ className, size, ...props }: InputProps) {\n return <BaseInput className={cn('u-input', className)} data-size={size} {...props} />;\n}\n\nexport function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <BaseField.Control\n render={(p) => <textarea {...(p as React.ComponentProps<'textarea'>)} />}\n className={cn('u-textarea', className)}\n {...(props as React.ComponentProps<typeof BaseField.Control>)}\n />\n );\n}\n\nexport interface InputGroupProps extends Omit<React.ComponentProps<'div'>, 'prefix'> {\n size?: ControlSize;\n /** Konten di kiri (ikon, teks \"Rp\", dsb.). */\n start?: React.ReactNode;\n /** Konten di kanan (ikon, tombol, satuan). */\n end?: React.ReactNode;\n /** Beri latar dan garis pemisah pada addon, mis. untuk \"https://\" atau \"SKS\". */\n boxed?: boolean;\n invalid?: boolean;\n}\n/** Input dengan ikon/teks di dalam bingkai yang sama. Taruh <Input /> sebagai anak. */\nexport function InputGroup({ size, start, end, boxed, invalid, className, children, ...props }: InputGroupProps) {\n return (\n <div className={cn('u-input-group', className)} data-size={size} data-invalid={dataFlag(invalid)} {...props}>\n {start != null && (\n <span className=\"u-input-addon\" data-align=\"start\" data-boxed={dataFlag(boxed)}>\n {start}\n </span>\n )}\n {children}\n {end != null && (\n <span className=\"u-input-addon\" data-align=\"end\" data-boxed={dataFlag(boxed)}>\n {end}\n </span>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------- Checkbox / Radio\nexport function Checkbox({ className, ...props }: React.ComponentProps<typeof BaseCheckbox.Root>) {\n return (\n <BaseCheckbox.Root className={cn('u-checkbox', className)} {...props}>\n <BaseCheckbox.Indicator\n className=\"u-checkbox-indicator\"\n render={(p, state) => <span {...p}>{state.indeterminate ? <Minus /> : <Check />}</span>}\n />\n </BaseCheckbox.Root>\n );\n}\n\nexport function Radio({ className, ...props }: React.ComponentProps<typeof BaseRadio.Root>) {\n return (\n <BaseRadio.Root className={cn('u-radio', className)} {...props}>\n <BaseRadio.Indicator className=\"u-radio-indicator\" />\n </BaseRadio.Root>\n );\n}\n\nexport interface ChoiceProps extends Omit<React.ComponentProps<'label'>, 'title'> {\n label: React.ReactNode;\n description?: React.ReactNode;\n control: React.ReactElement;\n disabled?: boolean;\n}\n/** Satu baris pilihan: kontrol (Checkbox/Radio/Switch) + label + deskripsi. */\nexport function Choice({ label, description, control, disabled, className, ...props }: ChoiceProps) {\n return (\n <label className={cn('u-choice', className)} data-disabled={dataFlag(disabled)} {...props}>\n {control}\n <span className=\"u-choice-text\">\n <span>{label}</span>\n {description && <span className=\"u-choice-description\">{description}</span>}\n </span>\n </label>\n );\n}\n\nexport interface ChoiceOption<V extends string = string> {\n value: V;\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps<V extends string> extends Omit<React.ComponentProps<typeof BaseCheckboxGroup>, 'value' | 'defaultValue' | 'onValueChange'> {\n options: ChoiceOption<V>[];\n value?: V[];\n defaultValue?: V[];\n onValueChange?: (value: V[]) => void;\n orientation?: 'vertical' | 'horizontal';\n /** Tampilan kartu (cocok untuk memilih paket, jalur, minat). */\n variant?: 'list' | 'card';\n columns?: number;\n}\nexport function CheckboxGroup<V extends string>({ options, orientation, variant = 'list', columns = 2, className, onValueChange, ...props }: CheckboxGroupProps<V>) {\n return (\n <BaseCheckboxGroup\n className={cn(variant === 'card' ? 'u-choice-cards' : 'u-choice-group', className)}\n data-orientation={orientation}\n style={variant === 'card' ? ({ '--u-cols': columns } as React.CSSProperties) : undefined}\n onValueChange={(v) => onValueChange?.(v as V[])}\n {...(props as object)}\n >\n {options.map((o) =>\n variant === 'card' ? (\n <ChoiceCard key={o.value} {...o} control={<Checkbox value={o.value} disabled={o.disabled} />} />\n ) : (\n <Choice key={o.value} label={o.label} description={o.description} disabled={o.disabled} control={<Checkbox value={o.value} disabled={o.disabled} />} />\n ),\n )}\n </BaseCheckboxGroup>\n );\n}\n\nexport interface RadioGroupProps<V extends string> extends Omit<React.ComponentProps<typeof BaseRadioGroup>, 'value' | 'defaultValue' | 'onValueChange'> {\n options: ChoiceOption<V>[];\n value?: V | null;\n defaultValue?: V;\n onValueChange?: (value: V) => void;\n orientation?: 'vertical' | 'horizontal';\n variant?: 'list' | 'card';\n columns?: number;\n}\nexport function RadioGroup<V extends string>({ options, orientation, variant = 'list', columns = 2, className, onValueChange, ...props }: RadioGroupProps<V>) {\n return (\n <BaseRadioGroup\n className={cn(variant === 'card' ? 'u-choice-cards' : 'u-choice-group', className)}\n data-orientation={orientation}\n style={variant === 'card' ? ({ '--u-cols': columns } as React.CSSProperties) : undefined}\n onValueChange={(v) => onValueChange?.(v as V)}\n {...(props as object)}\n >\n {options.map((o) =>\n variant === 'card' ? (\n <ChoiceCard key={o.value} {...o} control={<Radio value={o.value} disabled={o.disabled} />} />\n ) : (\n <Choice key={o.value} label={o.label} description={o.description} disabled={o.disabled} control={<Radio value={o.value} disabled={o.disabled} />} />\n ),\n )}\n </BaseRadioGroup>\n );\n}\n\n/** Kartu pilihan (checkbox/radio). Umumnya dipakai lewat CheckboxGroup/RadioGroup variant=\"card\". */\nexport function ChoiceCard({ label, description, icon, control, disabled }: ChoiceOption & { control: React.ReactElement }) {\n return (\n <label className=\"u-choice-card\" data-disabled={dataFlag(disabled)}>\n {icon && <span className=\"u-choice-card-icon\">{icon}</span>}\n <span className=\"u-choice-text\">\n <span>{label}</span>\n {description && <span className=\"u-choice-description\">{description}</span>}\n </span>\n {control}\n </label>\n );\n}\n\n// ---------------------------------------------------------------- Switch\nexport function Switch({ className, size, ...props }: { size?: 'sm' | 'md' } & React.ComponentProps<typeof BaseSwitch.Root>) {\n return (\n <BaseSwitch.Root className={cn('u-switch', className)} data-size={size} {...props}>\n <BaseSwitch.Thumb className=\"u-switch-thumb\" />\n </BaseSwitch.Root>\n );\n}\n\n// ---------------------------------------------------------------- NumberField\nexport function NumberField({ className, ...props }: React.ComponentProps<typeof BaseNumberField.Root>) {\n return (\n <BaseNumberField.Root {...props}>\n <BaseNumberField.Group className={cn('u-number-field', className)}>\n <BaseNumberField.Decrement className=\"u-number-field-button\" aria-label=\"Kurangi\">\n <Minus />\n </BaseNumberField.Decrement>\n <BaseNumberField.Input />\n <BaseNumberField.Increment className=\"u-number-field-button\" aria-label=\"Tambah\">\n <Plus />\n </BaseNumberField.Increment>\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n );\n}\n\n// ---------------------------------------------------------------- OTP\nexport interface OtpFieldProps extends Omit<React.ComponentProps<typeof OTPField.Root>, 'length'> {\n length?: number;\n /** Sisipkan pemisah setelah indeks ini, mis. 3 untuk 123-456. */\n separatorAfter?: number;\n}\n/** Isian kode OTP (verifikasi email/WA pendaftar PMB, login alumni). */\nexport function OtpField({ length = 6, separatorAfter, className, ...props }: OtpFieldProps) {\n return (\n <OTPField.Root length={length} className={cn('u-otp', className)} {...props}>\n {Array.from({ length }, (_, i) => (\n <React.Fragment key={i}>\n <OTPField.Input className=\"u-otp-input\" />\n {separatorAfter === i + 1 && i + 1 < length && <span className=\"u-otp-separator\" aria-hidden />}\n </React.Fragment>\n ))}\n </OTPField.Root>\n );\n}\n\n// ---------------------------------------------------------------- Slider\nexport function Slider({ className, ...props }: React.ComponentProps<typeof BaseSlider.Root>) {\n const value = props.value ?? props.defaultValue;\n const thumbs = Array.isArray(value) ? value.length : 1;\n return (\n <BaseSlider.Root className={cn('u-slider', className)} {...props}>\n <BaseSlider.Control className=\"u-slider-control\">\n <BaseSlider.Track className=\"u-slider-track\">\n <BaseSlider.Indicator className=\"u-slider-indicator\" />\n {Array.from({ length: thumbs }, (_, i) => (\n <BaseSlider.Thumb key={i} index={thumbs > 1 ? i : undefined} className=\"u-slider-thumb\" />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n\n// ---------------------------------------------------------------- Toggle / ToggleGroup / SegmentedControl\nexport function Toggle({ className, variant, size, ...props }: { variant?: 'ghost' | 'outline'; size?: 'sm' | 'md' } & React.ComponentProps<typeof BaseToggle>) {\n return <BaseToggle className={cn('u-toggle', className)} data-variant={variant} data-size={size} {...props} />;\n}\n\nexport function ToggleGroup({ className, ...props }: React.ComponentProps<typeof BaseToggleGroup>) {\n return <BaseToggleGroup className={cn('u-toggle-group', className)} {...props} />;\n}\n\nexport interface SegmentedControlProps<V extends string> {\n options: Array<{ value: V; label: React.ReactNode; icon?: React.ReactNode; 'aria-label'?: string }>;\n value?: V;\n defaultValue?: V;\n onValueChange?: (value: V) => void;\n fullWidth?: boolean;\n className?: string;\n 'aria-label'?: string;\n}\n/** Pilihan tunggal berbentuk tombol bersambung, mis. \"Hari | Minggu | Bulan\" atau \"Tabel | Kartu\". */\nexport function SegmentedControl<V extends string>({ options, value, defaultValue, onValueChange, fullWidth, className, ...rest }: SegmentedControlProps<V>) {\n const [inner, setInner] = React.useState<V | undefined>(defaultValue ?? options[0]?.value);\n const current = value ?? inner;\n return (\n <BaseToggleGroup\n className={cn('u-segmented', className)}\n data-full-width={dataFlag(fullWidth)}\n value={current ? [current] : []}\n onValueChange={(v) => {\n const next = v[0] as V | undefined;\n if (!next) return; // selalu ada satu yang terpilih\n setInner(next);\n onValueChange?.(next);\n }}\n aria-label={rest['aria-label']}\n >\n {options.map((o) => (\n <BaseToggle key={o.value} value={o.value} className=\"u-toggle\" aria-label={o['aria-label']}>\n {o.icon}\n {o.label}\n </BaseToggle>\n ))}\n </BaseToggleGroup>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { Select as BaseSelect } from '@base-ui/react/select';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { Check, ChevronsUpDown, Search, X } from 'lucide-react';\nimport { cn } from '../lib/cn';\nimport { Spinner } from './actions';\nimport type { ControlSize } from './forms';\n\n// ---------------------------------------------------------------- Select\nexport interface SelectOption<V = string> {\n value: V;\n label: React.ReactNode;\n /** Teks kecil di bawah label. */\n description?: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n group?: string;\n}\n\nexport interface SelectProps<V> {\n options: SelectOption<V>[];\n value?: V | null;\n defaultValue?: V | null;\n onValueChange?: (value: V | null) => void;\n placeholder?: string;\n size?: ControlSize;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n}\n\n/** Pilihan tunggal dari daftar pendek yang sudah diketahui (≤ ±30 butir). Untuk daftar panjang/berasal dari API, pakai Combobox. */\nexport function Select<V = string>({ options, placeholder = 'Pilih…', size, className, value, defaultValue, onValueChange, ...props }: SelectProps<V>) {\n const groups = React.useMemo(() => {\n const map = new Map<string, SelectOption<V>[]>();\n for (const o of options) {\n const k = o.group ?? '';\n if (!map.has(k)) map.set(k, []);\n map.get(k)!.push(o);\n }\n return [...map.entries()];\n }, [options]);\n return (\n <BaseSelect.Root<V>\n items={options.map((o) => ({ value: o.value, label: o.label }))}\n value={value}\n defaultValue={defaultValue}\n onValueChange={(v) => onValueChange?.(v as V | null)}\n disabled={props.disabled}\n name={props.name}\n required={props.required}\n >\n <BaseSelect.Trigger className={cn('u-select-trigger', className)} data-size={size} id={props.id} aria-label={props['aria-label']}>\n <BaseSelect.Value className=\"u-select-value\" placeholder={placeholder} />\n <BaseSelect.Icon className=\"u-select-icon\">\n <ChevronsUpDown />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner className=\"u-popup-positioner\" sideOffset={6} alignItemWithTrigger={false}>\n <BaseSelect.Popup className=\"u-listbox\">\n {groups.map(([g, items], gi) => (\n <BaseSelect.Group key={g || gi}>\n {gi > 0 && <BaseSelect.Separator className=\"u-listbox-separator\" />}\n {g && <BaseSelect.GroupLabel className=\"u-listbox-group-label\">{g}</BaseSelect.GroupLabel>}\n {items.map((o) => (\n <BaseSelect.Item key={String(o.value)} value={o.value} disabled={o.disabled} className=\"u-listbox-item\">\n {o.icon}\n <span className=\"u-option-text\">\n <BaseSelect.ItemText>{o.label}</BaseSelect.ItemText>\n {o.description && <span className=\"u-option-meta\">{o.description}</span>}\n </span>\n <BaseSelect.ItemIndicator className=\"u-listbox-item-indicator\">\n <Check />\n </BaseSelect.ItemIndicator>\n </BaseSelect.Item>\n ))}\n </BaseSelect.Group>\n ))}\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n\n// ---------------------------------------------------------------- Combobox\nexport interface ComboboxProps<T> {\n /** Butir statis (disaring di klien). Abaikan bila memakai `loadItems`. */\n items?: T[];\n /** Ambil butir dari server sesuai kata kunci (debounce otomatis). Dipakai komponen Cari* yang terhubung SDK. */\n loadItems?: (query: string, signal: AbortSignal) => Promise<T[]>;\n /** Minimal huruf sebelum `loadItems` dipanggil. Bawaan 0 (langsung memuat saat dibuka). */\n minQueryLength?: number;\n debounceMs?: number;\n itemToString: (item: T) => string;\n itemKey: (item: T) => string;\n /** Tampilan satu butir di daftar. Bawaan: teks dari itemToString. */\n renderItem?: (item: T) => React.ReactNode;\n value?: T | null;\n defaultValue?: T | null;\n onValueChange?: (value: T | null) => void;\n placeholder?: string;\n emptyText?: React.ReactNode;\n /** Teks saat kata kunci belum cukup panjang. */\n hintText?: React.ReactNode;\n icon?: React.ReactNode;\n size?: ControlSize;\n disabled?: boolean;\n name?: string;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n /** Pesan galat pemuatan, mis. \"Tidak bisa memuat data\". */\n errorText?: string;\n}\n\nfunction useDebounced<T>(value: T, ms: number): T {\n const [v, setV] = React.useState(value);\n React.useEffect(() => {\n const t = setTimeout(() => setV(value), ms);\n return () => clearTimeout(t);\n }, [value, ms]);\n return v;\n}\n\n/**\n * Isian cari-dan-pilih. Bisa dengan daftar statis (`items`) atau memuat dari API (`loadItems`).\n * Fondasi semua komponen Cari* (CariMahasiswa, CariDosen, CariNegara, ...).\n */\nexport function Combobox<T>({\n items,\n loadItems,\n minQueryLength = 0,\n debounceMs = 250,\n itemToString,\n itemKey,\n renderItem,\n value,\n defaultValue,\n onValueChange,\n placeholder = 'Cari…',\n emptyText = 'Tidak ada hasil.',\n hintText,\n icon = <Search />,\n size,\n disabled,\n name,\n className,\n id,\n errorText = 'Data tidak bisa dimuat. Coba lagi.',\n ...rest\n}: ComboboxProps<T>) {\n const initial = value !== undefined ? value : (defaultValue ?? null);\n const [query, setQuery] = React.useState(() => (initial ? itemToString(initial) : ''));\n const [open, setOpen] = React.useState(false);\n const [remote, setRemote] = React.useState<T[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [failed, setFailed] = React.useState(false);\n const [inner, setInner] = React.useState<T | null>(defaultValue ?? null);\n const selected = value !== undefined ? value : inner;\n const debounced = useDebounced(query, debounceMs);\n // Nilai dari luar berubah (mis. form diisi ulang): samakan teks isian selama daftar tertutup.\n const selectedLabel = selected ? itemToString(selected) : '';\n React.useEffect(() => {\n if (!open) setQuery(selectedLabel);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedLabel]);\n const tooShort = Boolean(loadItems) && debounced.trim().length < minQueryLength;\n\n React.useEffect(() => {\n if (!loadItems || !open || tooShort) return;\n // Kata kunci sama dengan butir terpilih = pengguna belum mengetik apa pun.\n const q = selected && debounced === itemToString(selected) ? '' : debounced.trim();\n const ctrl = new AbortController();\n setLoading(true);\n setFailed(false);\n loadItems(q, ctrl.signal)\n .then((r) => !ctrl.signal.aborted && setRemote(r))\n .catch((e) => {\n if (!ctrl.signal.aborted && e?.name !== 'AbortError') {\n setFailed(true);\n setRemote([]);\n }\n })\n .finally(() => !ctrl.signal.aborted && setLoading(false));\n return () => ctrl.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debounced, open, tooShort, loadItems]);\n\n const list = loadItems ? (tooShort ? [] : remote) : (items ?? []);\n const listWithSelected = selected && loadItems && !list.some((i) => itemKey(i) === itemKey(selected)) ? [selected, ...list] : list;\n\n return (\n <BaseCombobox.Root<T>\n items={listWithSelected}\n filter={loadItems ? null : undefined}\n itemToStringLabel={itemToString}\n itemToStringValue={itemKey}\n isItemEqualToValue={(a, b) => itemKey(a) === itemKey(b)}\n value={selected}\n onValueChange={(v) => {\n setInner(v as T | null);\n onValueChange?.(v as T | null);\n }}\n inputValue={query}\n onInputValueChange={setQuery}\n open={open}\n onOpenChange={setOpen}\n disabled={disabled}\n name={name}\n >\n <div className={cn('u-input-group', className)} data-size={size}>\n <span className=\"u-input-addon\" data-align=\"start\">\n {icon}\n </span>\n <BaseCombobox.Input placeholder={placeholder} id={id} aria-label={rest['aria-label']} />\n <span className=\"u-input-addon\" data-align=\"end\">\n {loading && open ? (\n <Spinner size=\"sm\" />\n ) : selected ? (\n <BaseCombobox.Clear className=\"u-select-icon\" aria-label=\"Kosongkan\">\n <X />\n </BaseCombobox.Clear>\n ) : (\n <BaseCombobox.Trigger className=\"u-select-icon\" aria-label=\"Buka daftar\">\n <ChevronsUpDown />\n </BaseCombobox.Trigger>\n )}\n </span>\n </div>\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner className=\"u-popup-positioner\" sideOffset={6}>\n <BaseCombobox.Popup className=\"u-listbox\">\n <BaseCombobox.Status className=\"u-listbox-status\">\n {failed ? errorText : tooShort ? (hintText ?? `Ketik minimal ${minQueryLength} huruf.`) : loading && !listWithSelected.length ? <><Spinner size=\"sm\" /> Mencari…</> : null}\n </BaseCombobox.Status>\n {!loading && !failed && !tooShort && <BaseCombobox.Empty className=\"u-listbox-empty\">{emptyText}</BaseCombobox.Empty>}\n <BaseCombobox.List>\n {(item: T) => (\n <BaseCombobox.Item key={itemKey(item)} value={item} className=\"u-listbox-item\">\n {renderItem ? renderItem(item) : itemToString(item)}\n <BaseCombobox.ItemIndicator className=\"u-listbox-item-indicator\">\n <Check />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n )}\n </BaseCombobox.List>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n );\n}\n\n/** Isi standar satu butir: media (avatar/bendera/logo) + judul + keterangan. */\nexport function OptionContent({ media, mediaShape, title, meta }: { media?: React.ReactNode; mediaShape?: 'circle' | 'square' | 'flag'; title: React.ReactNode; meta?: React.ReactNode }) {\n return (\n <>\n {media != null && (\n <span className=\"u-option-media\" data-shape={mediaShape}>\n {media}\n </span>\n )}\n <span className=\"u-option-text\">\n <span>{title}</span>\n {meta && <span className=\"u-option-meta\">{meta}</span>}\n </span>\n </>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { Menu as BaseMenu } from '@base-ui/react/menu';\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { CircleAlert, CircleCheck, Info, TriangleAlert, X } from 'lucide-react';\nimport { cn } from '../lib/cn';\nimport { Button, Kbd, Spinner } from './actions';\n\nfunction Arrow() {\n return (\n <svg width=\"14\" height=\"7\" viewBox=\"0 0 14 7\" aria-hidden>\n <path className=\"u-arrow-stroke\" d=\"M0 7 7 0l7 7h-1.4L7 1.4 1.4 7Z\" />\n <path className=\"u-arrow-fill\" d=\"M1.4 7 7 1.4 12.6 7Z\" />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------- Dialog\nexport interface DialogProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Elemen pemicu (biasanya <Button>). */\n trigger?: React.ReactElement;\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Tombol di kaki dialog. */\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n children?: React.ReactNode;\n className?: string;\n /** Tampilkan sebagai panel geser dari sisi layar. */\n side?: 'right' | 'left' | 'bottom';\n}\n\n/** Dialog modal. Dengan `side`, menjadi Sheet (panel samping/bawah) untuk filter, detail, atau formulir panjang. */\nexport function Dialog({ open, defaultOpen, onOpenChange, trigger, title, description, footer, size = 'md', side, children, className }: DialogProps) {\n const popup = (\n <BaseDialog.Popup className={cn(side ? 'u-sheet' : 'u-dialog', className)} data-size={size} data-side={side}>\n <div className=\"u-dialog-header\">\n <BaseDialog.Title className=\"u-dialog-title\">{title}</BaseDialog.Title>\n {description && <BaseDialog.Description className=\"u-dialog-description\">{description}</BaseDialog.Description>}\n </div>\n {children && <div className=\"u-dialog-body\">{children}</div>}\n {footer && <div className=\"u-dialog-footer\">{footer}</div>}\n <BaseDialog.Close className=\"u-dialog-close\" aria-label=\"Tutup\">\n <X />\n </BaseDialog.Close>\n </BaseDialog.Popup>\n );\n return (\n <BaseDialog.Root open={open} defaultOpen={defaultOpen} onOpenChange={(o) => onOpenChange?.(o)}>\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className=\"u-backdrop\" />\n {side ? popup : <BaseDialog.Viewport className=\"u-dialog-viewport\">{popup}</BaseDialog.Viewport>}\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\nexport const DialogClose = BaseDialog.Close;\n\nexport function Sheet(props: Omit<DialogProps, 'side'> & { side?: 'right' | 'left' | 'bottom' }) {\n return <Dialog side=\"right\" {...props} />;\n}\n\n// ---------------------------------------------------------------- Confirm (AlertDialog)\nexport interface ConfirmDialogProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: React.ReactElement;\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Label tombol aksi; tulis kata kerja, mis. \"Hapus mahasiswa\". */\n confirmLabel: string;\n cancelLabel?: string;\n tone?: 'danger' | 'primary' | 'warning';\n icon?: React.ReactNode;\n /** Boleh async; dialog menunggu dan menampilkan spinner. */\n onConfirm: () => void | Promise<void>;\n children?: React.ReactNode;\n}\n\n/** Konfirmasi tindakan yang tidak bisa dibatalkan. */\nexport function ConfirmDialog({ open, onOpenChange, trigger, title, description, confirmLabel, cancelLabel = 'Batal', tone = 'danger', icon, onConfirm, children }: ConfirmDialogProps) {\n const [inner, setInner] = React.useState(false);\n const [busy, setBusy] = React.useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n setInner(o);\n onOpenChange?.(o);\n };\n return (\n <BaseAlertDialog.Root open={isOpen} onOpenChange={(o) => !busy && setOpen(o)}>\n {trigger && <BaseAlertDialog.Trigger render={trigger} />}\n <BaseAlertDialog.Portal>\n <BaseAlertDialog.Backdrop className=\"u-backdrop\" />\n <BaseAlertDialog.Viewport className=\"u-dialog-viewport\">\n <BaseAlertDialog.Popup className=\"u-dialog\" data-size=\"sm\">\n <div className=\"u-dialog-header\" style={{ paddingInlineEnd: '1.25rem' }}>\n <span className=\"u-alert-dialog-icon\" data-tone={tone}>\n {icon ?? (tone === 'primary' ? <Info /> : <TriangleAlert />)}\n </span>\n <BaseAlertDialog.Title className=\"u-dialog-title\">{title}</BaseAlertDialog.Title>\n {description && <BaseAlertDialog.Description className=\"u-dialog-description\">{description}</BaseAlertDialog.Description>}\n </div>\n {children && <div className=\"u-dialog-body\">{children}</div>}\n <div className=\"u-dialog-footer\" style={children ? undefined : { marginTop: '1.25rem' }}>\n <BaseAlertDialog.Close render={<Button variant=\"outline\" disabled={busy} />}>{cancelLabel}</BaseAlertDialog.Close>\n <Button\n variant={tone === 'danger' ? 'destructive' : 'primary'}\n loading={busy}\n onClick={async () => {\n setBusy(true);\n try {\n await onConfirm();\n setOpen(false);\n } finally {\n setBusy(false);\n }\n }}\n >\n {confirmLabel}\n </Button>\n </div>\n </BaseAlertDialog.Popup>\n </BaseAlertDialog.Viewport>\n </BaseAlertDialog.Portal>\n </BaseAlertDialog.Root>\n );\n}\n\n// ---------------------------------------------------------------- Popover\nexport interface PopoverProps {\n trigger: React.ReactElement;\n title?: React.ReactNode;\n description?: React.ReactNode;\n children?: React.ReactNode;\n side?: 'top' | 'bottom' | 'left' | 'right';\n align?: 'start' | 'center' | 'end';\n width?: number | string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n /** Buka saat kursor di atas pemicu (kartu pratinjau). */\n openOnHover?: boolean;\n}\nexport function Popover({ trigger, title, description, children, side = 'bottom', align = 'center', width, open, onOpenChange, className, openOnHover }: PopoverProps) {\n return (\n <BasePopover.Root open={open} onOpenChange={(o) => onOpenChange?.(o)}>\n <BasePopover.Trigger render={trigger} openOnHover={openOnHover} />\n <BasePopover.Portal>\n <BasePopover.Positioner className=\"u-popup-positioner\" side={side} align={align} sideOffset={8}>\n <BasePopover.Popup className={cn('u-popover', className)} style={width ? ({ '--u-popover-w': typeof width === 'number' ? `${width}px` : width } as React.CSSProperties) : undefined}>\n <BasePopover.Arrow className=\"u-popup-arrow\">\n <Arrow />\n </BasePopover.Arrow>\n {title && <BasePopover.Title className=\"u-popover-title\">{title}</BasePopover.Title>}\n {description && <BasePopover.Description className=\"u-popover-description\">{description}</BasePopover.Description>}\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n </BasePopover.Root>\n );\n}\n\n// ---------------------------------------------------------------- Tooltip\nexport const TooltipProvider = BaseTooltip.Provider;\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactElement;\n side?: 'top' | 'bottom' | 'left' | 'right';\n shortcut?: string;\n delay?: number;\n}\n/** Keterangan singkat saat kursor/fokus. Wajib untuk tombol ikon. */\nexport function Tooltip({ content, children, side = 'top', shortcut, delay = 300 }: TooltipProps) {\n return (\n <BaseTooltip.Root>\n <BaseTooltip.Trigger render={children} delay={delay} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner className=\"u-popup-positioner\" side={side} sideOffset={8}>\n <BaseTooltip.Popup className=\"u-tooltip\">\n <BaseTooltip.Arrow className=\"u-popup-arrow\">\n <Arrow />\n </BaseTooltip.Arrow>\n {content}\n {shortcut && <Kbd>{shortcut}</Kbd>}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\n// ---------------------------------------------------------------- Menu\nexport type MenuEntry =\n | { type?: 'item'; label: React.ReactNode; icon?: React.ReactNode; shortcut?: string; onSelect?: () => void; href?: string; disabled?: boolean; destructive?: boolean }\n | { type: 'separator' }\n | { type: 'label'; label: React.ReactNode };\n\nexport interface MenuProps {\n trigger: React.ReactElement;\n items: MenuEntry[];\n align?: 'start' | 'center' | 'end';\n side?: 'top' | 'bottom' | 'left' | 'right';\n}\n/** Menu tarik-turun untuk aksi baris tabel, profil pengguna, dsb. */\nexport function Menu({ trigger, items, align = 'end', side = 'bottom' }: MenuProps) {\n return (\n <BaseMenu.Root>\n <BaseMenu.Trigger render={trigger} />\n <BaseMenu.Portal>\n <BaseMenu.Positioner className=\"u-popup-positioner\" align={align} side={side} sideOffset={6}>\n <BaseMenu.Popup className=\"u-menu\">\n {items.map((it, i) => {\n if (it.type === 'separator') return <BaseMenu.Separator key={i} className=\"u-menu-separator\" />;\n if (it.type === 'label') return <div key={i} className=\"u-menu-label\">{it.label}</div>;\n const inner = (\n <>\n {it.icon}\n <span>{it.label}</span>\n {it.shortcut && <span className=\"u-menu-shortcut\">{it.shortcut}</span>}\n </>\n );\n return it.href ? (\n <BaseMenu.LinkItem key={i} href={it.href} className=\"u-menu-item\">\n {inner}\n </BaseMenu.LinkItem>\n ) : (\n <BaseMenu.Item key={i} className=\"u-menu-item\" onClick={it.onSelect} disabled={it.disabled} data-variant={it.destructive ? 'destructive' : undefined}>\n {inner}\n </BaseMenu.Item>\n );\n })}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n </BaseMenu.Root>\n );\n}\n\n// ---------------------------------------------------------------- Toast\nconst ICONS: Record<string, React.ReactNode> = {\n success: <CircleCheck />,\n error: <CircleAlert />,\n warning: <TriangleAlert />,\n info: <Info />,\n};\n\nfunction ToastList() {\n const { toasts } = BaseToast.useToastManager();\n return toasts.map((t) => (\n <BaseToast.Root key={t.id} toast={t} className=\"u-toast\">\n {t.type && (\n <span className=\"u-toast-icon\" data-type={t.type}>\n {t.type === 'loading' ? <Spinner size=\"sm\" /> : ICONS[t.type]}\n </span>\n )}\n <BaseToast.Content className=\"u-toast-content\">\n <BaseToast.Title className=\"u-toast-title\" />\n <BaseToast.Description className=\"u-toast-description\" />\n </BaseToast.Content>\n <BaseToast.Close className=\"u-toast-close\" aria-label=\"Tutup\">\n <X />\n </BaseToast.Close>\n </BaseToast.Root>\n ));\n}\n\n/** Pasang sekali di akar aplikasi (sudah termasuk di <UnipoProvider>). */\nexport function Toaster({ children, limit = 3, timeout = 5000 }: { children?: React.ReactNode; limit?: number; timeout?: number }) {\n return (\n <BaseToast.Provider limit={limit} timeout={timeout}>\n {children}\n <BaseToast.Portal>\n <BaseToast.Viewport className=\"u-toast-viewport\">\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n </BaseToast.Provider>\n );\n}\n\n/**\n * const toast = useToast();\n * toast.add({ title: 'Data tersimpan', type: 'success' });\n * toast.promise(simpan(), { loading: 'Menyimpan…', success: 'Tersimpan', error: 'Gagal menyimpan' });\n */\nexport const useToast = BaseToast.useToastManager;\n","'use client';\nimport * as React from 'react';\nimport { Avatar as BaseAvatar } from '@base-ui/react/avatar';\nimport { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { Accordion as BaseAccordion } from '@base-ui/react/accordion';\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport { Progress as BaseProgress } from '@base-ui/react/progress';\nimport { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { ArrowDown, ArrowUp, ArrowUpDown, Check, ChevronDown, ChevronLeft, ChevronRight, CircleAlert, CircleCheck, Info, TriangleAlert } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { hueFromString, initials } from '../lib/format';\n\n// ---------------------------------------------------------------- Card\nexport interface CardProps extends useRender.ComponentProps<'div'> {\n variant?: 'default' | 'flat' | 'muted' | 'elevated';\n interactive?: boolean;\n}\nexport function Card({ variant = 'default', interactive, className, render, ...props }: CardProps) {\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps<'div'>({ className: cn('u-card', className), 'data-variant': variant, 'data-interactive': dataFlag(interactive) } as React.ComponentProps<'div'>, props),\n });\n}\nexport function CardHeader({ title, description, action, className, children, ...props }: { title?: React.ReactNode; description?: React.ReactNode; action?: React.ReactNode } & Omit<React.ComponentProps<'div'>, 'title'>) {\n return (\n <div className={cn('u-card-header', className)} {...props}>\n <div>\n {title && <h3 className=\"u-card-title\">{title}</h3>}\n {description && <p className=\"u-card-description\">{description}</p>}\n {children}\n </div>\n {action}\n </div>\n );\n}\nexport function CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={cn('u-card-content', className)} {...props} />;\n}\nexport function CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={cn('u-card-footer', className)} {...props} />;\n}\n\n// ---------------------------------------------------------------- Alert\nexport type AlertVariant = 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';\nconst ALERT_ICON: Record<AlertVariant, React.ReactNode> = {\n neutral: <Info />,\n primary: <Info />,\n info: <Info />,\n success: <CircleCheck />,\n warning: <TriangleAlert />,\n danger: <CircleAlert />,\n};\nexport interface AlertProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n variant?: AlertVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode | false;\n actions?: React.ReactNode;\n}\nexport function Alert({ variant = 'neutral', title, icon, actions, className, children, ...props }: AlertProps) {\n return (\n <div role={variant === 'danger' || variant === 'warning' ? 'alert' : 'status'} className={cn('u-alert', className)} data-variant={variant} {...props}>\n {icon === false ? <span /> : (icon ?? ALERT_ICON[variant])}\n <div className=\"u-alert-body\">\n {title && <p className=\"u-alert-title\">{title}</p>}\n {children && <div className=\"u-alert-description\">{children}</div>}\n </div>\n {actions && <div className=\"u-alert-actions\">{actions}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------- Avatar\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\nexport interface AvatarProps extends Omit<React.ComponentProps<typeof BaseAvatar.Root>, 'children'> {\n /** Nama lengkap: dipakai untuk inisial, warna latar, dan teks alternatif. */\n name: string;\n src?: string | null;\n size?: AvatarSize;\n shape?: 'circle' | 'square';\n status?: 'online' | 'offline' | 'busy' | 'away';\n /** Lencana kecil di pojok (mis. ikon terverifikasi). */\n badge?: React.ReactNode;\n}\n/** Foto profil dengan cadangan inisial berwarna stabil per nama. */\nexport function Avatar({ name, src, size = 'md', shape, status, badge, className, style, ...props }: AvatarProps) {\n const hue = hueFromString(name);\n return (\n <BaseAvatar.Root\n className={cn('u-avatar', className)}\n data-size={size}\n data-shape={shape}\n style={{ '--u-avatar-bg': `oklch(0.93 0.04 ${hue})`, '--u-avatar-fg': `oklch(0.42 0.1 ${hue})`, ...(style as object) } as React.CSSProperties}\n {...props}\n >\n {src && <BaseAvatar.Image className=\"u-avatar-image\" src={src} alt={name} />}\n <BaseAvatar.Fallback className=\"u-avatar-fallback\" delay={src ? 400 : 0}>\n {initials(name)}\n </BaseAvatar.Fallback>\n {status && <span className=\"u-avatar-status\" data-status={status} aria-label={status} />}\n {badge && <span className=\"u-avatar-badge\">{badge}</span>}\n </BaseAvatar.Root>\n );\n}\nexport function AvatarGroup({ people, max = 4, size = 'sm' }: { people: Array<{ name: string; src?: string | null }>; max?: number; size?: AvatarSize }) {\n const shown = people.slice(0, max);\n const more = people.length - shown.length;\n return (\n <div className=\"u-avatar-group\">\n {shown.map((p, i) => (\n <Avatar key={i} name={p.name} src={p.src} size={size} />\n ))}\n {more > 0 && (\n <span className=\"u-avatar\" data-size={size} title={`${more} lainnya`}>\n +{more}\n </span>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------- Tabs\nexport interface TabItem<V extends string = string> {\n value: V;\n label: React.ReactNode;\n icon?: React.ReactNode;\n count?: number;\n disabled?: boolean;\n content?: React.ReactNode;\n}\nexport interface TabsProps<V extends string> {\n items: TabItem<V>[];\n value?: V;\n defaultValue?: V;\n onValueChange?: (v: V) => void;\n variant?: 'underline' | 'pill';\n className?: string;\n /** Konten tambahan di samping daftar tab (mis. tombol). */\n children?: React.ReactNode;\n}\nexport function Tabs<V extends string>({ items, value, defaultValue, onValueChange, variant = 'underline', className }: TabsProps<V>) {\n return (\n <BaseTabs.Root className={cn('u-tabs', className)} value={value} defaultValue={defaultValue ?? items[0]?.value} onValueChange={(v) => onValueChange?.(v as V)}>\n <BaseTabs.List className=\"u-tabs-list\" data-variant={variant}>\n {items.map((t) => (\n <BaseTabs.Tab key={t.value} value={t.value} disabled={t.disabled} className=\"u-tab\">\n {t.icon}\n {t.label}\n {t.count != null && (\n <span className=\"u-badge\" data-variant=\"neutral\">\n {t.count}\n </span>\n )}\n </BaseTabs.Tab>\n ))}\n <BaseTabs.Indicator className=\"u-tabs-indicator\" />\n </BaseTabs.List>\n {items.map((t) =>\n t.content !== undefined ? (\n <BaseTabs.Panel key={t.value} value={t.value} className=\"u-tabs-panel\">\n {t.content}\n </BaseTabs.Panel>\n ) : null,\n )}\n </BaseTabs.Root>\n );\n}\n\n// ---------------------------------------------------------------- Accordion / Collapsible\nexport interface AccordionItem {\n value: string;\n title: React.ReactNode;\n content: React.ReactNode;\n}\nexport function Accordion({ items, variant, multiple, defaultValue, className }: { items: AccordionItem[]; variant?: 'line' | 'card'; multiple?: boolean; defaultValue?: string[]; className?: string }) {\n return (\n <BaseAccordion.Root className={cn('u-accordion', className)} data-variant={variant} multiple={multiple} defaultValue={defaultValue}>\n {items.map((it) => (\n <BaseAccordion.Item key={it.value} value={it.value} className=\"u-accordion-item\">\n <BaseAccordion.Header className=\"u-accordion-header\">\n <BaseAccordion.Trigger className=\"u-accordion-trigger\">\n {it.title}\n <ChevronDown />\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n <BaseAccordion.Panel className=\"u-accordion-panel\">\n <div className=\"u-accordion-content\">{it.content}</div>\n </BaseAccordion.Panel>\n </BaseAccordion.Item>\n ))}\n </BaseAccordion.Root>\n );\n}\nexport const Collapsible = BaseCollapsible.Root;\nexport const CollapsibleTrigger = BaseCollapsible.Trigger;\nexport function CollapsiblePanel({ className, ...props }: React.ComponentProps<typeof BaseCollapsible.Panel>) {\n return <BaseCollapsible.Panel className={cn('u-collapsible-panel', className)} {...props} />;\n}\n\n// ---------------------------------------------------------------- Progress / ProgressRing\nexport type Tone = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\nexport interface ProgressProps {\n value: number | null;\n max?: number;\n label?: React.ReactNode;\n showValue?: boolean;\n tone?: Tone;\n size?: 'sm' | 'md';\n className?: string;\n format?: (value: number, max: number) => string;\n}\nexport function Progress({ value, max = 100, label, showValue = Boolean(label), tone, size, className, format }: ProgressProps) {\n return (\n <BaseProgress.Root value={value} max={max} className={cn('u-progress', className)}>\n {label && <BaseProgress.Label className=\"u-progress-label\">{label}</BaseProgress.Label>}\n {showValue && <span className=\"u-progress-value\">{value == null ? '' : format ? format(value, max) : `${Math.round((value / max) * 100)}%`}</span>}\n <BaseProgress.Track className=\"u-progress-track\" data-size={size}>\n <BaseProgress.Indicator className=\"u-progress-indicator\" data-tone={tone} />\n </BaseProgress.Track>\n </BaseProgress.Root>\n );\n}\n\n/** Progres melingkar, mis. kelengkapan profil, IPK terhadap 4.00, kehadiran. */\nexport function ProgressRing({ value, max = 100, size = 64, thickness = 6, tone, label, className }: { value: number; max?: number; size?: number; thickness?: number; tone?: Tone; label?: React.ReactNode; className?: string }) {\n const r = (size - thickness) / 2;\n const c = 2 * Math.PI * r;\n const pct = Math.max(0, Math.min(1, value / max));\n const color = tone ? `var(--u-${tone === 'danger' ? 'danger' : tone})` : undefined;\n return (\n <div className={cn('u-progress-ring', className)} role=\"progressbar\" aria-valuenow={value} aria-valuemax={max} aria-valuemin={0} style={{ width: size, height: size, ...(color ? ({ '--u-progress-color': color } as React.CSSProperties) : {}) }}>\n <svg width={size} height={size}>\n <circle className=\"u-ring-track\" cx={size / 2} cy={size / 2} r={r} fill=\"none\" strokeWidth={thickness} />\n <circle className=\"u-ring-indicator\" cx={size / 2} cy={size / 2} r={r} fill=\"none\" strokeWidth={thickness} strokeDasharray={c} strokeDashoffset={c * (1 - pct)} />\n </svg>\n <span className=\"u-progress-ring-label\" style={{ fontSize: size * 0.24 }}>\n {label ?? `${Math.round(pct * 100)}%`}\n </span>\n </div>\n );\n}\n\n// ---------------------------------------------------------------- Pagination\nfunction pageList(page: number, total: number): Array<number | '…'> {\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n const set = new Set([1, total, page - 1, page, page + 1]);\n if (page <= 3) [2, 3, 4].forEach((p) => set.add(p));\n if (page >= total - 2) [total - 3, total - 2, total - 1].forEach((p) => set.add(p));\n const sorted = [...set].filter((p) => p >= 1 && p <= total).sort((a, b) => a - b);\n const out: Array<number | '…'> = [];\n sorted.forEach((p, i) => {\n if (i && p - sorted[i - 1] > 1) out.push('…');\n out.push(p);\n });\n return out;\n}\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n /** Total data, untuk teks \"1–10 dari 245\". */\n total?: number;\n perPage?: number;\n className?: string;\n /** Tampilan ringkas: hanya tombol sebelum/berikut. */\n compact?: boolean;\n}\nexport function Pagination({ page, totalPages, onPageChange, total, perPage, className, compact }: PaginationProps) {\n const from = total != null && perPage ? (page - 1) * perPage + 1 : null;\n const to = total != null && perPage ? Math.min(total, page * perPage) : null;\n return (\n <nav className={cn('u-pagination', className)} aria-label=\"Halaman\">\n <span className=\"u-pagination-info\">\n {total != null && from != null ? (\n total === 0 ? (\n 'Tidak ada data'\n ) : (\n <>\n <strong>\n {from.toLocaleString('id-ID')}–{to!.toLocaleString('id-ID')}\n </strong>{' '}\n dari <strong>{total.toLocaleString('id-ID')}</strong>\n </>\n )\n ) : (\n <>\n Halaman <strong>{page}</strong> dari <strong>{Math.max(1, totalPages)}</strong>\n </>\n )}\n </span>\n <ul className=\"u-pagination-list\">\n <li>\n <button type=\"button\" className=\"u-pagination-item\" disabled={page <= 1} onClick={() => onPageChange(page - 1)} aria-label=\"Halaman sebelumnya\">\n <ChevronLeft />\n </button>\n </li>\n {!compact &&\n pageList(page, Math.max(1, totalPages)).map((p, i) =>\n p === '…' ? (\n <li key={`e${i}`} className=\"u-pagination-ellipsis\" aria-hidden>\n …\n </li>\n ) : (\n <li key={p}>\n <button type=\"button\" className=\"u-pagination-item\" aria-current={p === page ? 'page' : undefined} onClick={() => onPageChange(p)}>\n {p}\n </button>\n </li>\n ),\n )}\n <li>\n <button type=\"button\" className=\"u-pagination-item\" disabled={page >= totalPages} onClick={() => onPageChange(page + 1)} aria-label=\"Halaman berikutnya\">\n <ChevronRight />\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n\n// ---------------------------------------------------------------- Breadcrumb\nexport function Breadcrumb({ items, className }: { items: Array<{ label: React.ReactNode; href?: string; onClick?: () => void }>; className?: string }) {\n return (\n <nav aria-label=\"Breadcrumb\">\n <ol className={cn('u-breadcrumb', className)}>\n {items.map((it, i) => {\n const last = i === items.length - 1;\n return (\n <React.Fragment key={i}>\n <li>\n {last ? (\n <span aria-current=\"page\">{it.label}</span>\n ) : it.href ? (\n <a href={it.href} onClick={it.onClick}>\n {it.label}\n </a>\n ) : (\n <span>{it.label}</span>\n )}\n </li>\n {!last && (\n <li aria-hidden>\n <ChevronRight />\n </li>\n )}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n );\n}\n\n// ---------------------------------------------------------------- Empty\nexport function Empty({ icon, title, description, actions, bordered, className }: { icon?: React.ReactNode; title: React.ReactNode; description?: React.ReactNode; actions?: React.ReactNode; bordered?: boolean; className?: string }) {\n return (\n <div className={cn('u-empty', className)} data-bordered={dataFlag(bordered)}>\n {icon && <span className=\"u-empty-icon\">{icon}</span>}\n <p className=\"u-empty-title\">{title}</p>\n {description && <p className=\"u-empty-description\">{description}</p>}\n {actions && <div className=\"u-empty-actions\">{actions}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------- Table (primitif)\nexport function TableContainer({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={cn('u-table-wrap', className)} {...props} />;\n}\nexport function Table({ className, density, striped, ...props }: { density?: 'comfortable' | 'compact'; striped?: boolean } & React.ComponentProps<'table'>) {\n return <table className={cn('u-table', className)} data-density={density} data-striped={dataFlag(striped)} {...props} />;\n}\nexport function SortButton({ direction, onClick, children }: { direction?: 'asc' | 'desc' | null; onClick: () => void; children: React.ReactNode }) {\n return (\n <button type=\"button\" className=\"u-table-sort\" data-sorted={dataFlag(Boolean(direction))} onClick={onClick}>\n {children}\n {direction === 'asc' ? <ArrowUp /> : direction === 'desc' ? <ArrowDown /> : <ArrowUpDown style={{ opacity: 0.5 }} />}\n </button>\n );\n}\n/** Sel utama: avatar/ikon + judul + subjudul. */\nexport function CellPrimary({ media, title, subtitle }: { media?: React.ReactNode; title: React.ReactNode; subtitle?: React.ReactNode }) {\n return (\n <div className=\"u-cell-primary\">\n {media}\n <div style={{ minWidth: 0 }}>\n <span className=\"u-cell-title\">{title}</span>\n {subtitle && <span className=\"u-cell-subtitle\">{subtitle}</span>}\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------- ScrollArea\nexport function ScrollArea({ className, style, maxHeight, children }: { className?: string; style?: React.CSSProperties; maxHeight?: number | string; children: React.ReactNode }) {\n return (\n <BaseScrollArea.Root className={cn('u-scroll-area', className)} style={style}>\n <BaseScrollArea.Viewport className=\"u-scroll-viewport\" style={{ maxHeight }}>\n {children}\n </BaseScrollArea.Viewport>\n <BaseScrollArea.Scrollbar className=\"u-scrollbar\" orientation=\"vertical\">\n <BaseScrollArea.Thumb className=\"u-scroll-thumb\" />\n </BaseScrollArea.Scrollbar>\n </BaseScrollArea.Root>\n );\n}\n\n// ---------------------------------------------------------------- Stepper\nexport interface StepItem {\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Tandai langkah bermasalah (mis. berkas ditolak). */\n error?: boolean;\n}\nexport interface StepperProps {\n steps: StepItem[];\n /** Indeks langkah aktif (mulai 0). */\n current: number;\n orientation?: 'horizontal' | 'vertical';\n /** Bila diisi, langkah yang sudah lewat bisa diklik. */\n onStepClick?: (index: number) => void;\n className?: string;\n}\nexport function Stepper({ steps, current, orientation = 'horizontal', onStepClick, className }: StepperProps) {\n return (\n <ol className={cn('u-stepper', className)} data-orientation={orientation} data-collapse=\"\">\n {steps.map((s, i) => {\n const state = s.error ? 'error' : i < current ? 'complete' : i === current ? 'current' : 'upcoming';\n const clickable = onStepClick && i < current;\n const Marker = clickable ? 'button' : 'span';\n return (\n <li key={i} className=\"u-step\" data-state={state} aria-current={i === current ? 'step' : undefined}>\n {i < steps.length - 1 && <span className=\"u-step-line\" aria-hidden />}\n <Marker className=\"u-step-marker\" {...(clickable ? { type: 'button' as const, onClick: () => onStepClick!(i), 'aria-label': `Kembali ke langkah ${i + 1}` } : {})}>\n {state === 'complete' ? <Check /> : state === 'error' ? <CircleAlert /> : i + 1}\n </Marker>\n <span className=\"u-step-text\">\n <span className=\"u-step-title\">{s.title}</span>\n {s.description && <span className=\"u-step-description\">{s.description}</span>}\n </span>\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ---------------------------------------------------------------- DescriptionList\nexport function DescriptionList({ items, className }: { items: Array<{ label: React.ReactNode; value: React.ReactNode }>; className?: string }) {\n return (\n <dl className={cn('u-dl', className)}>\n {items.map((it, i) => (\n <React.Fragment key={i}>\n <dt>{it.label}</dt>\n <dd>{it.value ?? '–'}</dd>\n </React.Fragment>\n ))}\n </dl>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { CalendarDays, ChevronLeft, ChevronRight, FileText, UploadCloud, X } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { formatBytes, formatDate } from '../lib/format';\nimport { Button } from './actions';\nimport { Popover } from './overlays';\n\n// ---------------------------------------------------------------- utilitas tanggal (tanpa dependensi)\nexport const toISODate = (d: Date) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;\nexport const parseISODate = (s: string) => {\n const [y, m, d] = s.slice(0, 10).split('-').map(Number);\n return new Date(y, m - 1, d);\n};\nconst sameDay = (a: Date, b: Date) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\n/** 42 sel (6 minggu) dimulai Senin. */\nexport function monthMatrix(year: number, month: number): Date[] {\n const first = new Date(year, month, 1);\n const offset = (first.getDay() + 6) % 7;\n return Array.from({ length: 42 }, (_, i) => new Date(year, month, 1 - offset + i));\n}\nconst WEEKDAYS = ['Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab', 'Min'];\n\nexport interface CalendarMarker {\n /** Warna titik (variabel CSS atau warna). */\n color?: string;\n}\n\nexport interface CalendarProps {\n value?: Date | null;\n onValueChange?: (date: Date) => void;\n /** Rentang terpilih (mode rentang). */\n range?: { from: Date | null; to: Date | null };\n onRangeChange?: (range: { from: Date | null; to: Date | null }) => void;\n /** Bulan yang ditampilkan (terkendali). */\n month?: Date;\n onMonthChange?: (month: Date) => void;\n /** Titik penanda per tanggal ISO, mis. { '2026-11-17': [{ color: 'var(--u-danger)' }] }. */\n markers?: Record<string, CalendarMarker[]>;\n min?: Date;\n max?: Date;\n isDisabled?: (date: Date) => boolean;\n bordered?: boolean;\n /** Ukuran sel dalam px (bawaan 36). */\n cellSize?: number;\n className?: string;\n /** Sabtu/Minggu ditandai merah. */\n highlightWeekend?: boolean;\n}\n\n/** Kalender bulanan dengan navigasi keyboard, penanda agenda, dan mode rentang. */\nexport function Calendar({ value, onValueChange, range, onRangeChange, month, onMonthChange, markers, min, max, isDisabled, bordered, cellSize, className, highlightWeekend = true }: CalendarProps) {\n const today = React.useMemo(() => new Date(), []);\n const [innerMonth, setInnerMonth] = React.useState(() => month ?? value ?? range?.from ?? today);\n const view = month ?? innerMonth;\n const [focus, setFocus] = React.useState<Date>(value ?? range?.from ?? today);\n const gridRef = React.useRef<HTMLDivElement>(null);\n const setView = (d: Date) => {\n const m = new Date(d.getFullYear(), d.getMonth(), 1);\n setInnerMonth(m);\n onMonthChange?.(m);\n };\n const days = monthMatrix(view.getFullYear(), view.getMonth());\n const title = new Intl.DateTimeFormat('id-ID', { month: 'long', year: 'numeric' }).format(view);\n const disabled = (d: Date) => (min && d < new Date(min.getFullYear(), min.getMonth(), min.getDate())) || (max && d > max) || isDisabled?.(d) || false;\n\n const pick = (d: Date) => {\n if (disabled(d)) return;\n setFocus(d);\n if (onRangeChange) {\n if (!range?.from || range.to) onRangeChange({ from: d, to: null });\n else onRangeChange(d < range.from ? { from: d, to: range.from } : { from: range.from, to: d });\n } else onValueChange?.(d);\n if (d.getMonth() !== view.getMonth()) setView(d);\n };\n\n const move = (deltaDays: number) => {\n const n = new Date(focus.getFullYear(), focus.getMonth(), focus.getDate() + deltaDays);\n setFocus(n);\n if (n.getMonth() !== view.getMonth() || n.getFullYear() !== view.getFullYear()) setView(n);\n };\n React.useEffect(() => {\n const el = gridRef.current?.querySelector<HTMLButtonElement>(`[data-date=\"${toISODate(focus)}\"]`);\n if (el && gridRef.current?.contains(document.activeElement)) el.focus();\n }, [focus]);\n\n return (\n <div className={cn('u-calendar', className)} data-bordered={dataFlag(bordered)} style={cellSize ? ({ '--u-cal-cell': `${cellSize}px` } as React.CSSProperties) : undefined}>\n <div className=\"u-calendar-header\">\n <span className=\"u-calendar-title\" aria-live=\"polite\">\n {title}\n </span>\n <div className=\"u-calendar-nav\">\n <Button variant=\"ghost\" size=\"xs\" iconOnly aria-label=\"Bulan sebelumnya\" onClick={() => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1))}>\n <ChevronLeft />\n </Button>\n <Button variant=\"ghost\" size=\"xs\" iconOnly aria-label=\"Bulan berikutnya\" onClick={() => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1))}>\n <ChevronRight />\n </Button>\n </div>\n </div>\n <div\n ref={gridRef}\n className=\"u-calendar-grid\"\n role=\"grid\"\n aria-label={title}\n onKeyDown={(e) => {\n const map: Record<string, number> = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };\n if (e.key in map) {\n e.preventDefault();\n move(map[e.key]);\n } else if (e.key === 'PageUp' || e.key === 'PageDown') {\n e.preventDefault();\n const n = new Date(focus.getFullYear(), focus.getMonth() + (e.key === 'PageUp' ? -1 : 1), focus.getDate());\n setFocus(n);\n setView(n);\n }\n }}\n >\n {WEEKDAYS.map((w) => (\n <span key={w} className=\"u-calendar-weekday\" role=\"columnheader\">\n {w}\n </span>\n ))}\n {days.map((d) => {\n const iso = toISODate(d);\n const outside = d.getMonth() !== view.getMonth();\n const selected = (value && sameDay(d, value)) || (range?.from && sameDay(d, range.from)) || (range?.to && sameDay(d, range.to));\n const inRange = range?.from && range?.to && d > range.from && d < range.to;\n const weekend = highlightWeekend && (d.getDay() === 0 || d.getDay() === 6);\n const m = markers?.[iso];\n return (\n <button\n key={iso}\n type=\"button\"\n role=\"gridcell\"\n className=\"u-calendar-day\"\n data-date={iso}\n data-outside={dataFlag(outside)}\n data-today={dataFlag(sameDay(d, today))}\n data-selected={dataFlag(Boolean(selected))}\n data-in-range={dataFlag(Boolean(inRange))}\n data-weekend={dataFlag(weekend)}\n aria-selected={Boolean(selected)}\n aria-label={formatDate(d, 'full') + (m?.length ? `, ${m.length} agenda` : '')}\n tabIndex={sameDay(d, focus) ? 0 : -1}\n disabled={disabled(d)}\n onClick={() => pick(d)}\n >\n {d.getDate()}\n {m && m.length > 0 && (\n <span className=\"u-calendar-dots\" aria-hidden>\n {m.slice(0, 3).map((mk, i) => (\n <span key={i} style={mk.color ? ({ '--u-dot': mk.color } as React.CSSProperties) : undefined} />\n ))}\n </span>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------- DatePicker\nexport interface DatePickerProps {\n value?: Date | null;\n onValueChange?: (date: Date | null) => void;\n placeholder?: string;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n className?: string;\n id?: string;\n}\nexport function DatePicker({ value, onValueChange, placeholder = 'Pilih tanggal', min, max, disabled, className, id }: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n return (\n <Popover\n open={open}\n onOpenChange={setOpen}\n align=\"start\"\n width=\"auto\"\n className=\"u-datepicker-popup\"\n trigger={\n <button type=\"button\" id={id} className={cn('u-select-trigger', className)} disabled={disabled} data-disabled={dataFlag(disabled)}>\n <span className=\"u-select-value\" data-placeholder={value ? undefined : ''}>\n {value ? formatDate(value, 'long') : placeholder}\n </span>\n <span className=\"u-select-icon\">\n <CalendarDays />\n </span>\n </button>\n }\n >\n <Calendar\n value={value}\n min={min}\n max={max}\n onValueChange={(d) => {\n onValueChange?.(d);\n setOpen(false);\n }}\n />\n </Popover>\n );\n}\n\n// ---------------------------------------------------------------- Dropzone / unggah berkas\nexport interface UploadedFile {\n id: string;\n file?: File;\n name: string;\n size: number;\n /** 0–100 saat diunggah; undefined = selesai. */\n progress?: number;\n error?: string;\n url?: string;\n}\nexport interface DropzoneProps {\n onFiles: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n /** Batas ukuran per berkas (byte). Berkas lebih besar ditolak dengan pesan. */\n maxSize?: number;\n disabled?: boolean;\n title?: React.ReactNode;\n hint?: React.ReactNode;\n onReject?: (message: string) => void;\n className?: string;\n}\nexport function Dropzone({ onFiles, accept, multiple, maxSize, disabled, title, hint, onReject, className }: DropzoneProps) {\n const input = React.useRef<HTMLInputElement>(null);\n const [drag, setDrag] = React.useState(false);\n const handle = (list: FileList | null) => {\n if (!list || disabled) return;\n const files = [...list];\n const ok = files.filter((f) => !maxSize || f.size <= maxSize);\n if (ok.length < files.length) onReject?.(`Berkas melebihi batas ${formatBytes(maxSize!)}.`);\n if (ok.length) onFiles(multiple ? ok : ok.slice(0, 1));\n };\n return (\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={cn('u-dropzone', className)}\n data-dragging={dataFlag(drag)}\n data-disabled={dataFlag(disabled)}\n aria-disabled={disabled}\n onClick={() => input.current?.click()}\n onKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && (e.preventDefault(), input.current?.click())}\n onDragOver={(e) => {\n e.preventDefault();\n setDrag(true);\n }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDrag(false);\n handle(e.dataTransfer.files);\n }}\n >\n <span className=\"u-dropzone-icon\">\n <UploadCloud />\n </span>\n <span className=\"u-dropzone-title\">{title ?? <><span>Pilih berkas</span> atau seret ke sini</>}</span>\n <span className=\"u-dropzone-hint\">{hint ?? [accept?.replace(/\\./g, '').toUpperCase().replace(/,/g, ', '), maxSize && `maks. ${formatBytes(maxSize)}`].filter(Boolean).join(' · ')}</span>\n <input ref={input} type=\"file\" hidden accept={accept} multiple={multiple} onChange={(e) => (handle(e.target.files), (e.target.value = ''))} />\n </div>\n );\n}\n\nfunction fileKind(name: string): string {\n const ext = name.split('.').pop()?.toLowerCase() ?? '';\n if (ext === 'pdf') return 'pdf';\n if (['png', 'jpg', 'jpeg', 'webp', 'gif'].includes(ext)) return 'img';\n if (['doc', 'docx', 'odt'].includes(ext)) return 'doc';\n if (['xls', 'xlsx', 'csv'].includes(ext)) return 'xls';\n return 'file';\n}\nexport function FileList({ files, onRemove }: { files: UploadedFile[]; onRemove?: (id: string) => void }) {\n if (!files.length) return null;\n return (\n <ul className=\"u-file-list\">\n {files.map((f) => {\n const kind = fileKind(f.name);\n return (\n <li key={f.id} className=\"u-file-item\">\n <span className=\"u-file-icon\" data-type={kind}>\n {kind === 'file' ? <FileText size={16} /> : f.name.split('.').pop()!.toUpperCase().slice(0, 4)}\n </span>\n <span className=\"u-file-body\">\n <span className=\"u-file-name\">{f.url ? <a href={f.url} target=\"_blank\" rel=\"noreferrer\" style={{ color: 'inherit' }}>{f.name}</a> : f.name}</span>\n {f.progress != null ? (\n <span className=\"u-progress-track\" data-size=\"sm\">\n <span className=\"u-progress-indicator\" style={{ width: `${f.progress}%`, display: 'block' }} />\n </span>\n ) : (\n <span className=\"u-file-meta\" style={f.error ? { color: 'var(--u-danger-text)' } : undefined}>\n {f.error ?? formatBytes(f.size)}\n </span>\n )}\n </span>\n {onRemove && (\n <Button variant=\"ghost\" size=\"xs\" iconOnly aria-label={`Hapus ${f.name}`} onClick={() => onRemove(f.id)}>\n <X />\n </Button>\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { Check, Copy } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\n\n// ---------------------------------------------------------------- Pewarnaan sintaks ringan (tanpa dependensi)\nexport type CodeLanguage = 'json' | 'js' | 'ts' | 'jsx' | 'tsx' | 'bash' | 'shell' | 'curl' | 'python' | 'php' | 'kotlin' | 'scss' | 'css' | 'less' | 'html' | 'vue' | 'text';\n\ntype Tok = { t: string; c?: string };\n\nconst KEYWORDS: Record<string, string[]> = {\n js: 'const let var function return if else for while of in new await async import from export default class extends try catch finally throw typeof instanceof null undefined true false this =>'.split(' '),\n python: 'def return if elif else for while in import from as class try except finally raise with None True False and or not lambda async await print'.split(' '),\n php: 'function return if else foreach as new use namespace class public private protected static try catch throw null true false echo fn array'.split(' '),\n kotlin: 'fun val var return if else when for while in import package class object data private override null true false'.split(' '),\n bash: 'curl npm npx pnpm yarn composer php git cd export echo sudo'.split(' '),\n};\n\nfunction langFamily(lang: CodeLanguage): keyof typeof KEYWORDS | 'json' | 'css' | 'html' | 'text' {\n if (lang === 'ts' || lang === 'jsx' || lang === 'tsx' || lang === 'vue') return 'js';\n if (lang === 'shell' || lang === 'curl') return 'bash';\n if (lang === 'scss' || lang === 'less') return 'css';\n return lang as never;\n}\n\nexport function tokenize(code: string, lang: CodeLanguage): Tok[][] {\n const fam = langFamily(lang);\n const kw = new Set(KEYWORDS[fam as keyof typeof KEYWORDS] ?? []);\n const comment = fam === 'python' || fam === 'bash' ? /#[^\\n]*/y : fam === 'html' ? /<!--[\\s\\S]*?-->/y : /\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\//y;\n const rules: Array<[RegExp, string | ((m: string, rest: string) => string)]> = [\n [comment, 'comment'],\n [/\"(?:[^\"\\\\\\n]|\\\\.)*\"|'(?:[^'\\\\\\n]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`/y, (_m, rest) => (fam === 'json' && /^\\s*:/.test(rest) ? 'property' : 'string')],\n [/-?\\b\\d+(?:\\.\\d+)?\\b/y, 'number'],\n [/\\$[A-Za-z_][\\w]*|@[\\w-]+/y, 'variable'],\n [/--?[A-Za-z][\\w-]*/y, fam === 'bash' ? 'attr' : fam === 'css' ? 'property' : 'punct'],\n [/<\\/?[A-Za-z][\\w.-]*|\\/?>/y, fam === 'html' || fam === 'js' ? 'tag' : 'punct'],\n [/[A-Za-z_][\\w]*/y, (m, rest) => (kw.has(m) ? 'keyword' : /^\\s*\\(/.test(rest) ? 'function' : fam === 'js' && /^[A-Z]/.test(m) ? 'type' : fam === 'css' && /^\\s*:/.test(rest) ? 'property' : '')],\n [/\\s+/y, ''],\n [/[{}[\\]();,.:=+\\-*/<>!?&|%^~]/y, 'punct'],\n [/./y, ''],\n ];\n const lines: Tok[][] = [[]];\n let i = 0;\n while (i < code.length) {\n let matched = false;\n for (const [re, cls] of rules) {\n re.lastIndex = i;\n const m = re.exec(code);\n if (!m || !m[0]) continue;\n const text = m[0];\n const c = typeof cls === 'function' ? cls(text, code.slice(i + text.length, i + text.length + 3)) : cls;\n text.split('\\n').forEach((part, k) => {\n if (k > 0) lines.push([]);\n if (part) lines[lines.length - 1].push({ t: part, c: c || undefined });\n });\n i += text.length;\n matched = true;\n break;\n }\n if (!matched) i++;\n }\n return lines;\n}\n\n// ---------------------------------------------------------------- Salin ke papan klip\nexport function useCopy(timeout = 1600) {\n const [copied, setCopied] = React.useState(false);\n const copy = React.useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n const ta = document.createElement('textarea');\n ta.value = text;\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n ta.remove();\n }\n setCopied(true);\n setTimeout(() => setCopied(false), timeout);\n },\n [timeout],\n );\n return { copied, copy };\n}\n\nexport function CopyButton({ text, className, label = 'Salin' }: { text: string; className?: string; label?: string }) {\n const { copied, copy } = useCopy();\n return (\n <button type=\"button\" className={cn('u-code-copy', className)} onClick={() => copy(text)} aria-label={copied ? 'Tersalin' : label} title={copied ? 'Tersalin' : label} data-copied={dataFlag(copied)}>\n {copied ? <Check /> : <Copy />}\n </button>\n );\n}\n\n// ---------------------------------------------------------------- CodeBlock\nexport interface CodeSnippet {\n /** Label tab, mis. \"cURL\", \"JavaScript\". */\n label: string;\n language: CodeLanguage;\n code: string;\n /** Nama berkas yang ditampilkan di kepala blok (opsional). */\n filename?: string;\n}\n\nexport interface CodeBlockProps {\n /** Satu potongan kode... */\n code?: string;\n language?: CodeLanguage;\n filename?: string;\n /** ...atau beberapa tab (cURL / JavaScript / Python / JSON). */\n tabs?: CodeSnippet[];\n defaultTab?: number;\n lineNumbers?: boolean;\n /** Nomor baris yang disorot, mis. [2, 3]. */\n highlightLines?: number[];\n /** Hiasan tiga titik ala jendela. */\n windowControls?: boolean;\n /** Tinggi maksimum sebelum menggulir. */\n maxHeight?: number | string;\n /** Tema blok: 'dark' (bawaan, cocok untuk dokumentasi API) atau 'auto' mengikuti tema halaman. */\n theme?: 'dark' | 'auto';\n wrap?: boolean;\n className?: string;\n}\n\n/**\n * Blok kode dengan tab bahasa, nomor baris, pewarnaan sintaks, dan tombol salin.\n * Untuk dokumentasi API (contoh permintaan + jawaban), panduan instalasi, dan halaman pengembang.\n */\nexport function CodeBlock({ code, language = 'text', filename, tabs, defaultTab = 0, lineNumbers = true, highlightLines, windowControls = true, maxHeight, theme = 'dark', wrap, className }: CodeBlockProps) {\n const snippets: CodeSnippet[] = tabs ?? [{ label: filename ?? language.toUpperCase(), language, code: code ?? '', filename }];\n const [active, setActive] = React.useState(Math.min(defaultTab, snippets.length - 1));\n const cur = snippets[active];\n const text = cur.code.replace(/\\n$/, '');\n const lines = React.useMemo(() => tokenize(text, cur.language), [text, cur.language]);\n const hl = new Set(highlightLines);\n const tabId = React.useId();\n return (\n <div className={cn('u-code', className)} data-theme={theme === 'dark' ? 'code-dark' : undefined} data-wrap={dataFlag(wrap)}>\n <div className=\"u-code-header\">\n {windowControls && (\n <span className=\"u-code-dots\" aria-hidden>\n <span />\n <span />\n <span />\n </span>\n )}\n {tabs ? (\n <div className=\"u-code-tabs\" role=\"tablist\" aria-label=\"Bahasa\">\n {snippets.map((s, i) => (\n <button\n key={s.label}\n type=\"button\"\n role=\"tab\"\n id={`${tabId}-${i}`}\n aria-selected={i === active}\n tabIndex={i === active ? 0 : -1}\n className=\"u-code-tab\"\n onClick={() => setActive(i)}\n onKeyDown={(e) => {\n if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return;\n const n = (active + (e.key === 'ArrowRight' ? 1 : -1) + snippets.length) % snippets.length;\n setActive(n);\n (e.currentTarget.parentElement?.children[n] as HTMLElement | undefined)?.focus();\n }}\n >\n {s.label}\n </button>\n ))}\n </div>\n ) : (\n <span className=\"u-code-filename\">{cur.filename ?? cur.label}</span>\n )}\n <CopyButton text={text} />\n </div>\n <pre className=\"u-code-body\" style={{ maxHeight }} role={tabs ? 'tabpanel' : undefined} aria-labelledby={tabs ? `${tabId}-${active}` : undefined} tabIndex={0}>\n <code>\n {lines.map((line, i) => (\n <span key={i} className=\"u-code-line\" data-highlight={dataFlag(hl.has(i + 1))}>\n {lineNumbers && <span className=\"u-code-ln\" aria-hidden>{i + 1}</span>}\n <span className=\"u-code-text\">\n {line.length ? line.map((tok, k) => (tok.c ? <span key={k} className={`u-tok-${tok.c}`}>{tok.t}</span> : tok.t)) : ' '}\n </span>\n </span>\n ))}\n </code>\n </pre>\n </div>\n );\n}\n\n/** Kode sebaris, mis. `npm install unipo-ui`, dengan tombol salin opsional. */\nexport function InlineCode({ children, copyable, className }: { children: string; copyable?: boolean; className?: string }) {\n if (!copyable) return <code className={cn('u-inline-code', className)}>{children}</code>;\n return (\n <span className={cn('u-inline-code', className)} data-copyable=\"\">\n <code>{children}</code>\n <CopyButton text={children} />\n </span>\n );\n}\n","'use client';\nimport { cn } from '../lib/cn';\nimport { CopyButton } from './code';\n\n/**\n * Ambil ID permintaan (request_id) dari galat API: `requestId` di SiakadError (unipo-siakad-sdk),\n * `request_id` di jawaban JSON, atau `details.request_id`. Kosong bila tidak ada.\n */\nexport function requestIdDari(e: unknown): string | null {\n if (!e || typeof e !== 'object') return null;\n const g = e as { requestId?: unknown; request_id?: unknown; details?: { request_id?: unknown }; body?: { request_id?: unknown }; cause?: unknown };\n const id = g.requestId ?? g.request_id ?? g.details?.request_id ?? g.body?.request_id;\n if (typeof id === 'string' && id) return id;\n return g.cause && g.cause !== e ? requestIdDari(g.cause) : null;\n}\n\n/**\n * Baris \"Kode laporan: abc123 [salin]\" untuk ditaruh di bawah pesan galat. Tidak tampil apa pun bila\n * galat tidak membawa request_id. Pengguna cukup menyalin kode ini saat melapor ke Pustikom.\n */\nexport function KodeLaporan({ error, id, className }: { error?: unknown; /** Isi langsung bila sudah tahu ID-nya. */ id?: string | null; className?: string }) {\n const kode = id ?? requestIdDari(error);\n if (!kode) return null;\n return (\n <span className={cn('u-kode-laporan', className)}>\n <span>Kode laporan</span>\n <span className=\"u-kode-laporan-nilai\">\n <code>{kode}</code>\n <CopyButton text={kode} label=\"Salin kode laporan\" />\n </span>\n </span>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { NavigationMenu } from '@base-ui/react/navigation-menu';\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport { ArrowRight, ChevronDown, Menu as MenuIcon } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { Button } from './actions';\nimport { Avatar } from './display';\nimport { Dialog, Menu } from './overlays';\nimport type { SidebarUser } from './layout';\n\n// ================================================================ Tipe\nexport interface NavbarLink {\n key?: string;\n label: React.ReactNode;\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n /** Satu baris penjelasan di bawah label (dropdown dan mega menu). */\n description?: React.ReactNode;\n badge?: React.ReactNode;\n /** Buka di tab baru. */\n external?: boolean;\n}\n\nexport interface NavbarColumn {\n title?: React.ReactNode;\n items: NavbarLink[];\n}\n\nexport interface NavbarFeatured {\n eyebrow?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n href: string;\n /** Gambar sampul; tanpa gambar dipakai latar warna primer. */\n image?: string;\n cta?: React.ReactNode;\n}\n\nexport interface NavbarMenu {\n /** Kunci unik; dicocokkan dengan `activeKey`. */\n key: string;\n label: React.ReactNode;\n href?: string;\n onClick?: () => void;\n /** Dropdown satu kolom. */\n items?: NavbarLink[];\n /** Mega menu: beberapa kolom berjudul. */\n columns?: NavbarColumn[];\n /** Kartu sorotan di kanan mega menu (berita, pendaftaran dibuka, dll.). */\n featured?: NavbarFeatured;\n /** Baris bawah panel, mis. tautan \"Semua program studi\". */\n footer?: React.ReactNode;\n external?: boolean;\n}\n\nexport interface NavbarProps {\n /** Logo + nama aplikasi (<AppLogo />, <UnipoAppLogo />, atau <LogoSitus /> dari unipo-ui/siakad). */\n brand: React.ReactNode;\n /** Tujuan klik logo (bawaan \"/\"). */\n brandHref?: string;\n menus: NavbarMenu[];\n activeKey?: string;\n /** Tombol di kanan, mis. \"Masuk\" dan \"Daftar\". */\n actions?: React.ReactNode;\n /** Profil + menu pengguna di kanan (aplikasi yang sudah masuk). */\n user?: SidebarUser;\n /** Slot di antara menu dan aksi, mis. <SearchTrigger />. */\n search?: React.ReactNode;\n /** Pita tipis di atas navbar: kontak, bahasa, tautan cepat. */\n topbar?: React.ReactNode;\n /**\n * app (bawaan): latar solid, garis bawah, cocok untuk aplikasi.\n * portal: lebih tinggi; dengan `transparent` tembus pandang di atas hero lalu solid saat digulir.\n * ringkas: tinggi 48px, teks kecil.\n */\n variant?: 'app' | 'portal' | 'ringkas';\n /** Tembus pandang sampai halaman digulir (untuk hero bergambar). */\n transparent?: boolean;\n /** Menempel di atas saat digulir (bawaan true). */\n sticky?: boolean;\n /** Letak menu: tengah atau setelah logo (bawaan). */\n align?: 'start' | 'center';\n /** Lebar maksimum isi (bawaan 80rem). */\n maxWidth?: string;\n /** Kunci menu yang terbuka di awal (untuk pratinjau atau tur). */\n defaultOpen?: string;\n /** Lebar navbar (px) saat berubah ke tombol menu ponsel (bawaan 960). */\n mobileBreakpoint?: number;\n /** Renderer tautan kustom, mis. <Link> Next.js/React Router. */\n renderLink?: (link: { href: string; external?: boolean }, props: React.AnchorHTMLAttributes<HTMLAnchorElement> & { children: React.ReactNode }) => React.ReactElement;\n className?: string;\n}\n\n// ================================================================ Utilitas\nfunction useScrolled(on: boolean, threshold = 8) {\n const [s, setS] = React.useState(false);\n React.useEffect(() => {\n if (!on) return;\n const f = () => setS(window.scrollY > threshold);\n f();\n window.addEventListener('scroll', f, { passive: true });\n return () => window.removeEventListener('scroll', f);\n }, [on, threshold]);\n return s;\n}\n\n/** Lebar cukup bila header >= breakpoint dan menu tidak berdesakan (lebar yang dibutuhkan diingat saat masih lebar). */\nfunction useWide(ref: React.RefObject<HTMLElement | null>, px: number, versi: string) {\n const [m, setM] = React.useState(true);\n const butuh = React.useRef(0);\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n const f = () => {\n const bar = el.querySelector<HTMLElement>('.u-navbar-bar');\n const list = bar?.querySelector<HTMLElement>('.u-navbar-list');\n const w = el.getBoundingClientRect().width;\n if (bar && list) {\n // Lebar total yang dibutuhkan agar semua menu muat; disimpan untuk dipakai saat sudah mode ponsel.\n const cs = getComputedStyle(bar);\n const brand = bar.querySelector<HTMLElement>('.u-navbar-brand')?.offsetWidth ?? 0;\n const end = bar.querySelector<HTMLElement>('.u-navbar-end')?.scrollWidth ?? 0;\n butuh.current = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight) + brand + list.scrollWidth + end + 2 * (parseFloat(cs.columnGap) || 24) + 8;\n }\n setM(w >= px && w >= butuh.current);\n };\n f();\n const ro = new ResizeObserver(f);\n ro.observe(el);\n return () => ro.disconnect();\n }, [ref, px, versi]);\n return m;\n}\n\ntype RenderLink = NavbarProps['renderLink'];\nfunction Anchor({\n href,\n external,\n renderLink,\n ...props\n}: { href: string; external?: boolean; renderLink?: RenderLink } & React.AnchorHTMLAttributes<HTMLAnchorElement> & { children: React.ReactNode }) {\n const p = { ...props, href, ...(external ? { target: '_blank', rel: 'noopener noreferrer' } : {}) };\n return renderLink ? renderLink({ href, external }, p) : <a {...p} />;\n}\n\nconst hasPanel = (m: NavbarMenu) => Boolean(m.items?.length || m.columns?.length);\nconst columnsOf = (m: NavbarMenu): NavbarColumn[] => m.columns ?? (m.items ? [{ items: m.items }] : []);\n\nfunction LinkBody({ link }: { link: NavbarLink }) {\n return (\n <>\n {link.icon && <span className=\"u-navbar-link-icon\">{link.icon}</span>}\n <span className=\"u-navbar-link-text\">\n <span className=\"u-navbar-link-label\">\n {link.label}\n {link.badge != null && <span className=\"u-navbar-link-badge\">{link.badge}</span>}\n </span>\n {link.description && <span className=\"u-navbar-link-desc\">{link.description}</span>}\n </span>\n </>\n );\n}\n\nfunction PanelLink({ link, renderLink }: { link: NavbarLink; renderLink?: RenderLink }) {\n if (!link.href)\n return (\n <button type=\"button\" className=\"u-navbar-link\" onClick={link.onClick}>\n <LinkBody link={link} />\n </button>\n );\n return (\n <NavigationMenu.Link\n className=\"u-navbar-link\"\n render={(props) => (\n <Anchor {...(props as React.AnchorHTMLAttributes<HTMLAnchorElement>)} href={link.href!} external={link.external} renderLink={renderLink} onClick={link.onClick}>\n <LinkBody link={link} />\n </Anchor>\n )}\n />\n );\n}\n\nfunction Featured({ f, renderLink }: { f: NavbarFeatured; renderLink?: RenderLink }) {\n return (\n <Anchor href={f.href} renderLink={renderLink} className=\"u-navbar-featured\" data-image={dataFlag(Boolean(f.image))}>\n {f.image && <img src={f.image} alt=\"\" loading=\"lazy\" />}\n <span className=\"u-navbar-featured-body\">\n {f.eyebrow && <span className=\"u-navbar-featured-eyebrow\">{f.eyebrow}</span>}\n <b>{f.title}</b>\n {f.description && <span className=\"u-navbar-featured-desc\">{f.description}</span>}\n <span className=\"u-navbar-featured-cta\">\n {f.cta ?? 'Selengkapnya'} <ArrowRight aria-hidden />\n </span>\n </span>\n </Anchor>\n );\n}\n\nfunction Panel({ menu, renderLink }: { menu: NavbarMenu; renderLink?: RenderLink }) {\n const cols = columnsOf(menu);\n const mega = Boolean(menu.columns?.length) || Boolean(menu.featured);\n return (\n <div className=\"u-navbar-panel\" data-mega={dataFlag(mega)} style={mega ? ({ '--u-navbar-cols': cols.length } as React.CSSProperties) : undefined}>\n <div className=\"u-navbar-panel-main\">\n <div className=\"u-navbar-cols\">\n {cols.map((c, i) => (\n <div key={i} className=\"u-navbar-col\">\n {c.title && <p className=\"u-navbar-col-title\">{c.title}</p>}\n <ul>\n {c.items.map((l, j) => (\n <li key={l.key ?? j}>\n <PanelLink link={l} renderLink={renderLink} />\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n {menu.featured && <Featured f={menu.featured} renderLink={renderLink} />}\n </div>\n {menu.footer && <div className=\"u-navbar-panel-footer\">{menu.footer}</div>}\n </div>\n );\n}\n\nfunction UserMenu({ user }: { user: SidebarUser }) {\n return (\n <Menu\n align=\"end\"\n trigger={\n <button type=\"button\" className=\"u-navbar-user\" aria-label={`Menu ${user.name}`}>\n <Avatar name={user.name} src={user.avatar} size=\"sm\" />\n <span className=\"u-navbar-user-text\">\n <b>{user.name}</b>\n {user.subtitle && <small>{user.subtitle}</small>}\n </span>\n <ChevronDown aria-hidden />\n </button>\n }\n items={user.menu ?? []}\n />\n );\n}\n\n// ================================================================ Navbar ponsel\nfunction MobileNav({\n brand,\n menus,\n activeKey,\n actions,\n user,\n renderLink,\n open,\n onOpenChange,\n}: Pick<NavbarProps, 'brand' | 'menus' | 'activeKey' | 'actions' | 'user' | 'renderLink'> & { open: boolean; onOpenChange: (o: boolean) => void }) {\n const close = () => onOpenChange(false);\n const item = (l: NavbarLink | NavbarMenu, depth: number, k: React.Key) => {\n const active = activeKey != null && 'key' in l && l.key === activeKey;\n const cls = 'u-navbar-m-link';\n const body = (\n <>\n {'icon' in l && l.icon && <span className=\"u-navbar-link-icon\">{l.icon}</span>}\n <span className=\"u-navbar-link-label\">{l.label}</span>\n </>\n );\n return l.href ? (\n <Anchor\n key={k}\n href={l.href}\n external={l.external}\n renderLink={renderLink}\n className={cls}\n data-depth={depth}\n data-active={dataFlag(active)}\n aria-current={active ? 'page' : undefined}\n onClick={() => (l.onClick?.(), close())}\n >\n {body}\n </Anchor>\n ) : (\n <button key={k} type=\"button\" className={cls} data-depth={depth} onClick={() => (l.onClick?.(), close())}>\n {body}\n </button>\n );\n };\n return (\n <Dialog open={open} onOpenChange={onOpenChange} side=\"right\" title={brand} className=\"u-navbar-sheet\">\n <nav className=\"u-navbar-m\" aria-label=\"Menu utama\">\n {menus.map((m) =>\n hasPanel(m) ? (\n <BaseCollapsible.Root key={m.key} defaultOpen={activeKey != null && (m.key === activeKey || columnsOf(m).some((c) => c.items.some((l) => l.key === activeKey)))}>\n <BaseCollapsible.Trigger className=\"u-navbar-m-link\" data-depth={0}>\n <span className=\"u-navbar-link-label\">{m.label}</span>\n <ChevronDown className=\"u-navbar-m-chevron\" aria-hidden />\n </BaseCollapsible.Trigger>\n <BaseCollapsible.Panel className=\"u-collapsible-panel\">\n <div className=\"u-navbar-m-sub\">\n {columnsOf(m).map((c, i) => (\n <div key={i}>\n {c.title && <p className=\"u-navbar-col-title\">{c.title}</p>}\n {c.items.map((l, j) => item(l, 1, l.key ?? j))}\n </div>\n ))}\n {m.featured && item({ label: m.featured.title, href: m.featured.href }, 1, 'featured')}\n </div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n ) : (\n item(m, 0, m.key)\n ),\n )}\n </nav>\n {(actions || user) && (\n <div className=\"u-navbar-m-foot\">\n {user && (\n <div className=\"u-navbar-m-user\">\n <Avatar name={user.name} src={user.avatar} size=\"md\" />\n <span className=\"u-navbar-user-text\">\n <b>{user.name}</b>\n {user.subtitle && <small>{user.subtitle}</small>}\n </span>\n </div>\n )}\n {actions && <div className=\"u-navbar-m-actions\">{actions}</div>}\n </div>\n )}\n </Dialog>\n );\n}\n\n// ================================================================ Navbar\n/**\n * Navbar responsif untuk aplikasi dan portal: tautan, dropdown, mega menu (kolom + kartu sorotan),\n * slot pencarian, tombol aksi, menu pengguna, dan panel samping di ponsel.\n */\nexport function Navbar({\n brand,\n brandHref = '/',\n menus,\n activeKey,\n actions,\n user,\n search,\n topbar,\n variant = 'app',\n transparent,\n sticky = true,\n align = 'start',\n maxWidth,\n mobileBreakpoint = 960,\n defaultOpen,\n renderLink,\n className,\n}: NavbarProps) {\n const scrolled = useScrolled(sticky);\n const ref = React.useRef<HTMLElement>(null);\n const wide = useWide(ref, mobileBreakpoint, menus.map((m) => m.key).join('|'));\n const [open, setOpen] = React.useState(false);\n const childActive = (m: NavbarMenu) => activeKey != null && (m.key === activeKey || columnsOf(m).some((c) => c.items.some((l) => l.key === activeKey)));\n return (\n <header\n ref={ref}\n className={cn('u-navbar', className)}\n data-variant={variant}\n data-sticky={dataFlag(sticky)}\n data-transparent={dataFlag(Boolean(transparent) && !scrolled && !open)}\n data-scrolled={dataFlag(scrolled)}\n style={maxWidth ? ({ '--u-navbar-max': maxWidth } as React.CSSProperties) : undefined}\n >\n {topbar && wide && (\n <div className=\"u-navbar-topbar\">\n <div className=\"u-navbar-inner\">{topbar}</div>\n </div>\n )}\n <div className=\"u-navbar-inner u-navbar-bar\" data-align={align}>\n <Anchor href={brandHref} renderLink={renderLink} className=\"u-navbar-brand\">\n {brand}\n </Anchor>\n {wide ? (\n <NavigationMenu.Root className=\"u-navbar-nav\" aria-label=\"Menu utama\" defaultValue={defaultOpen}>\n <NavigationMenu.List className=\"u-navbar-list\">\n {menus.map((m) => (\n <NavigationMenu.Item key={m.key} value={m.key}>\n {hasPanel(m) ? (\n <>\n <NavigationMenu.Trigger className=\"u-navbar-item\" data-active={dataFlag(childActive(m))}>\n {m.label}\n <NavigationMenu.Icon className=\"u-navbar-chevron\">\n <ChevronDown />\n </NavigationMenu.Icon>\n </NavigationMenu.Trigger>\n <NavigationMenu.Content className=\"u-navbar-content\">\n <Panel menu={m} renderLink={renderLink} />\n </NavigationMenu.Content>\n </>\n ) : m.href ? (\n <NavigationMenu.Link\n className=\"u-navbar-item\"\n active={m.key === activeKey}\n render={(props) => (\n <Anchor\n {...(props as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n href={m.href!}\n external={m.external}\n renderLink={renderLink}\n data-active={dataFlag(m.key === activeKey)}\n aria-current={m.key === activeKey ? 'page' : undefined}\n >\n {m.label}\n </Anchor>\n )}\n />\n ) : (\n <button type=\"button\" className=\"u-navbar-item\" onClick={m.onClick}>\n {m.label}\n </button>\n )}\n </NavigationMenu.Item>\n ))}\n </NavigationMenu.List>\n <NavigationMenu.Portal>\n <NavigationMenu.Positioner className=\"u-navbar-positioner\" sideOffset={8} collisionPadding={16} collisionAvoidance={{ side: 'none' }}>\n <NavigationMenu.Popup className=\"u-navbar-popup\">\n <NavigationMenu.Viewport className=\"u-navbar-viewport\" />\n </NavigationMenu.Popup>\n </NavigationMenu.Positioner>\n </NavigationMenu.Portal>\n </NavigationMenu.Root>\n ) : (\n <span className=\"u-navbar-spacer\" />\n )}\n <div className=\"u-navbar-end\">\n {search}\n {wide && actions}\n {user && <UserMenu user={user} />}\n {!wide && (\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Buka menu\" aria-expanded={open} onClick={() => setOpen(true)}>\n <MenuIcon />\n </Button>\n )}\n </div>\n </div>\n {!wide && <MobileNav brand={brand} menus={menus} activeKey={activeKey} actions={actions} user={undefined} renderLink={renderLink} open={open} onOpenChange={setOpen} />}\n </header>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { MessageCircleQuestion, Search, SearchX } from 'lucide-react';\nimport { cn } from '../lib/cn';\nimport { Button, Skeleton } from './actions';\nimport { Accordion, Empty } from './display';\n\nexport interface FaqItem {\n id?: string | number;\n question: React.ReactNode;\n /** Teks biasa (baris baru dipertahankan) atau elemen. */\n answer: React.ReactNode;\n category?: string;\n /** Teks untuk pencarian bila question/answer berupa elemen. */\n searchText?: string;\n}\n\nexport interface FaqProps {\n items: FaqItem[];\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** Kotak cari (bawaan true bila lebih dari 5 pertanyaan). */\n searchable?: boolean;\n /** Pil kategori (bawaan true bila ada lebih dari satu kategori). */\n categories?: boolean;\n /** stack: judul di atas; split: judul + kategori di kiri, pertanyaan di kanan (halaman FAQ). */\n layout?: 'stack' | 'split';\n variant?: 'line' | 'card';\n /** Buka pertanyaan pertama. */\n openFirst?: boolean;\n loading?: boolean;\n /** Kotak \"Masih ada pertanyaan?\" di bawah. */\n contact?: { title?: React.ReactNode; description?: React.ReactNode; action: React.ReactNode };\n /** Pencarian di server: dipanggil saat kata kunci berubah (sudah ditunda 300 ms). Tanpa ini disaring di browser. */\n onSearch?: (q: string) => void;\n className?: string;\n}\n\nconst textOf = (n: React.ReactNode): string => (typeof n === 'string' || typeof n === 'number' ? String(n) : '');\nconst norm = (s: string) => s.toLocaleLowerCase('id').normalize('NFD').replace(/[̀-ͯ]/g, '');\n\n/** Tanya jawab: pencarian, pil kategori, akordeon, dan kotak kontak. Untuk portal, PMB, LMS, layanan akademik. */\nexport function Faq({ items, title, description, searchable, categories, layout = 'stack', variant = 'line', openFirst, loading, contact, onSearch, className }: FaqProps) {\n const [q, setQ] = React.useState('');\n const [kat, setKat] = React.useState<string | null>(null);\n const cats = React.useMemo(() => [...new Set(items.map((i) => i.category).filter(Boolean) as string[])], [items]);\n const showCats = (categories ?? cats.length > 1) && cats.length > 0;\n const showSearch = searchable ?? (items.length > 5 || Boolean(onSearch));\n\n React.useEffect(() => {\n if (!onSearch) return;\n const t = setTimeout(() => onSearch(q.trim()), 300);\n return () => clearTimeout(t);\n }, [q, onSearch]);\n\n const shown = items.filter((i) => {\n if (kat && i.category !== kat) return false;\n if (!q.trim() || onSearch) return true;\n const hay = norm(`${textOf(i.question)} ${textOf(i.answer)} ${i.searchText ?? ''}`);\n return norm(q.trim())\n .split(/\\s+/)\n .every((w) => hay.includes(w));\n });\n const count = (c: string | null) => (c ? items.filter((i) => i.category === c).length : items.length);\n\n const head = (title || description) && (\n <div className=\"u-faq-head\">\n {title && <h2>{title}</h2>}\n {description && <p>{description}</p>}\n </div>\n );\n const search = showSearch && (\n <label className=\"u-faq-search\">\n <Search aria-hidden />\n <input type=\"search\" value={q} onChange={(e) => setQ(e.target.value)} placeholder=\"Cari pertanyaan…\" aria-label=\"Cari pertanyaan\" />\n </label>\n );\n const pills = showCats && (\n <div className=\"u-faq-cats\" role=\"tablist\" aria-label=\"Kategori\">\n {[null, ...cats].map((c) => (\n <button key={c ?? '_semua'} type=\"button\" role=\"tab\" aria-selected={kat === c} onClick={() => setKat(c)}>\n {c ?? 'Semua'}\n <span>{count(c)}</span>\n </button>\n ))}\n </div>\n );\n const list = loading ? (\n <div className=\"u-faq-loading\">\n {Array.from({ length: 5 }, (_, i) => (\n <Skeleton key={i} style={{ height: 52 }} />\n ))}\n </div>\n ) : shown.length ? (\n <Accordion\n key={`${kat}|${q}`}\n variant={variant}\n defaultValue={openFirst ? [String(shown[0]!.id ?? 0)] : undefined}\n items={shown.map((i, idx) => ({\n value: String(i.id ?? idx),\n title: i.question,\n content: typeof i.answer === 'string' ? <p className=\"u-faq-answer\">{i.answer}</p> : i.answer,\n }))}\n />\n ) : (\n <Empty\n icon={<SearchX />}\n title={items.length ? 'Tidak ada pertanyaan yang cocok' : 'Belum ada tanya jawab'}\n description={items.length ? 'Coba kata lain atau pilih kategori Semua.' : undefined}\n actions={\n items.length ? (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setQ('');\n setKat(null);\n }}\n >\n Atur ulang\n </Button>\n ) : undefined\n }\n />\n );\n const kontak = contact && (\n <div className=\"u-faq-contact\">\n <span className=\"u-faq-contact-icon\" aria-hidden>\n <MessageCircleQuestion />\n </span>\n <div>\n <b>{contact.title ?? 'Masih ada pertanyaan?'}</b>\n {contact.description && <p>{contact.description}</p>}\n </div>\n <div className=\"u-faq-contact-action\">{contact.action}</div>\n </div>\n );\n\n if (layout === 'split')\n return (\n <section className={cn('u-faq', className)} data-layout=\"split\">\n <aside className=\"u-faq-side\">\n {head}\n {search}\n {pills}\n </aside>\n <div className=\"u-faq-main\">\n {list}\n {kontak}\n </div>\n </section>\n );\n return (\n <section className={cn('u-faq', className)} data-layout=\"stack\">\n {head}\n {(search || pills) && (\n <div className=\"u-faq-tools\">\n {search}\n {pills}\n </div>\n )}\n {list}\n {kontak}\n </section>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { cn } from '../lib/cn';\n\n// ================================================================ Tanda (mark) UNIPO\nexport type MarkShape = 'square' | 'circle' | 'shield' | 'plain';\nexport type LogoTone = 'brand' | 'mono' | 'inverse';\n\nexport interface UnipoMarkProps extends Omit<React.SVGProps<SVGSVGElement>, 'children'> {\n size?: number;\n shape?: MarkShape;\n tone?: LogoTone;\n /** Warna dasar; bawaan var(--u-primary). */\n color?: string;\n /** Warna aksen (palang atas); bawaan var(--u-secondary). */\n accent?: string;\n /** Glyph pengganti \"U\" (mis. ikon aplikasi). Koordinat 0–32. */\n glyph?: React.ReactNode;\n title?: string;\n}\n\n/**\n * Tanda grafis UNIPO: huruf U bergaya toga (palang emas di atas).\n * Sepenuhnya vektor dan mengikuti tema (--u-primary / --u-secondary). Ganti dengan logo resmi lewat <AppLogo src=\"…\" />.\n */\nexport function UnipoMark({ size = 32, shape = 'square', tone = 'brand', color, accent, glyph, title = 'UNIPO', ...props }: UnipoMarkProps) {\n const bg = tone === 'inverse' ? '#fff' : tone === 'mono' ? 'currentColor' : (color ?? 'var(--u-primary)');\n const fg = tone === 'inverse' ? (color ?? 'var(--u-primary)') : tone === 'mono' ? 'var(--u-background, #fff)' : '#fff';\n const acc = tone === 'brand' ? (accent ?? 'var(--u-secondary)') : fg;\n const plain = shape === 'plain';\n const stroke = plain ? bg : fg;\n return (\n <svg width={size} height={size} viewBox=\"0 0 32 32\" role=\"img\" aria-label={title} {...props}>\n {shape === 'square' && <rect width=\"32\" height=\"32\" rx=\"8.5\" fill={bg} />}\n {shape === 'circle' && <circle cx=\"16\" cy=\"16\" r=\"16\" fill={bg} />}\n {shape === 'shield' && <path d=\"M16 1.5 29 5.6v10.2c0 7.6-5.3 12.6-13 14.7C8.3 28.4 3 23.4 3 15.8V5.6Z\" fill={bg} />}\n {shape !== 'plain' && shape !== 'shield' && <path d=\"M0 8.5A8.5 8.5 0 0 1 8.5 0h15A8.5 8.5 0 0 1 32 8.5V11C21 9 11 9 0 13Z\" fill=\"#fff\" fillOpacity={tone === 'brand' ? 0.08 : 0} />}\n {glyph ?? (\n <>\n <path d=\"M9.5 9.5h13\" stroke={acc} strokeWidth=\"2.6\" strokeLinecap=\"round\" />\n <path d=\"M10.5 13.2v4.6a5.5 5.5 0 0 0 11 0v-4.6\" stroke={stroke} strokeWidth=\"3\" strokeLinecap=\"round\" fill=\"none\" />\n </>\n )}\n </svg>\n );\n}\n\n// ================================================================ Logo aplikasi\nexport interface AppLogoProps extends Omit<React.ComponentProps<'span'>, 'title'> {\n /** Nama utama, mis. \"SIAKAD\" atau \"UNIPO\". */\n name?: React.ReactNode;\n /** Baris kedua kecil, mis. \"Universitas Pohuwato\". */\n tagline?: React.ReactNode;\n /** Logo resmi (gambar). Bila diisi, menggantikan UnipoMark. */\n src?: string;\n /** horizontal (bawaan), stacked (tanda di atas), mark (tanda saja), wordmark (teks saja). */\n layout?: 'horizontal' | 'stacked' | 'mark' | 'wordmark';\n shape?: MarkShape;\n tone?: LogoTone;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Warna tanda khusus aplikasi (mis. PMB oranye, LMS hijau). */\n color?: string;\n glyph?: React.ReactNode;\n}\n\nconst MARK_SIZE = { sm: 24, md: 32, lg: 40, xl: 56 };\n\n/** Logo aplikasi UNIPO dengan banyak varian: tata letak, bentuk, nada warna, ukuran. */\nexport function AppLogo({ name = 'UNIPO', tagline, src, layout = 'horizontal', shape = 'square', tone = 'brand', size = 'md', color, glyph, className, ...props }: AppLogoProps) {\n const px = MARK_SIZE[size];\n const mark = src ? (\n <img src={src} alt=\"\" width={px} height={px} style={{ objectFit: 'contain' }} />\n ) : (\n <UnipoMark size={px} shape={shape} tone={tone} color={color} glyph={glyph} title={typeof name === 'string' ? name : 'UNIPO'} />\n );\n return (\n <span className={cn('u-app-logo', className)} data-layout={layout} data-size={size} data-tone={tone} {...props}>\n {layout !== 'wordmark' && mark}\n {layout !== 'mark' && (\n <span className=\"u-app-logo-text\">\n <span className=\"u-app-logo-name\">{name}</span>\n {tagline && <span className=\"u-app-logo-tagline\">{tagline}</span>}\n </span>\n )}\n </span>\n );\n}\n\n// ================================================================ Logo per aplikasi ekosistem UNIPO\nconst G = (d: string, extra?: React.ReactNode) => (\n <>\n <path d={d} stroke=\"#fff\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\n {extra}\n </>\n);\n\n/** Glyph khas tiap aplikasi (dalam kotak 32×32). */\nexport const APP_GLYPHS = {\n siakad: G('M9.5 9.5h13M10.5 13.2v4.6a5.5 5.5 0 0 0 11 0v-4.6'),\n pmb: G('M16 8.5v15M8.5 16h15', <circle cx=\"16\" cy=\"16\" r=\"10\" stroke=\"#fff\" strokeOpacity=\".35\" strokeWidth=\"1.6\" fill=\"none\" />),\n lms: G('M8 11.5 16 8l8 3.5-8 3.5Zm3.5 2v5c0 1.6 2 3 4.5 3s4.5-1.4 4.5-3v-5'),\n cbt: G('M9 9.5h14v10H9ZM13 23h6M16 19.5V23M12.5 14.5l2.2 2.2 4.3-4.3'),\n tracer: G('M8.5 22.5 13 17l3.5 3 7-8.5M19 11.5h4.5V16'),\n humas: G('M9 13.5v5l3 .5 1.5 4h2l-1-3.6L23 22V10l-11 3.5Z'),\n pustikom: G('M9 9h14v9H9ZM12.5 23h7M16 18v5'),\n sso: G('M12 15v-2.5a4 4 0 0 1 8 0V15M10.5 15h11v8h-11ZM16 18.3v1.7'),\n api: G('M12.5 10.5 8 16l4.5 5.5M19.5 10.5 24 16l-4.5 5.5M17.5 9l-3 14'),\n fakultas: G('M8 13 16 9l8 4M9.5 13v8M22.5 13v8M13 13.5v7M19 13.5v7M8 22.5h16'),\n alumni: G('M16 9a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7ZM9.5 23a6.5 6.5 0 0 1 13 0'),\n arsip: G('M8.5 10h15v4h-15ZM9.5 14v8.5h13V14M14 17.5h4'),\n} satisfies Record<string, React.ReactNode>;\n\nexport type UnipoApp = keyof typeof APP_GLYPHS;\n\n/** Warna bawaan tiap aplikasi; bisa ditimpa lewat prop `color`. */\nexport const APP_COLORS: Record<UnipoApp, string> = {\n siakad: 'var(--u-primary)',\n pmb: '#d9541e',\n lms: '#0f8a6a',\n cbt: '#6d4fd1',\n tracer: '#0e7490',\n humas: '#c2416b',\n pustikom: '#1f2937',\n sso: '#244ce6',\n api: '#0f172a',\n fakultas: '#8a5a12',\n alumni: '#7c3aed',\n arsip: '#5b6b7f',\n};\n\nconst APP_NAMES: Record<UnipoApp, string> = {\n siakad: 'SIAKAD',\n pmb: 'PMB',\n lms: 'E-Learning',\n cbt: 'CBT',\n tracer: 'Tracer Study',\n humas: 'Humas',\n pustikom: 'Pustikom',\n sso: 'SSO',\n api: 'API',\n fakultas: 'Fakultas',\n alumni: 'Alumni',\n arsip: 'Arsip',\n};\n\n/** Logo siap pakai untuk aplikasi di ekosistem UNIPO: <UnipoAppLogo app=\"pmb\" />. */\nexport function UnipoAppLogo({ app, tagline = 'Universitas Pohuwato', ...props }: { app: UnipoApp } & Omit<AppLogoProps, 'glyph'>) {\n return <AppLogo name={APP_NAMES[app]} tagline={tagline} glyph={APP_GLYPHS[app]} color={props.color ?? APP_COLORS[app]} {...props} />;\n}\n","'use client';\nimport * as React from 'react';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { Check, ListFilter, PlusCircle, Search, SlidersHorizontal, X } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { formatDate } from '../lib/format';\nimport { Badge, Button, Separator } from './actions';\nimport { Calendar } from './calendar';\nimport { Field, Input, InputGroup } from './forms';\nimport { Dialog, DialogClose } from './overlays';\n\n// ================================================================ Tipe\nexport interface FilterOption {\n value: string;\n label: React.ReactNode;\n /** Teks untuk pencarian di dalam daftar (bila label bukan string). */\n text?: string;\n icon?: React.ReactNode;\n /** Jumlah data dengan nilai ini (ditampilkan di kanan). */\n count?: number;\n}\n\nexport type FilterField =\n | { key: string; label: string; type: 'select'; options: FilterOption[]; icon?: React.ReactNode; searchable?: boolean }\n | { key: string; label: string; type: 'multi'; options: FilterOption[]; icon?: React.ReactNode; searchable?: boolean }\n | { key: string; label: string; type: 'date-range'; icon?: React.ReactNode; /** Nama parameter query [awal, akhir]; bawaan `<key>_dari`, `<key>_sampai`. */ params?: [string, string] }\n | { key: string; label: string; type: 'boolean'; icon?: React.ReactNode }\n | { key: string; label: string; type: 'custom'; icon?: React.ReactNode; render: (value: unknown, set: (v: unknown) => void) => React.ReactNode; format?: (value: unknown) => string };\n\nexport type FilterValues = Record<string, unknown>;\nexport interface DateRangeValue {\n from?: string;\n to?: string;\n}\n\nconst isEmpty = (v: unknown) => v == null || v === '' || v === false || (Array.isArray(v) && v.length === 0) || (typeof v === 'object' && !Array.isArray(v) && !Object.values(v as object).some(Boolean));\n\nfunction labelOf(f: FilterField, v: unknown): string {\n if (f.type === 'select') return String(f.options.find((o) => o.value === v)?.text ?? f.options.find((o) => o.value === v)?.label ?? v);\n if (f.type === 'multi') {\n const arr = v as string[];\n const first = f.options.find((o) => o.value === arr[0]);\n return arr.length > 1 ? `${arr.length} dipilih` : String(first?.text ?? first?.label ?? arr[0]);\n }\n if (f.type === 'date-range') {\n const r = v as DateRangeValue;\n return [r.from && formatDate(r.from, 'medium'), r.to && formatDate(r.to, 'medium')].filter(Boolean).join(' – ');\n }\n if (f.type === 'boolean') return 'Ya';\n return f.format ? f.format(v) : String(v);\n}\n\n// ================================================================ FacetFilter (tombol saringan bergaya pil)\nexport interface FacetFilterProps {\n field: FilterField;\n value: unknown;\n onChange: (value: unknown) => void;\n}\n\nfunction OptionList({ field, value, onChange, close }: FacetFilterProps & { close?: () => void }) {\n const [q, setQ] = React.useState('');\n if (field.type !== 'select' && field.type !== 'multi') return null;\n const multi = field.type === 'multi';\n const sel = new Set(multi ? ((value as string[]) ?? []) : value ? [value as string] : []);\n const opts = field.options.filter((o) => !q || String(o.text ?? o.label).toLowerCase().includes(q.toLowerCase()));\n const searchable = field.searchable ?? field.options.length > 7;\n return (\n <div className=\"u-facet-list\">\n {searchable && (\n <div className=\"u-facet-search\">\n <Search />\n <input autoFocus placeholder={`Cari ${field.label.toLowerCase()}…`} value={q} onChange={(e) => setQ(e.target.value)} aria-label={`Cari ${field.label}`} />\n </div>\n )}\n <div role=\"listbox\" aria-multiselectable={multi} aria-label={field.label} className=\"u-facet-options\">\n {opts.map((o) => {\n const on = sel.has(o.value);\n return (\n <button\n key={o.value}\n type=\"button\"\n role=\"option\"\n aria-selected={on}\n className=\"u-facet-option\"\n onClick={() => {\n if (multi) {\n const next = new Set(sel);\n if (on) next.delete(o.value);\n else next.add(o.value);\n onChange([...next]);\n } else {\n onChange(on ? undefined : o.value);\n close?.();\n }\n }}\n >\n <span className={multi ? 'u-facet-check' : 'u-facet-radio'} data-checked={dataFlag(on)}>\n {on && <Check />}\n </span>\n {o.icon}\n <span className=\"u-facet-label\">{o.label}</span>\n {o.count != null && <span className=\"u-facet-count\">{o.count.toLocaleString('id-ID')}</span>}\n </button>\n );\n })}\n {!opts.length && <p className=\"u-listbox-empty\">Tidak ada pilihan.</p>}\n </div>\n {sel.size > 0 && (\n <>\n <Separator />\n <button type=\"button\" className=\"u-facet-clear\" onClick={() => onChange(undefined)}>\n Hapus saringan\n </button>\n </>\n )}\n </div>\n );\n}\n\nfunction FieldEditor({ field, value, onChange, close }: FacetFilterProps & { close?: () => void }) {\n if (field.type === 'select' || field.type === 'multi') return <OptionList field={field} value={value} onChange={onChange} close={close} />;\n if (field.type === 'date-range') {\n const r = (value as DateRangeValue) ?? {};\n const toD = (s?: string) => (s ? new Date(s + 'T00:00:00') : null);\n const iso = (d: Date | null) => (d ? `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` : undefined);\n const today = new Date();\n const back = (n: number) => new Date(today.getFullYear(), today.getMonth(), today.getDate() - n);\n const presets: Array<[string, Date, Date]> = [\n ['Hari ini', today, today],\n ['7 hari terakhir', back(6), today],\n ['30 hari terakhir', back(29), today],\n ['Bulan ini', new Date(today.getFullYear(), today.getMonth(), 1), today],\n ['Bulan lalu', new Date(today.getFullYear(), today.getMonth() - 1, 1), new Date(today.getFullYear(), today.getMonth(), 0)],\n ['Tahun ini', new Date(today.getFullYear(), 0, 1), today],\n ];\n return (\n <div className=\"u-facet-date\">\n <div className=\"u-facet-presets\" role=\"group\" aria-label=\"Rentang cepat\">\n {presets.map(([label, from, to]) => {\n const on = r.from === iso(from) && r.to === iso(to);\n return (\n <button key={label} type=\"button\" className=\"u-facet-preset\" data-active={dataFlag(on)} aria-pressed={on} onClick={() => onChange({ from: iso(from), to: iso(to) })}>\n {label}\n </button>\n );\n })}\n {(r.from || r.to) && (\n <button type=\"button\" className=\"u-facet-clear\" onClick={() => onChange(undefined)}>\n Hapus rentang\n </button>\n )}\n </div>\n <Calendar key={r.from ?? 'kosong'} range={{ from: toD(r.from), to: toD(r.to) }} onRangeChange={(n) => onChange({ from: iso(n.from), to: iso(n.to) })} />\n </div>\n );\n }\n if (field.type === 'boolean') return null;\n return <div style={{ padding: '0.75rem' }}>{field.render(value, onChange)}</div>;\n}\n\n/** Tombol saringan pil (\"+ Status\", \"Status: Aktif, Cuti\") dengan daftar pilihan + jumlah, seperti tabel data modern. */\nexport function FacetFilter({ field, value, onChange }: FacetFilterProps) {\n const [open, setOpen] = React.useState(false);\n const active = !isEmpty(value);\n if (field.type === 'boolean') {\n return (\n <button type=\"button\" className=\"u-facet-trigger\" data-active={dataFlag(active)} aria-pressed={active} onClick={() => onChange(active ? undefined : true)}>\n {field.icon ?? <PlusCircle />}\n {field.label}\n </button>\n );\n }\n const multiValues = field.type === 'multi' && Array.isArray(value) ? (value as string[]) : [];\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <BasePopover.Trigger className=\"u-facet-trigger\" data-active={dataFlag(active)}>\n {field.icon ?? <PlusCircle />}\n {field.label}\n {active && (\n <>\n <span className=\"u-facet-divider\" aria-hidden />\n {field.type === 'multi' && multiValues.length > 2 ? (\n <Badge variant=\"primary\" shape=\"square\">\n {multiValues.length} dipilih\n </Badge>\n ) : field.type === 'multi' ? (\n multiValues.map((v) => (\n <Badge key={v} variant=\"primary\" shape=\"square\">\n {String(field.options.find((o) => o.value === v)?.text ?? field.options.find((o) => o.value === v)?.label ?? v)}\n </Badge>\n ))\n ) : (\n <Badge variant=\"primary\" shape=\"square\">\n {labelOf(field, value)}\n </Badge>\n )}\n </>\n )}\n </BasePopover.Trigger>\n <BasePopover.Portal>\n <BasePopover.Positioner className=\"u-popup-positioner\" align=\"start\" sideOffset={6}>\n <BasePopover.Popup className=\"u-popover u-facet-popup\" data-kind={field.type}>\n <FieldEditor field={field} value={value} onChange={onChange} close={() => setOpen(false)} />\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n </BasePopover.Root>\n );\n}\n\n// ================================================================ FilterBar\nexport interface FilterBarProps {\n fields: FilterField[];\n value: FilterValues;\n onValueChange: (value: FilterValues) => void;\n /** Kata kunci pencarian (disimpan di value[searchKey]). */\n search?: { placeholder?: string; key?: string } | false;\n /** Jumlah hasil, ditampilkan di kanan (\"245 mahasiswa\"). */\n resultCount?: number;\n resultLabel?: string;\n /** Konten tambahan di kanan (tombol ekspor, ganti tampilan). */\n actions?: React.ReactNode;\n /** Tampilkan chip saringan aktif di baris bawah (bawaan: true). */\n showChips?: boolean;\n className?: string;\n}\n\n/**\n * Bilah saringan responsif: kotak cari + tombol saringan pil di desktop, satu tombol \"Saring\" yang membuka panel di ponsel,\n * dan chip saringan aktif yang bisa dihapus satu per satu.\n */\nexport function FilterBar({ fields, value, onValueChange, search = {}, resultCount, resultLabel = 'data', actions, showChips = true, className }: FilterBarProps) {\n const searchKey = (search && search.key) || 'q';\n const set = (k: string, v: unknown) => {\n const next = { ...value };\n if (isEmpty(v)) delete next[k];\n else next[k] = v;\n onValueChange(next);\n };\n const activeFields = fields.filter((f) => !isEmpty(value[f.key]));\n const [q, setQ] = React.useState(String(value[searchKey] ?? ''));\n React.useEffect(() => setQ(String(value[searchKey] ?? '')), [value, searchKey]);\n React.useEffect(() => {\n const t = setTimeout(() => {\n if ((value[searchKey] ?? '') !== q) set(searchKey, q.trim() || undefined);\n }, 300);\n return () => clearTimeout(t);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [q]);\n const clearAll = () => onValueChange(search ? (value[searchKey] ? { [searchKey]: value[searchKey] } : {}) : {});\n\n return (\n <div className={cn('u-filter-bar', className)}>\n <div className=\"u-filter-row\">\n {search !== false && (\n <InputGroup start={<Search />} size=\"sm\" className=\"u-filter-search\" end={q ? <button type=\"button\" className=\"u-select-icon\" aria-label=\"Kosongkan pencarian\" onClick={() => setQ('')}><X /></button> : undefined}>\n <Input aria-label={search.placeholder ?? 'Cari'} placeholder={search.placeholder ?? 'Cari…'} value={q} onChange={(e) => setQ(e.target.value)} />\n </InputGroup>\n )}\n <div className=\"u-filter-facets\">\n {fields.map((f) => (\n <FacetFilter key={f.key} field={f} value={value[f.key]} onChange={(v) => set(f.key, v)} />\n ))}\n {activeFields.length > 0 && (\n <Button variant=\"ghost\" size=\"sm\" onClick={clearAll}>\n Atur ulang <X />\n </Button>\n )}\n </div>\n <Dialog\n side=\"bottom\"\n title=\"Saring data\"\n trigger={\n <Button variant=\"outline\" size=\"sm\" className=\"u-filter-mobile-trigger\">\n <SlidersHorizontal /> Saring\n {activeFields.length > 0 && <span className=\"u-nav-badge\">{activeFields.length}</span>}\n </Button>\n }\n footer={\n <>\n <Button variant=\"ghost\" onClick={clearAll}>\n Atur ulang\n </Button>\n <DialogClose render={<Button />}>Tampilkan {resultCount != null ? `${resultCount.toLocaleString('id-ID')} ${resultLabel}` : 'hasil'}</DialogClose>\n </>\n }\n >\n <div className=\"u-filter-sheet\">\n {fields.map((f) => (\n <Field key={f.key} label={f.label}>\n {f.type === 'boolean' ? (\n <FacetFilter field={f} value={value[f.key]} onChange={(v) => set(f.key, v)} />\n ) : (\n <div className=\"u-filter-sheet-box\">\n <FieldEditor field={f} value={value[f.key]} onChange={(v) => set(f.key, v)} />\n </div>\n )}\n </Field>\n ))}\n </div>\n </Dialog>\n {(resultCount != null || actions) && (\n <div className=\"u-filter-end\">\n {resultCount != null && (\n <span className=\"u-filter-count\">\n <strong>{resultCount.toLocaleString('id-ID')}</strong> {resultLabel}\n </span>\n )}\n {actions}\n </div>\n )}\n </div>\n {showChips && activeFields.length > 0 && (\n <div className=\"u-filter-chips\" aria-label=\"Saringan aktif\">\n <ListFilter aria-hidden />\n {activeFields.map((f) => (\n <span key={f.key} className=\"u-tag\" data-size=\"sm\">\n <span style={{ color: 'var(--u-muted-foreground)' }}>{f.label}:</span> {labelOf(f, value[f.key])}\n <button type=\"button\" className=\"u-tag-remove\" aria-label={`Hapus saringan ${f.label}`} onClick={() => set(f.key, undefined)}>\n <X size={12} />\n </button>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/** Simpan nilai saringan di URL (?status=A&prodi=55201) supaya bisa dibagikan dan bertahan saat dimuat ulang. */\nexport function useFilterParams(initial: FilterValues = {}): [FilterValues, (v: FilterValues) => void] {\n const read = (): FilterValues => {\n if (typeof window === 'undefined') return initial;\n const p = new URLSearchParams(window.location.search);\n const out: FilterValues = { ...initial };\n p.forEach((v, k) => {\n if (k.endsWith('[]')) out[k.slice(0, -2)] = [...((out[k.slice(0, -2)] as string[]) ?? []), v];\n else if (k.includes('.')) {\n const [a, b] = k.split('.');\n out[a] = { ...((out[a] as object) ?? {}), [b]: v };\n } else out[k] = v === 'true' ? true : v;\n });\n return out;\n };\n const [v, setV] = React.useState<FilterValues>(read);\n const update = (next: FilterValues) => {\n setV(next);\n const p = new URLSearchParams();\n for (const [k, val] of Object.entries(next)) {\n if (Array.isArray(val)) val.forEach((x) => p.append(`${k}[]`, String(x)));\n else if (val && typeof val === 'object') Object.entries(val).forEach(([a, b]) => b && p.set(`${k}.${a}`, String(b)));\n else if (val != null) p.set(k, String(val));\n }\n const qs = p.toString();\n window.history.replaceState(null, '', `${window.location.pathname}${qs ? '?' + qs : ''}${window.location.hash}`);\n };\n return [v, update];\n}\n\n/**\n * Ubah nilai saringan menjadi parameter query SDK/REST:\n * multi → \"a,b\", rentang tanggal → `<key>_dari` & `<key>_sampai` (atau `params` field), boolean → 1. Nilai kosong dibuang.\n * siakad.arsip.getSuratMasuk({ ...filterToQuery(values, fields), page })\n */\nexport function filterToQuery(values: FilterValues, fields?: FilterField[]): Record<string, string | number> {\n const out: Record<string, string | number> = {};\n for (const [k, v] of Object.entries(values)) {\n if (isEmpty(v)) continue;\n if (Array.isArray(v)) out[k] = v.join(',');\n else if (v === true) out[k] = 1;\n else if (typeof v === 'object') {\n const r = v as DateRangeValue;\n const f = fields?.find((x) => x.key === k);\n const [a, b] = f?.type === 'date-range' && f.params ? f.params : [`${k}_dari`, `${k}_sampai`];\n if (r.from) out[a] = r.from;\n if (r.to) out[b] = r.to;\n } else out[k] = v as string | number;\n }\n return out;\n}\n","'use client';\nimport * as React from 'react';\nimport { AlertTriangle, Columns3, Download, MoreHorizontal, Rows3, SearchX } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { Button, Skeleton } from './actions';\nimport { Checkbox } from './forms';\nimport { Select } from './select';\nimport { Menu, Popover, Tooltip, type MenuEntry } from './overlays';\nimport { Empty, Pagination, SortButton } from './display';\n\n// ================================================================ Tipe\nexport interface DataColumn<T> {\n /** Kunci unik; juga nama field bila `cell`/`value` tidak diisi, dan nilai `sort` yang dikirim ke server. */\n key: string;\n header: React.ReactNode;\n /** Isi sel. Bawaan: nilai field `key`. */\n cell?: (row: T, index: number) => React.ReactNode;\n /** Nilai mentah untuk urut lokal dan ekspor CSV. */\n value?: (row: T) => string | number | null | undefined;\n sortable?: boolean;\n align?: 'start' | 'center' | 'end';\n width?: number | string;\n /** Lebar seperlunya (kolom aksi, status). */\n shrink?: boolean;\n /** Bisa disembunyikan lewat menu Kolom (bawaan true). */\n hideable?: boolean;\n defaultHidden?: boolean;\n /**\n * Tampilan kartu di layar sempit: `title` (judul kartu), `subtitle`, `meta` (baris label: nilai), `badge` (pojok kanan),\n * `hidden`. Bawaan: kolom pertama `title`, sisanya `meta`.\n */\n mobile?: 'title' | 'subtitle' | 'meta' | 'badge' | 'hidden';\n /** Teks header untuk kartu ponsel dan ekspor bila `header` bukan string. */\n label?: string;\n}\n\nexport type SortState = { key: string; dir: 'asc' | 'desc' } | null;\n\nexport interface DataTableProps<T> {\n columns: DataColumn<T>[];\n rows: T[] | undefined;\n rowKey: (row: T) => string;\n /** Memuat: kerangka saat belum ada data, garis progres saat memuat ulang. */\n loading?: boolean;\n error?: unknown;\n onRetry?: () => void;\n /** Urutan. Tanpa `onSortChange` diurutkan di browser; dengan `onSortChange` diserahkan ke server. */\n sort?: SortState;\n defaultSort?: SortState;\n onSortChange?: (sort: SortState) => void;\n /** Halaman. Tanpa `onPageChange` dipotong di browser. */\n page?: number;\n perPage?: number;\n total?: number;\n onPageChange?: (page: number) => void;\n onPerPageChange?: (perPage: number) => void;\n perPageOptions?: number[];\n /** Pilih baris (kotak centang). */\n selectable?: boolean;\n selected?: string[];\n onSelectedChange?: (keys: string[]) => void;\n /** Aksi untuk baris terpilih, tampil di bilah atas tabel. */\n bulkActions?: (keys: string[], clear: () => void) => React.ReactNode;\n /** Menu ⋯ di ujung baris. */\n rowActions?: (row: T) => MenuEntry[];\n onRowClick?: (row: T) => void;\n /** Isi kiri bilah alat, biasanya <FilterBar /> atau judul. */\n toolbar?: React.ReactNode;\n /** Tombol tambahan di kanan bilah alat. */\n actions?: React.ReactNode;\n /** Menu pilih kolom (bawaan true). */\n columnToggle?: boolean;\n /** Tombol ubah kerapatan (bawaan true). */\n densityToggle?: boolean;\n defaultDensity?: 'comfortable' | 'compact';\n /** Unduh CSV dari baris yang tampil; isi string untuk nama berkas. */\n exportCsv?: boolean | string;\n /** Tampilan saat tidak ada data sama sekali. */\n empty?: { icon?: React.ReactNode; title: React.ReactNode; description?: React.ReactNode; action?: React.ReactNode };\n /** Tampilan saat saringan/pencarian tidak menemukan apa pun. Isi `filtered` agar dipakai. */\n emptyFiltered?: { title?: React.ReactNode; description?: React.ReactNode; onReset?: () => void };\n filtered?: boolean;\n /** Tampilan di bawah 640 px: kartu bertumpuk (bawaan) atau tabel geser. */\n mobile?: 'cards' | 'scroll';\n /** Tinggi maksimum isi tabel; header tetap menempel saat digulir. */\n maxHeight?: number | string;\n striped?: boolean;\n caption?: string;\n className?: string;\n /** Simpan pilihan kolom dan kerapatan di localStorage dengan kunci ini. */\n storageKey?: string;\n /** Ganti tabel dengan kisi kartu: fungsi penggambar satu kartu per baris. Halaman, saringan, dan keadaan kosong tetap sama. */\n grid?: (row: T, index: number) => React.ReactNode;\n /** Lebar minimum kartu di kisi (bawaan 15rem). */\n gridMin?: string;\n}\n\n// ================================================================ Utilitas\nconst raw = <T,>(c: DataColumn<T>, row: T): unknown => (c.value ? c.value(row) : (row as Record<string, unknown>)[c.key]);\nconst labelOf = <T,>(c: DataColumn<T>) => c.label ?? (typeof c.header === 'string' ? c.header : c.key);\n\nfunction compare(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return 1;\n if (b == null) return -1;\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n return String(a).localeCompare(String(b), 'id', { numeric: true, sensitivity: 'base' });\n}\n\nfunction toCsv<T>(cols: DataColumn<T>[], rows: T[]): string {\n const esc = (v: unknown) => {\n const s = v == null ? '' : String(v);\n return /[\",\\n;]/.test(s) ? `\"${s.replace(/\"/g, '\"\"')}\"` : s;\n };\n return [cols.map((c) => esc(labelOf(c))).join(','), ...rows.map((r) => cols.map((c) => esc(raw(c, r))).join(','))].join('\\n');\n}\n\nfunction useStored<V>(key: string | undefined, init: V): [V, (v: V) => void] {\n const [v, setV] = React.useState<V>(() => {\n if (!key || typeof window === 'undefined') return init;\n try {\n const s = window.localStorage.getItem(`unipo-table:${key}`);\n return s ? (JSON.parse(s) as V) : init;\n } catch {\n return init;\n }\n });\n const set = (n: V) => {\n setV(n);\n if (key)\n try {\n window.localStorage.setItem(`unipo-table:${key}`, JSON.stringify(n));\n } catch {\n /* penyimpanan diblokir */\n }\n };\n return [v, set];\n}\n\nfunction useMedia(q: string) {\n const [m, setM] = React.useState(() => typeof window !== 'undefined' && window.matchMedia(q).matches);\n React.useEffect(() => {\n const mq = window.matchMedia(q);\n const on = () => setM(mq.matches);\n on();\n mq.addEventListener('change', on);\n return () => mq.removeEventListener('change', on);\n }, [q]);\n return m;\n}\n\n// ================================================================ DataTable\n/**\n * Tabel data lengkap: urut, halaman, pilih baris + aksi massal, menu aksi per baris, pilih kolom, kerapatan,\n * ekspor CSV, kerangka memuat, keadaan kosong/galat, dan kartu bertumpuk di ponsel.\n * Bekerja di browser (data lokal) maupun server (isi onSortChange/onPageChange).\n */\nexport function DataTable<T>(props: DataTableProps<T>) {\n const {\n columns,\n rows,\n rowKey,\n loading,\n error,\n onRetry,\n sort: sortProp,\n defaultSort = null,\n onSortChange,\n page: pageProp,\n perPage: perPageProp,\n total: totalProp,\n onPageChange,\n onPerPageChange,\n perPageOptions = [10, 20, 50, 100],\n selectable,\n selected: selectedProp,\n onSelectedChange,\n bulkActions,\n rowActions,\n onRowClick,\n toolbar,\n actions,\n columnToggle = true,\n densityToggle = true,\n defaultDensity = 'comfortable',\n exportCsv,\n empty,\n emptyFiltered,\n filtered,\n mobile = 'cards',\n maxHeight,\n striped,\n caption,\n className,\n storageKey,\n grid,\n gridMin,\n } = props;\n\n // ---- urutan\n const [innerSort, setInnerSort] = React.useState<SortState>(defaultSort);\n const sort = sortProp !== undefined ? sortProp : innerSort;\n const serverSort = Boolean(onSortChange);\n const toggleSort = (key: string) => {\n const next: SortState = sort?.key !== key ? { key, dir: 'asc' } : sort.dir === 'asc' ? { key, dir: 'desc' } : null;\n setInnerSort(next);\n onSortChange?.(next);\n };\n\n // ---- halaman\n const serverPage = Boolean(onPageChange);\n const [innerPage, setInnerPage] = React.useState(1);\n const [innerPer, setInnerPer] = React.useState(perPageProp ?? 10);\n const page = pageProp ?? innerPage;\n const perPage = perPageProp ?? innerPer;\n\n // ---- kolom & kerapatan\n const [hidden, setHidden] = useStored<string[]>(\n storageKey && `${storageKey}:kolom`,\n columns.filter((c) => c.defaultHidden).map((c) => c.key),\n );\n const [density, setDensity] = useStored<'comfortable' | 'compact'>(storageKey && `${storageKey}:rapat`, defaultDensity);\n const visible = columns.filter((c) => !hidden.includes(c.key));\n\n // ---- data tampil\n const all = rows ?? [];\n const sorted = React.useMemo(() => {\n if (serverSort || !sort) return all;\n const col = columns.find((c) => c.key === sort.key);\n if (!col) return all;\n const out = [...all].sort((a, b) => compare(raw(col, a), raw(col, b)));\n return sort.dir === 'desc' ? out.reverse() : out;\n }, [all, sort, serverSort, columns]);\n const total = totalProp ?? sorted.length;\n const totalPages = Math.max(1, Math.ceil(total / perPage));\n const shown = serverPage ? sorted : sorted.slice((page - 1) * perPage, page * perPage);\n React.useEffect(() => {\n if (!serverPage && page > totalPages) setInnerPage(totalPages);\n }, [serverPage, page, totalPages]);\n\n // ---- pilihan\n const [innerSel, setInnerSel] = React.useState<string[]>([]);\n const selected = selectedProp ?? innerSel;\n const setSelected = (k: string[]) => {\n setInnerSel(k);\n onSelectedChange?.(k);\n };\n const shownKeys = shown.map(rowKey);\n const allOnPage = shownKeys.length > 0 && shownKeys.every((k) => selected.includes(k));\n const someOnPage = shownKeys.some((k) => selected.includes(k));\n const toggleAll = () => setSelected(allOnPage ? selected.filter((k) => !shownKeys.includes(k)) : [...new Set([...selected, ...shownKeys])]);\n const toggleRow = (k: string) => setSelected(selected.includes(k) ? selected.filter((x) => x !== k) : [...selected, k]);\n\n const isMobile = useMedia('(max-width: 639px)');\n const cards = Boolean(grid) || (mobile === 'cards' && isMobile);\n const firstLoad = loading && !rows;\n const hasError = Boolean(error) && !loading;\n const isEmpty = !firstLoad && !hasError && shown.length === 0;\n const colSpan = visible.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0);\n\n const downloadCsv = () => {\n const name = typeof exportCsv === 'string' ? exportCsv : 'data';\n const blob = new Blob(['' + toCsv(visible, sorted)], { type: 'text/csv;charset=utf-8' });\n const a = document.createElement('a');\n a.href = URL.createObjectURL(blob);\n a.download = name.endsWith('.csv') ? name : `${name}.csv`;\n a.click();\n URL.revokeObjectURL(a.href);\n };\n\n // ---- bilah alat\n const tools = (\n <>\n {actions}\n {densityToggle && !cards && (\n <Tooltip content={density === 'compact' ? 'Baris lega' : 'Baris rapat'}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n iconOnly\n aria-label=\"Ubah kerapatan baris\"\n aria-pressed={density === 'compact'}\n onClick={() => setDensity(density === 'compact' ? 'comfortable' : 'compact')}\n >\n <Rows3 />\n </Button>\n </Tooltip>\n )}\n {columnToggle && (\n <Popover\n align=\"end\"\n width={220}\n trigger={\n <Button variant=\"outline\" size=\"sm\" aria-label=\"Pilih kolom\">\n <Columns3 /> <span className=\"u-dt-hide-sm\">Kolom</span>\n </Button>\n }\n >\n <div className=\"u-dt-columns\" role=\"group\" aria-label=\"Kolom yang tampil\">\n {columns\n .filter((c) => c.hideable !== false)\n .map((c) => (\n <label key={c.key} className=\"u-dt-column-option\">\n <Checkbox\n checked={!hidden.includes(c.key)}\n onCheckedChange={(on) => setHidden(on ? hidden.filter((k) => k !== c.key) : [...hidden, c.key])}\n disabled={!hidden.includes(c.key) && visible.length === 1}\n />\n {labelOf(c)}\n </label>\n ))}\n </div>\n </Popover>\n )}\n {exportCsv && (\n <Tooltip content=\"Unduh CSV\">\n <Button variant=\"outline\" size=\"sm\" iconOnly aria-label=\"Unduh CSV\" onClick={downloadCsv} disabled={!sorted.length}>\n <Download />\n </Button>\n </Tooltip>\n )}\n </>\n );\n\n const bulk = selectable && selected.length > 0 && (\n <div className=\"u-dt-bulk\" role=\"region\" aria-label=\"Aksi untuk baris terpilih\">\n <Checkbox checked={allOnPage} indeterminate={!allOnPage && someOnPage} onCheckedChange={toggleAll} aria-label=\"Pilih semua di halaman ini\" />\n <span className=\"u-dt-bulk-count\">\n <strong>{selected.length.toLocaleString('id-ID')}</strong> dipilih\n </span>\n <Button variant=\"ghost\" size=\"xs\" onClick={() => setSelected([])}>\n Batalkan\n </Button>\n <div className=\"u-dt-bulk-actions\">{bulkActions?.(selected, () => setSelected([]))}</div>\n </div>\n );\n\n // ---- isi\n const stateRow = (content: React.ReactNode) =>\n cards ? (\n <div className=\"u-dt-state\">{content}</div>\n ) : (\n <tr className=\"u-dt-state-row\">\n <td colSpan={colSpan}>{content}</td>\n </tr>\n );\n\n let state: React.ReactNode = null;\n if (hasError)\n state = stateRow(\n <Empty\n icon={<AlertTriangle />}\n title=\"Data tidak bisa dimuat\"\n description={error instanceof Error ? error.message : typeof error === 'string' ? error : 'Periksa koneksi, lalu coba lagi.'}\n actions={\n onRetry && (\n <Button variant=\"outline\" size=\"sm\" onClick={onRetry}>\n Coba lagi\n </Button>\n )\n }\n />,\n );\n else if (isEmpty && filtered)\n state = stateRow(\n <Empty\n icon={<SearchX />}\n title={emptyFiltered?.title ?? 'Tidak ada yang cocok'}\n description={emptyFiltered?.description ?? 'Ubah kata kunci atau saringan untuk melihat data lain.'}\n actions={\n emptyFiltered?.onReset && (\n <Button variant=\"outline\" size=\"sm\" onClick={emptyFiltered.onReset}>\n Atur ulang saringan\n </Button>\n )\n }\n />,\n );\n else if (isEmpty) state = stateRow(<Empty icon={empty?.icon} title={empty?.title ?? 'Belum ada data'} description={empty?.description} actions={empty?.action} />);\n\n const skeletonCount = Math.min(perPage, 6);\n const menuCell = (row: T) =>\n rowActions && (\n <Menu\n items={rowActions(row)}\n trigger={\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Aksi baris\" onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n <MoreHorizontal />\n </Button>\n }\n />\n );\n\n const gridBody = grid && (\n <div className=\"u-dt-grid\" role=\"list\" aria-busy={loading || undefined} style={gridMin ? ({ '--u-dt-grid-min': gridMin } as React.CSSProperties) : undefined}>\n {firstLoad\n ? Array.from({ length: skeletonCount }, (_, i) => <Skeleton key={i} className=\"u-dt-grid-skeleton\" />)\n : (state ??\n shown.map((row, i) => {\n const k = rowKey(row);\n return (\n <div\n key={k}\n role=\"listitem\"\n className=\"u-dt-grid-item\"\n data-selected={dataFlag(selected.includes(k))}\n data-clickable={dataFlag(Boolean(onRowClick))}\n tabIndex={onRowClick ? 0 : undefined}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n onKeyDown={\n onRowClick\n ? (e) => {\n if (e.target === e.currentTarget && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onRowClick(row);\n }\n }\n : undefined\n }\n >\n {grid(row, i)}\n {(selectable || rowActions) && (\n <span className=\"u-dt-grid-tools\" onClick={(e) => e.stopPropagation()}>\n {selectable && <Checkbox checked={selected.includes(k)} onCheckedChange={() => toggleRow(k)} aria-label=\"Pilih baris\" />}\n {menuCell(row)}\n </span>\n )}\n </div>\n );\n }))}\n </div>\n );\n\n const body = gridBody ? (\n gridBody\n ) : cards ? (\n <div className=\"u-dt-cards\" role=\"list\" aria-busy={loading || undefined}>\n {firstLoad\n ? Array.from({ length: skeletonCount }, (_, i) => (\n <div key={i} className=\"u-dt-card\">\n <Skeleton style={{ height: 14, width: '60%' }} />\n <Skeleton style={{ height: 12, width: '40%', marginTop: 8 }} />\n </div>\n ))\n : (state ??\n shown.map((row, i) => {\n const k = rowKey(row);\n const role = (c: DataColumn<T>, idx: number) => c.mobile ?? (idx === 0 ? 'title' : 'meta');\n const by = (r: string) => visible.filter((c, idx) => role(c, idx) === r);\n return (\n <div\n key={k}\n role=\"listitem\"\n className=\"u-dt-card\"\n data-selected={dataFlag(selected.includes(k))}\n data-clickable={dataFlag(Boolean(onRowClick))}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n >\n <div className=\"u-dt-card-head\">\n {selectable && (\n <span onClick={(e) => e.stopPropagation()}>\n <Checkbox checked={selected.includes(k)} onCheckedChange={() => toggleRow(k)} aria-label=\"Pilih baris\" />\n </span>\n )}\n <div className=\"u-dt-card-title\">\n {by('title').map((c) => (\n <div key={c.key}>{c.cell ? c.cell(row, i) : String(raw(c, row) ?? '')}</div>\n ))}\n {by('subtitle').map((c) => (\n <div key={c.key} className=\"u-dt-card-subtitle\">\n {c.cell ? c.cell(row, i) : String(raw(c, row) ?? '')}\n </div>\n ))}\n </div>\n {by('badge').map((c) => (\n <div key={c.key}>{c.cell ? c.cell(row, i) : String(raw(c, row) ?? '')}</div>\n ))}\n <span onClick={(e) => e.stopPropagation()}>{menuCell(row)}</span>\n </div>\n {by('meta').length > 0 && (\n <dl className=\"u-dt-card-meta\">\n {by('meta').map((c) => (\n <div key={c.key}>\n <dt>{labelOf(c)}</dt>\n <dd>{c.cell ? c.cell(row, i) : String(raw(c, row) ?? '–')}</dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n );\n }))}\n </div>\n ) : (\n <div className=\"u-table-wrap u-dt-scroll\" style={maxHeight ? { maxHeight, overflowY: 'auto' } : undefined}>\n <table className=\"u-table\" data-density={density} data-striped={dataFlag(striped)} aria-busy={loading || undefined}>\n {caption && <caption className=\"u-sr-only\">{caption}</caption>}\n <thead>\n <tr>\n {selectable && (\n <th data-shrink=\"\" className=\"u-dt-check\">\n <Checkbox checked={allOnPage} indeterminate={!allOnPage && someOnPage} onCheckedChange={toggleAll} aria-label=\"Pilih semua di halaman ini\" disabled={!shown.length} />\n </th>\n )}\n {visible.map((c) => (\n <th\n key={c.key}\n data-align={c.align}\n data-shrink={c.shrink ? '' : undefined}\n style={c.width ? { width: c.width } : undefined}\n aria-sort={sort?.key === c.key ? (sort.dir === 'asc' ? 'ascending' : 'descending') : undefined}\n >\n {c.sortable ? (\n <SortButton direction={sort?.key === c.key ? sort.dir : null} onClick={() => toggleSort(c.key)}>\n {c.header}\n </SortButton>\n ) : (\n c.header\n )}\n </th>\n ))}\n {rowActions && (\n <th data-shrink=\"\">\n <span className=\"u-sr-only\">Aksi</span>\n </th>\n )}\n </tr>\n {loading && rows && (\n <tr className=\"u-dt-progress\" aria-hidden>\n <th colSpan={colSpan} />\n </tr>\n )}\n </thead>\n <tbody>\n {firstLoad\n ? Array.from({ length: skeletonCount }, (_, i) => (\n <tr key={i}>\n {selectable && <td />}\n {visible.map((c, j) => (\n <td key={c.key} data-align={c.align}>\n <Skeleton style={{ height: 12, width: j === 0 ? '70%' : `${40 + ((i * 17 + j * 11) % 40)}%`, display: 'inline-block' }} />\n </td>\n ))}\n {rowActions && <td />}\n </tr>\n ))\n : (state ??\n shown.map((row, i) => {\n const k = rowKey(row);\n const sel = selected.includes(k);\n return (\n <tr key={k} data-selected={dataFlag(sel)} data-clickable={dataFlag(Boolean(onRowClick))} onClick={onRowClick ? () => onRowClick(row) : undefined}>\n {selectable && (\n <td className=\"u-dt-check\" onClick={(e) => e.stopPropagation()}>\n <Checkbox checked={sel} onCheckedChange={() => toggleRow(k)} aria-label=\"Pilih baris\" />\n </td>\n )}\n {visible.map((c) => (\n <td key={c.key} data-align={c.align} data-shrink={c.shrink ? '' : undefined}>\n {c.cell ? c.cell(row, i) : String(raw(c, row) ?? '')}\n </td>\n ))}\n {rowActions && (\n <td data-shrink=\"\" data-align=\"end\" onClick={(e) => e.stopPropagation()}>\n {menuCell(row)}\n </td>\n )}\n </tr>\n );\n }))}\n </tbody>\n </table>\n </div>\n );\n\n const showFooter = !firstLoad && !hasError && total > 0;\n return (\n <div className={cn('u-data-table', className)} data-loading={dataFlag(loading)} data-cards={dataFlag(cards)}>\n {(toolbar || columnToggle || exportCsv || actions || densityToggle) && (\n <div className=\"u-dt-toolbar\">\n <div className=\"u-dt-toolbar-start\">{toolbar}</div>\n <div className=\"u-dt-toolbar-end\">{tools}</div>\n </div>\n )}\n {bulk}\n {cards && loading && rows && <div className=\"u-dt-progress-bar\" aria-hidden />}\n {body}\n {showFooter && (\n <div className=\"u-dt-footer\">\n {onPerPageChange || !serverPage ? (\n <label className=\"u-dt-per-page\">\n <span className=\"u-dt-hide-sm\">Baris per halaman</span>\n <Select<number>\n size=\"sm\"\n aria-label=\"Baris per halaman\"\n value={perPage}\n onValueChange={(v) => {\n if (v == null) return;\n setInnerPer(v);\n onPerPageChange?.(v);\n setInnerPage(1);\n onPageChange?.(1);\n }}\n options={perPageOptions.map((n) => ({ value: n, label: String(n) }))}\n />\n </label>\n ) : (\n <span />\n )}\n <Pagination\n page={page}\n totalPages={totalPages}\n total={total}\n perPage={perPage}\n compact={isMobile}\n onPageChange={(p) => {\n setInnerPage(p);\n onPageChange?.(p);\n }}\n />\n </div>\n )}\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { AlertTriangle, CheckCircle2, Clock, Loader2, RefreshCw, XCircle, Wrench } from 'lucide-react';\nimport { cn } from '../lib/cn';\nimport { formatTime } from '../lib/format';\nimport { Button } from './actions';\nimport { Tooltip } from './overlays';\n\n// ================================================================ Tipe\n/** ok = normal, degraded = lambat/sebagian, down = gangguan, maintenance = pemeliharaan, off = tidak aktif, checking = sedang diperiksa. */\nexport type ServiceState = 'ok' | 'degraded' | 'down' | 'maintenance' | 'off' | 'checking';\n\nexport interface ServiceInfo {\n key: string;\n name: React.ReactNode;\n /** Baris kedua: alamat, keterangan, atau pesan galat. */\n description?: React.ReactNode;\n icon?: React.ReactNode;\n status: ServiceState;\n /** Ganti teks lencana, mis. \"Aktif\". */\n statusLabel?: string;\n /** Waktu tanggap dalam milidetik. */\n latency?: number | null;\n /** Kode HTTP atau pesan singkat saat gangguan. */\n detail?: React.ReactNode;\n /** Riwayat 30–90 hari terakhir untuk bilah uptime (urutan lama → baru). */\n history?: Array<{ date: string; status: Exclude<ServiceState, 'checking' | 'off'>; note?: string }>;\n href?: string;\n}\n\nconst LABEL: Record<ServiceState, string> = { ok: 'Normal', degraded: 'Lambat', down: 'Gangguan', maintenance: 'Pemeliharaan', off: 'Nonaktif', checking: 'Memeriksa' };\nconst ICON: Record<ServiceState, React.ReactNode> = {\n ok: <CheckCircle2 />,\n degraded: <AlertTriangle />,\n down: <XCircle />,\n maintenance: <Wrench />,\n off: <XCircle />,\n checking: <Loader2 className=\"u-spin\" />,\n};\n\n/** Status gabungan: gangguan > lambat > pemeliharaan > memeriksa > normal. */\nexport function overallStatus(states: ServiceState[]): ServiceState {\n for (const s of ['down', 'degraded', 'maintenance', 'checking'] as const) if (states.includes(s)) return s;\n return 'ok';\n}\n\n// ================================================================ Lencana & latensi\nexport function ServiceStatusBadge({ status, children, className }: { status: ServiceState; children?: React.ReactNode; className?: string }) {\n return (\n <span className={cn('u-svc-badge', className)} data-status={status}>\n <span className=\"u-svc-dot\" aria-hidden />\n {children ?? LABEL[status]}\n </span>\n );\n}\n\n/** Waktu tanggap dengan warna: < lambat (bawaan 800 ms) netral, di atasnya kuning, di atas 3× merah. */\nexport function LatencyIndicator({ ms, slow = 800, className }: { ms?: number | null; slow?: number; className?: string }) {\n if (ms == null) return null;\n const tone = ms >= slow * 3 ? 'down' : ms >= slow ? 'degraded' : 'ok';\n return (\n <span className={cn('u-svc-latency', className)} data-tone={tone} title=\"Waktu tanggap\">\n <Clock aria-hidden />\n {ms.toLocaleString('id-ID')} ms\n </span>\n );\n}\n\n// ================================================================ Banner\nexport interface StatusBannerProps {\n status: ServiceState;\n title?: React.ReactNode;\n /** Waktu pemeriksaan terakhir. */\n checkedAt?: Date | null;\n /** Teks tambahan, mis. \"diperbarui tiap menit\". */\n note?: React.ReactNode;\n action?: React.ReactNode;\n className?: string;\n}\nconst TITLE: Record<ServiceState, string> = {\n ok: 'Semua layanan berjalan normal',\n degraded: 'Sebagian layanan melambat',\n down: 'Sebagian layanan terganggu',\n maintenance: 'Sedang ada pemeliharaan terjadwal',\n off: 'Layanan tidak aktif',\n checking: 'Memeriksa layanan…',\n};\n/** Spanduk status keseluruhan, seperti halaman status layanan. */\nexport function StatusBanner({ status, title, checkedAt, note, action, className }: StatusBannerProps) {\n return (\n <div className={cn('u-status-banner', className)} data-status={status} role=\"status\" aria-live=\"polite\">\n <span className=\"u-status-banner-icon\">{ICON[status]}</span>\n <div className=\"u-status-banner-text\">\n <p className=\"u-status-banner-title\">{title ?? TITLE[status]}</p>\n {(checkedAt || note) && (\n <p className=\"u-status-banner-note\">\n {checkedAt && <>Diperiksa {formatTime(checkedAt)}</>}\n {checkedAt && note && ' · '}\n {note}\n </p>\n )}\n </div>\n {action && <div className=\"u-status-banner-action\">{action}</div>}\n </div>\n );\n}\n\n// ================================================================ Bilah uptime\nexport function UptimeBar({ history, label }: { history: NonNullable<ServiceInfo['history']>; label?: string }) {\n const ok = history.filter((h) => h.status === 'ok').length;\n const pct = history.length ? (ok / history.length) * 100 : 100;\n return (\n <div className=\"u-uptime\">\n <div className=\"u-uptime-bars\" role=\"img\" aria-label={`${label ?? 'Ketersediaan'} ${pct.toFixed(2)}% dalam ${history.length} hari`}>\n {history.map((h) => (\n <Tooltip key={h.date} content={`${h.date}: ${h.note ?? LABEL[h.status]}`}>\n <span className=\"u-uptime-bar\" data-status={h.status} />\n </Tooltip>\n ))}\n </div>\n <div className=\"u-uptime-legend\">\n <span>{history.length} hari lalu</span>\n <span>{pct.toFixed(pct === 100 ? 0 : 2)}% tersedia</span>\n <span>Hari ini</span>\n </div>\n </div>\n );\n}\n\n// ================================================================ Daftar layanan\nexport interface ServiceListProps {\n services: ServiceInfo[];\n /** Ambang lambat untuk warna latensi. */\n slowMs?: number;\n className?: string;\n}\n/** Daftar layanan: ikon, nama, alamat/keterangan, latensi, dan lencana status. */\nexport function ServiceList({ services, slowMs, className }: ServiceListProps) {\n return (\n <ul className={cn('u-svc-list', className)}>\n {services.map((s) => (\n <li key={s.key} className=\"u-svc-row\" data-status={s.status}>\n <div className=\"u-svc-main\">\n {s.icon && <span className=\"u-svc-icon\">{s.icon}</span>}\n <div className=\"u-svc-text\">\n <p className=\"u-svc-name\">{s.href ? <a href={s.href}>{s.name}</a> : s.name}</p>\n {s.description && <p className=\"u-svc-desc\">{s.description}</p>}\n </div>\n <LatencyIndicator ms={s.status === 'checking' ? null : s.latency} slow={slowMs} className=\"u-svc-hide-sm\" />\n <ServiceStatusBadge status={s.status}>\n {s.statusLabel ?? LABEL[s.status]}\n {s.detail && s.status !== 'ok' ? <span className=\"u-svc-detail\"> ({s.detail})</span> : null}\n </ServiceStatusBadge>\n </div>\n {s.history && s.history.length > 0 && <UptimeBar history={s.history} label={typeof s.name === 'string' ? s.name : undefined} />}\n </li>\n ))}\n </ul>\n );\n}\n\n// ================================================================ Pemeriksa\nexport interface ServiceCheck {\n key: string;\n name: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n href?: string;\n /**\n * Fungsi pemeriksa. Lempar galat bila gagal; kembalikan objek untuk menimpa hasil\n * (mis. { status: 'degraded', detail: 'antrean penuh' }). Latensi diukur otomatis.\n */\n check: (signal: AbortSignal) => Promise<void | Partial<Pick<ServiceInfo, 'status' | 'detail' | 'description'>>>;\n}\n\n/** Periksa beberapa layanan sekaligus, ukur latensi, dan ulangi tiap `intervalMs` (0 = tidak otomatis). */\nexport function useServiceChecks(checks: ServiceCheck[], { intervalMs = 60_000, timeoutMs = 10_000, slowMs = 2_000 }: { intervalMs?: number; timeoutMs?: number; slowMs?: number } = {}) {\n const [results, setResults] = React.useState<Record<string, Partial<ServiceInfo>>>({});\n const [checking, setChecking] = React.useState(false);\n const [checkedAt, setCheckedAt] = React.useState<Date | null>(null);\n const ref = React.useRef(checks);\n ref.current = checks;\n const run = React.useCallback(async () => {\n setChecking(true);\n const out: Record<string, Partial<ServiceInfo>> = {};\n await Promise.all(\n ref.current.map(async (c) => {\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), timeoutMs);\n const t = performance.now();\n try {\n const r = (await c.check(ctrl.signal)) || {};\n const ms = Math.round(performance.now() - t);\n out[c.key] = { status: ms > slowMs ? 'degraded' : 'ok', latency: ms, ...r };\n } catch (e) {\n const err = e as { status?: number; name?: string; message?: string };\n out[c.key] = { status: 'down', latency: Math.round(performance.now() - t), detail: ctrl.signal.aborted ? 'waktu habis' : err?.status ? String(err.status) : err?.message?.slice(0, 40) };\n } finally {\n clearTimeout(timer);\n }\n }),\n );\n setResults(out);\n setCheckedAt(new Date());\n setChecking(false);\n }, [timeoutMs, slowMs]);\n React.useEffect(() => {\n void run();\n if (!intervalMs) return;\n const id = setInterval(() => void run(), intervalMs);\n return () => clearInterval(id);\n }, [run, intervalMs]);\n const services: ServiceInfo[] = checks.map((c) => ({ key: c.key, name: c.name, description: c.description, icon: c.icon, href: c.href, status: 'checking', ...results[c.key] }) as ServiceInfo);\n return { services, checking, checkedAt, recheck: run, status: checkedAt ? overallStatus(services.map((s) => s.status)) : ('checking' as ServiceState) };\n}\n\n// ================================================================ Panel lengkap\nexport interface ServiceStatusPanelProps {\n checks: ServiceCheck[];\n intervalMs?: number;\n /** Ambang lambat (ms). Bawaan 2000. */\n slowMs?: number;\n title?: React.ReactNode;\n className?: string;\n}\n/** Panel status siap pakai: banner + daftar layanan + tombol Periksa ulang, dengan pemeriksaan otomatis. */\nexport function ServiceStatusPanel({ checks, intervalMs = 60_000, slowMs = 2_000, title, className }: ServiceStatusPanelProps) {\n const { services, checking, checkedAt, recheck, status } = useServiceChecks(checks, { intervalMs, slowMs });\n const tiap = intervalMs >= 60_000 ? `tiap ${Math.round(intervalMs / 60_000)} menit` : `tiap ${Math.round(intervalMs / 1000)} detik`;\n return (\n <div className={cn('u-status-panel', className)}>\n <StatusBanner status={status} title={title} checkedAt={checkedAt} note={intervalMs ? `diperbarui ${tiap.replace('tiap 1 menit', 'tiap menit')}` : undefined} />\n <ServiceList services={services} slowMs={slowMs / 2} />\n <div className=\"u-status-panel-footer\">\n <Button variant=\"outline\" size=\"sm\" loading={checking} onClick={() => void recheck()}>\n {!checking && <RefreshCw />} Periksa ulang\n </Button>\n </div>\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { CalendarDays, ChevronLeft, ChevronRight, Clock, MapPin } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { Button, Skeleton } from './actions';\nimport { monthMatrix, parseISODate, toISODate } from './calendar';\n\n// ================================================================ Tipe\nexport interface CalendarEvent {\n id?: string | number;\n title: React.ReactNode;\n /** Tanggal mulai, YYYY-MM-DD atau ISO lengkap. */\n start: string;\n /** Tanggal selesai (inklusif). Kosong = satu hari. */\n end?: string | null;\n /** Jenis kegiatan: menentukan warna bila `color` kosong. */\n kind?: string;\n color?: string;\n location?: React.ReactNode;\n /** Jam, mis. \"08.00–10.00\". */\n time?: React.ReactNode;\n description?: React.ReactNode;\n href?: string;\n /** Hari libur: tanggalnya diberi warna merah. */\n holiday?: boolean;\n}\n\n/** Warna bawaan per jenis kegiatan (jenis dari kalender SIAKAD). Bisa ditimpa lewat prop `colors`. */\nexport const EVENT_COLORS: Record<string, string> = {\n akademik: 'var(--u-primary)',\n perkuliahan: '#0891b2',\n ujian: '#7c3aed',\n krs: 'var(--u-info)',\n nilai: '#0d9488',\n libur: 'var(--u-danger)',\n cuti_bersama: 'var(--u-danger)',\n wisuda: '#c026d3',\n pmb: 'var(--u-secondary, #f59e0b)',\n keuangan: 'var(--u-warning)',\n kemahasiswaan: '#16a34a',\n rapat: '#64748b',\n lainnya: '#64748b',\n};\n\nconst BULAN = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];\nconst BULAN_PENDEK = ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'];\nconst HARI = ['Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab', 'Min'];\nconst HARI_PANJANG = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];\n\nconst iso = (s: string) => s.slice(0, 10);\nexport function eventColor(e: CalendarEvent, colors: Record<string, string> = EVENT_COLORS): string {\n return e.color ?? (e.kind ? colors[e.kind] : undefined) ?? 'var(--u-primary)';\n}\n\n/** Kelompokkan kegiatan per tanggal ISO (kegiatan beberapa hari muncul di tiap harinya). */\nexport function eventsByDay(events: CalendarEvent[], from?: string, to?: string): Map<string, CalendarEvent[]> {\n const map = new Map<string, CalendarEvent[]>();\n for (const e of events) {\n const a = iso(e.start);\n const b = e.end ? iso(e.end) : a;\n const d = parseISODate(from && a < from ? from : a);\n const last = to && b > to ? to : b;\n for (let i = 0; i < 400 && toISODate(d) <= last; i++) {\n const k = toISODate(d);\n (map.get(k) ?? map.set(k, []).get(k)!).push(e);\n d.setDate(d.getDate() + 1);\n }\n }\n return map;\n}\n\n/** \"12–14 Nov 2026\", \"12 Nov – 3 Des 2026\", atau \"Selasa, 12 November 2026\". */\nexport function formatEventRange(start: string, end?: string | null, long = false): string {\n const a = parseISODate(iso(start));\n const b = end && iso(end) !== iso(start) ? parseISODate(iso(end)) : null;\n if (!b) return long ? `${HARI_PANJANG[a.getDay()]}, ${a.getDate()} ${BULAN[a.getMonth()]} ${a.getFullYear()}` : `${a.getDate()} ${BULAN_PENDEK[a.getMonth()]} ${a.getFullYear()}`;\n const M = long ? BULAN : BULAN_PENDEK;\n if (a.getFullYear() !== b.getFullYear()) return `${a.getDate()} ${M[a.getMonth()]} ${a.getFullYear()} – ${b.getDate()} ${M[b.getMonth()]} ${b.getFullYear()}`;\n if (a.getMonth() !== b.getMonth()) return `${a.getDate()} ${M[a.getMonth()]} – ${b.getDate()} ${M[b.getMonth()]} ${b.getFullYear()}`;\n return `${a.getDate()}–${b.getDate()} ${M[a.getMonth()]} ${a.getFullYear()}`;\n}\n\n// ================================================================ Tile tanggal\n/** Tile tanggal (bulan + angka) untuk daftar agenda dan kartu acara. */\nexport function DateTile({ date, tone, size = 'md', className }: { date: string | Date; tone?: string; size?: 'sm' | 'md' | 'lg'; className?: string }) {\n const d = typeof date === 'string' ? parseISODate(iso(date)) : date;\n return (\n <span className={cn('u-date-tile', className)} data-size={size} style={tone ? ({ '--tone': tone } as React.CSSProperties) : undefined}>\n <span className=\"u-date-tile-month\">{BULAN_PENDEK[d.getMonth()]}</span>\n <span className=\"u-date-tile-day\">{d.getDate()}</span>\n </span>\n );\n}\n\n// ================================================================ Kalender acara (bulanan)\nexport interface EventCalendarProps {\n events: CalendarEvent[];\n /** Bulan yang ditampilkan (terkendali). */\n month?: Date;\n onMonthChange?: (month: Date) => void;\n selected?: string | null;\n onSelect?: (isoDate: string, events: CalendarEvent[]) => void;\n onEventClick?: (event: CalendarEvent) => void;\n /** Maksimal baris acara per minggu sebelum \"+n lagi\". Bawaan 3. */\n maxPerDay?: number;\n loading?: boolean;\n colors?: Record<string, string>;\n /** Isi tambahan di kanan judul bulan (filter, tombol unduh .ics, dll). */\n toolbar?: React.ReactNode;\n className?: string;\n}\n\ninterface Segmen {\n e: CalendarEvent;\n from: number;\n to: number;\n lane: number;\n head: boolean;\n tail: boolean;\n}\n\n/** Susun acara satu minggu ke jalur (lane): acara beberapa hari jadi satu bilah memanjang. */\nfunction susunMinggu(events: CalendarEvent[], days: string[]): Segmen[] {\n const a = days[0]!;\n const b = days[6]!;\n const segs = events\n .filter((e) => iso(e.start) <= b && (e.end ? iso(e.end) : iso(e.start)) >= a)\n .map((e) => {\n const s = iso(e.start);\n const t = e.end ? iso(e.end) : s;\n return {\n e,\n from: s < a ? 0 : days.indexOf(s),\n to: t > b ? 6 : days.indexOf(t),\n lane: 0,\n head: s >= a,\n tail: t <= b,\n };\n })\n .sort((x, y) => x.from - y.from || y.to - y.from - (x.to - x.from));\n const lanes: number[] = [];\n for (const s of segs) {\n let l = lanes.findIndex((end) => end < s.from);\n if (l < 0) l = lanes.push(-1) - 1;\n lanes[l] = s.to;\n s.lane = l;\n }\n return segs;\n}\n\n/** Kalender bulanan: acara beberapa hari tampil sebagai satu bilah memanjang, \"+n lagi\" per hari, hari libur merah, titik warna di ponsel. */\nexport function EventCalendar({ events, month: monthProp, onMonthChange, selected, onSelect, onEventClick, maxPerDay = 3, loading, colors, toolbar, className }: EventCalendarProps) {\n const [monthState, setMonthState] = React.useState(() => monthProp ?? new Date());\n const month = monthProp ?? monthState;\n const setMonth = (m: Date) => {\n setMonthState(m);\n onMonthChange?.(m);\n };\n const days = monthMatrix(month.getFullYear(), month.getMonth());\n const from = toISODate(days[0]!);\n const to = toISODate(days[41]!);\n const byDay = React.useMemo(() => eventsByDay(events, from, to), [events, from, to]);\n const today = toISODate(new Date());\n const go = (n: number) => setMonth(new Date(month.getFullYear(), month.getMonth() + n, 1));\n const rows = days[35]!.getMonth() !== month.getMonth() ? 5 : 6;\n\n return (\n <div className={cn('u-evcal', className)} data-loading={dataFlag(loading)}>\n <div className=\"u-evcal-head\">\n <div className=\"u-evcal-nav\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setMonth(new Date(new Date().getFullYear(), new Date().getMonth(), 1))}>\n Hari ini\n </Button>\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Bulan sebelumnya\" onClick={() => go(-1)}>\n <ChevronLeft />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" iconOnly aria-label=\"Bulan berikutnya\" onClick={() => go(1)}>\n <ChevronRight />\n </Button>\n </div>\n <h3 className=\"u-evcal-title\" aria-live=\"polite\">\n {BULAN[month.getMonth()]} <span>{month.getFullYear()}</span>\n </h3>\n {toolbar && <div className=\"u-evcal-toolbar\">{toolbar}</div>}\n </div>\n <div className=\"u-evcal-grid\" role=\"grid\" aria-label={`${BULAN[month.getMonth()]} ${month.getFullYear()}`}>\n <div className=\"u-evcal-weekdays\" role=\"row\">\n {HARI.map((h) => (\n <span key={h} role=\"columnheader\">\n {h}\n </span>\n ))}\n </div>\n {Array.from({ length: rows }, (_, r) => {\n const week = days.slice(r * 7, r * 7 + 7);\n const keys = week.map(toISODate);\n const segs = loading ? [] : susunMinggu(events, keys);\n const shown = segs.filter((s) => s.lane < maxPerDay - 1 || (s.lane === maxPerDay - 1 && keys.slice(s.from, s.to + 1).every((k) => (byDay.get(k)?.length ?? 0) <= maxPerDay)));\n return (\n <div className=\"u-evcal-week\" role=\"row\" key={r} style={{ '--lanes': maxPerDay } as React.CSSProperties}>\n {week.map((d, c) => {\n const k = keys[c]!;\n const list = byDay.get(k) ?? [];\n const hidden = list.length - shown.filter((s) => s.from <= c && s.to >= c).length;\n return (\n <div\n key={k}\n role=\"gridcell\"\n className=\"u-evcal-day\"\n style={{ gridColumn: c + 1 }}\n data-outside={dataFlag(d.getMonth() !== month.getMonth())}\n data-today={dataFlag(k === today)}\n data-selected={dataFlag(k === selected)}\n data-weekend={dataFlag(d.getDay() === 0)}\n data-holiday={dataFlag(list.some((e) => e.holiday))}\n aria-selected={k === selected}\n >\n <button type=\"button\" className=\"u-evcal-date\" onClick={() => onSelect?.(k, list)} aria-label={`${formatEventRange(k, null, true)}, ${list.length} kegiatan`}>\n {d.getDate()}\n </button>\n {loading && (r + c) % 4 === 1 && <Skeleton className=\"u-evcal-skel\" />}\n {hidden > 0 && (\n <button type=\"button\" className=\"u-evcal-more\" onClick={() => onSelect?.(k, list)}>\n +{hidden} lagi\n </button>\n )}\n {list.length > 0 && (\n <span className=\"u-evcal-dots\" aria-hidden>\n {list.slice(0, 3).map((e, i) => (\n <i key={i} style={{ background: eventColor(e, colors) }} />\n ))}\n </span>\n )}\n </div>\n );\n })}\n {shown.map((s, i) => (\n <button\n key={`${s.e.id ?? i}-${i}`}\n type=\"button\"\n className=\"u-evcal-chip\"\n title={typeof s.e.title === 'string' ? s.e.title : undefined}\n data-span={dataFlag(!!s.e.end && iso(s.e.end) !== iso(s.e.start))}\n data-head={dataFlag(s.head)}\n data-tail={dataFlag(s.tail)}\n style={\n {\n gridColumn: `${s.from + 1} / ${s.to + 2}`,\n gridRow: s.lane + 2,\n '--tone': eventColor(s.e, colors),\n } as React.CSSProperties\n }\n onClick={() => (onEventClick ? onEventClick(s.e) : onSelect?.(keys[s.from]!, byDay.get(keys[s.from]!) ?? []))}\n >\n {s.e.time && !s.e.end ? <span className=\"u-evcal-chip-time\">{s.e.time}</span> : null}\n {s.e.title}\n </button>\n ))}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ================================================================ Daftar agenda\nexport interface AgendaListProps {\n events: CalendarEvent[];\n /** 'day' = dikelompokkan per tanggal; 'none' = daftar datar dengan tile tanggal. */\n groupBy?: 'day' | 'none';\n colors?: Record<string, string>;\n /** Label jenis untuk lencana kecil. */\n kindLabels?: Record<string, string>;\n onEventClick?: (event: CalendarEvent) => void;\n empty?: React.ReactNode;\n loading?: boolean;\n /** Tampilan rapat untuk sidebar. */\n compact?: boolean;\n limit?: number;\n className?: string;\n}\n\n/** Daftar agenda: tile tanggal, garis warna per jenis, rentang tanggal, lokasi, dan jam. */\nexport function AgendaList({ events, groupBy = 'none', colors, kindLabels, onEventClick, empty, loading, compact, limit, className }: AgendaListProps) {\n if (loading)\n return (\n <ul className={cn('u-agenda', className)} data-compact={dataFlag(compact)} aria-busy>\n {Array.from({ length: compact ? 3 : 4 }, (_, i) => (\n <li key={i} className=\"u-agenda-item\">\n <Skeleton className=\"u-agenda-skel-tile\" />\n <div style={{ flex: 1, display: 'grid', gap: 6 }}>\n <Skeleton style={{ height: 14, width: '70%' }} />\n <Skeleton style={{ height: 12, width: '40%' }} />\n </div>\n </li>\n ))}\n </ul>\n );\n const list = limit ? events.slice(0, limit) : events;\n if (!list.length)\n return (\n <div className={cn('u-agenda-empty', className)}>\n {empty ?? (\n <>\n <CalendarDays aria-hidden /> Tidak ada kegiatan.\n </>\n )}\n </div>\n );\n\n const item = (e: CalendarEvent, i: number, tile: boolean) => {\n const color = eventColor(e, colors);\n const Tag = e.href ? 'a' : onEventClick ? 'button' : 'div';\n return (\n <li key={`${e.id ?? i}-${i}`} className=\"u-agenda-item\" style={{ '--tone': color } as React.CSSProperties}>\n <Tag className=\"u-agenda-link\" {...(e.href ? { href: e.href } : onEventClick ? { type: 'button' as const, onClick: () => onEventClick(e) } : {})}>\n {tile ? <DateTile date={e.start} tone={color} size={compact ? 'sm' : 'md'} /> : <span className=\"u-agenda-bar\" aria-hidden />}\n <span className=\"u-agenda-body\">\n <span className=\"u-agenda-title\">{e.title}</span>\n <span className=\"u-agenda-meta\">\n {(tile || e.end) && <span>{formatEventRange(e.start, e.end)}</span>}\n {e.time && (\n <span>\n <Clock aria-hidden />\n {e.time}\n </span>\n )}\n {e.location && (\n <span>\n <MapPin aria-hidden />\n {e.location}\n </span>\n )}\n </span>\n {!compact && e.description && <span className=\"u-agenda-desc\">{e.description}</span>}\n </span>\n {e.kind && kindLabels?.[e.kind] && !compact && <span className=\"u-agenda-kind\">{kindLabels[e.kind]}</span>}\n </Tag>\n </li>\n );\n };\n\n if (groupBy === 'none')\n return (\n <ul className={cn('u-agenda', className)} data-compact={dataFlag(compact)}>\n {list.map((e, i) => item(e, i, true))}\n </ul>\n );\n\n const groups = new Map<string, CalendarEvent[]>();\n for (const e of list) (groups.get(iso(e.start)) ?? groups.set(iso(e.start), []).get(iso(e.start))!).push(e);\n return (\n <div className={cn('u-agenda-groups', className)} data-compact={dataFlag(compact)}>\n {[...groups].map(([day, evs]) => (\n <section key={day} className=\"u-agenda-group\">\n <h4 className=\"u-agenda-day\">{formatEventRange(day, null, true)}</h4>\n <ul className=\"u-agenda\">{evs.map((e, i) => item(e, i, false))}</ul>\n </section>\n ))}\n </div>\n );\n}\n\n// ================================================================ Legenda\nexport function EventLegend({\n kinds,\n labels,\n colors = EVENT_COLORS,\n hidden,\n onToggle,\n className,\n}: {\n kinds: string[];\n labels?: Record<string, string>;\n colors?: Record<string, string>;\n /** Jenis yang disembunyikan; bila `onToggle` diisi, legenda jadi filter. */\n hidden?: string[];\n onToggle?: (kind: string) => void;\n className?: string;\n}) {\n return (\n <div className={cn('u-ev-legend', className)} role={onToggle ? 'group' : undefined} aria-label=\"Jenis kegiatan\">\n {kinds.map((k) => {\n const off = hidden?.includes(k);\n const content = (\n <>\n <i style={{ background: colors[k] ?? 'var(--u-primary)' }} aria-hidden />\n {labels?.[k] ?? k}\n </>\n );\n return onToggle ? (\n <button key={k} type=\"button\" className=\"u-ev-legend-item\" aria-pressed={!off} data-off={dataFlag(off)} onClick={() => onToggle(k)}>\n {content}\n </button>\n ) : (\n <span key={k} className=\"u-ev-legend-item\">\n {content}\n </span>\n );\n })}\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { ArrowRight, ArrowUpRight, Clock, Eye, MapPin, Megaphone, Pin, Users, Video } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { formatCompact, formatDate, formatRelative } from '../lib/format';\nimport { Skeleton } from './actions';\nimport { DateTile } from './schedule';\n\n// ================================================================ Berita\nexport interface NewsItem {\n id: string | number;\n title: React.ReactNode;\n href?: string;\n excerpt?: React.ReactNode;\n image?: string | null;\n imageAlt?: string;\n category?: { name: string; color?: string | null; href?: string } | null;\n author?: React.ReactNode;\n date?: string | Date | null;\n views?: number | null;\n /** Lencana kecil, mis. \"Prestasi\". */\n badge?: React.ReactNode;\n}\n\nexport interface NewsCardProps {\n item: NewsItem;\n /** vertical = gambar di atas; horizontal = gambar di kiri; overlay = teks di atas gambar (sorotan); minimal = tanpa gambar. */\n variant?: 'vertical' | 'horizontal' | 'overlay' | 'minimal';\n /** Tampilkan tanggal relatif (\"3 jam lalu\") untuk berita kurang dari seminggu. Bawaan true. */\n relativeDate?: boolean;\n className?: string;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\nfunction tanggal(d: NewsItem['date'], relative: boolean) {\n if (!d) return null;\n const date = typeof d === 'string' ? new Date(d.replace(' ', 'T')) : d;\n if (relative && Date.now() - date.getTime() < 7 * 864e5) return formatRelative(date);\n return formatDate(date, 'medium');\n}\n\n/** Kartu berita: gambar 16:9 dengan cadangan pola, kategori berwarna, judul dua baris, ringkasan, penulis, tanggal, dan jumlah dilihat. */\nexport function NewsCard({ item, variant = 'vertical', relativeDate = true, className, headingLevel = 'h3' }: NewsCardProps) {\n const H = headingLevel;\n const tgl = tanggal(item.date, relativeDate);\n const tone = item.category?.color ?? 'var(--u-primary)';\n return (\n <article className={cn('u-news', className)} data-variant={variant} style={{ '--tone': tone } as React.CSSProperties}>\n {variant !== 'minimal' && (\n <div className=\"u-news-media\">{item.image ? <img src={item.image} alt={item.imageAlt ?? ''} loading=\"lazy\" decoding=\"async\" /> : <span className=\"u-news-placeholder\" aria-hidden />}</div>\n )}\n <div className=\"u-news-body\">\n {(item.category || item.badge) && (\n <div className=\"u-news-eyebrow\">\n {item.category && <span className=\"u-news-cat\">{item.category.name}</span>}\n {item.badge && <span className=\"u-news-badge\">{item.badge}</span>}\n </div>\n )}\n <H className=\"u-news-title\">\n {item.href ? (\n <a href={item.href} className=\"u-news-link\">\n {item.title}\n </a>\n ) : (\n item.title\n )}\n </H>\n {item.excerpt && variant !== 'minimal' && <p className=\"u-news-excerpt\">{item.excerpt}</p>}\n {(item.author || tgl || item.views != null) && (\n <div className=\"u-news-meta\">\n {item.author && <span className=\"u-news-author\">{item.author}</span>}\n {tgl && <time dateTime={typeof item.date === 'string' ? item.date : item.date?.toISOString()}>{tgl}</time>}\n {item.views != null && (\n <span title=\"Dilihat\">\n <Eye aria-hidden />\n {formatCompact(item.views)}\n </span>\n )}\n </div>\n )}\n </div>\n </article>\n );\n}\n\nexport function NewsCardSkeleton({ variant = 'vertical' }: { variant?: NewsCardProps['variant'] }) {\n return (\n <div className=\"u-news\" data-variant={variant} aria-hidden>\n {variant !== 'minimal' && <Skeleton className=\"u-news-media\" />}\n <div className=\"u-news-body\">\n <Skeleton style={{ height: 12, width: 72 }} />\n <Skeleton style={{ height: 16, width: '92%' }} />\n <Skeleton style={{ height: 16, width: '64%' }} />\n <Skeleton style={{ height: 12, width: 120 }} />\n </div>\n </div>\n );\n}\n\nexport interface NewsGridProps {\n items: NewsItem[];\n /** grid = kartu sama besar; featured = satu besar + sisanya di samping; list = daftar horizontal. */\n layout?: 'grid' | 'featured' | 'list';\n /** Kolom minimum (px) untuk mode grid. Bawaan 260. */\n minColumn?: number;\n loading?: boolean;\n /** Jumlah kerangka saat memuat. */\n skeletonCount?: number;\n empty?: React.ReactNode;\n className?: string;\n}\n\n/** Kumpulan kartu berita dengan tiga tata letak; responsif tanpa media query (container query). */\nexport function NewsGrid({ items, layout = 'grid', minColumn = 260, loading, skeletonCount = 6, empty, className }: NewsGridProps) {\n const style = { '--min': `${minColumn}px` } as React.CSSProperties;\n if (loading)\n return (\n <div className={cn('u-news-grid', className)} data-layout={layout} style={style} aria-busy>\n {Array.from({ length: layout === 'featured' ? 4 : skeletonCount }, (_, i) => (\n <NewsCardSkeleton key={i} variant={layout === 'list' || (layout === 'featured' && i > 0) ? 'horizontal' : layout === 'featured' ? 'overlay' : 'vertical'} />\n ))}\n </div>\n );\n if (!items.length) return <div className=\"u-agenda-empty\">{empty ?? 'Belum ada berita.'}</div>;\n if (layout === 'featured') {\n const [first, ...rest] = items;\n return (\n <div className={cn('u-news-wrap', className)}>\n <div className=\"u-news-grid\" data-layout=\"featured\" style={style}>\n <NewsCard item={first!} variant=\"overlay\" headingLevel=\"h2\" />\n <div className=\"u-news-side\">\n {rest.slice(0, 4).map((it) => (\n <NewsCard key={it.id} item={it} variant=\"horizontal\" />\n ))}\n </div>\n </div>\n </div>\n );\n }\n return (\n <div className={cn('u-news-grid', className)} data-layout={layout} style={style}>\n {items.map((it) => (\n <NewsCard key={it.id} item={it} variant={layout === 'list' ? 'horizontal' : 'vertical'} />\n ))}\n </div>\n );\n}\n\n/** Daftar bernomor \"Terpopuler\" untuk sidebar. */\nexport function RankedList({ items, loading, className }: { items: NewsItem[]; loading?: boolean; className?: string }) {\n return (\n <ol className={cn('u-ranked', className)} aria-busy={loading || undefined}>\n {loading\n ? Array.from({ length: 5 }, (_, i) => (\n <li key={i}>\n <span className=\"u-ranked-no\">{i + 1}</span>\n <div style={{ flex: 1, display: 'grid', gap: 6 }}>\n <Skeleton style={{ height: 14 }} />\n <Skeleton style={{ height: 12, width: '50%' }} />\n </div>\n </li>\n ))\n : items.map((it, i) => (\n <li key={it.id}>\n <span className=\"u-ranked-no\">{i + 1}</span>\n <div className=\"u-ranked-body\">\n {it.href ? (\n <a href={it.href} className=\"u-ranked-title\">\n {it.title}\n </a>\n ) : (\n <span className=\"u-ranked-title\">{it.title}</span>\n )}\n <span className=\"u-news-meta\">\n {it.category && <span style={{ color: it.category.color ?? undefined }}>{it.category.name}</span>}\n {it.views != null && (\n <span>\n <Eye aria-hidden />\n {formatCompact(it.views)}\n </span>\n )}\n </span>\n </div>\n </li>\n ))}\n </ol>\n );\n}\n\n// ================================================================ Pengumuman\nexport interface AnnouncementItem {\n id: string | number;\n title: React.ReactNode;\n href?: string;\n number?: React.ReactNode;\n priority?: 'biasa' | 'penting' | 'darurat' | string;\n date?: string | null;\n until?: string | null;\n pinned?: boolean;\n}\nconst PRIORITAS: Record<string, string> = {\n penting: 'Penting',\n darurat: 'Darurat',\n};\n\n/** Daftar pengumuman: ikon prioritas, nomor surat, berlaku sampai, dan sematan. */\nexport function AnnouncementList({ items, loading, className, empty }: { items: AnnouncementItem[]; loading?: boolean; className?: string; empty?: React.ReactNode }) {\n if (loading)\n return (\n <ul className={cn('u-announce', className)} aria-busy>\n {Array.from({ length: 4 }, (_, i) => (\n <li key={i} className=\"u-announce-item\">\n <Skeleton style={{ width: 36, height: 36, borderRadius: 10 }} />\n <div style={{ flex: 1, display: 'grid', gap: 6 }}>\n <Skeleton style={{ height: 14, width: '80%' }} />\n <Skeleton style={{ height: 12, width: '40%' }} />\n </div>\n </li>\n ))}\n </ul>\n );\n if (!items.length) return <div className=\"u-agenda-empty\">{empty ?? 'Belum ada pengumuman.'}</div>;\n return (\n <ul className={cn('u-announce', className)}>\n {items.map((a) => {\n const Tag = a.href ? 'a' : 'div';\n return (\n <li key={a.id} className=\"u-announce-item\" data-priority={a.priority ?? 'biasa'} data-pinned={dataFlag(a.pinned)}>\n <Tag className=\"u-announce-link\" {...(a.href ? { href: a.href } : {})}>\n <span className=\"u-announce-icon\" aria-hidden>\n {a.pinned ? <Pin /> : <Megaphone />}\n </span>\n <span className=\"u-announce-body\">\n <span className=\"u-announce-title\">\n {a.priority && PRIORITAS[a.priority] && <span className=\"u-announce-flag\">{PRIORITAS[a.priority]}</span>}\n {a.title}\n </span>\n <span className=\"u-news-meta\">\n {a.number && <span>{a.number}</span>}\n {a.date && <span>{formatDate(a.date.replace(' ', 'T'), 'medium')}</span>}\n {a.until && (\n <span>\n <Clock aria-hidden />\n Berlaku s.d. {formatDate(a.until, 'medium')}\n </span>\n )}\n </span>\n </span>\n {a.href && <ArrowUpRight className=\"u-announce-arrow\" aria-hidden />}\n </Tag>\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ================================================================ Acara\nexport interface EventCardItem {\n id: string | number;\n title: React.ReactNode;\n href?: string;\n /** \"YYYY-MM-DD HH:MM:SS\" atau ISO. */\n start: string;\n end?: string | null;\n allDay?: boolean;\n mode?: 'luring' | 'daring' | 'hibrida' | string | null;\n location?: React.ReactNode;\n organizer?: React.ReactNode;\n image?: string | null;\n /** Pendaftaran dibuka. */\n registration?: boolean;\n}\nconst MODE: Record<string, string> = {\n luring: 'Luring',\n daring: 'Daring',\n hibrida: 'Hibrida',\n};\nconst jam = (s?: string | null) => (s && s.length > 10 ? s.slice(11, 16).replace(':', '.') : null);\n\n/** Kartu acara: tile tanggal, jam, mode (luring/daring/hibrida), lokasi, penyelenggara, dan tanda pendaftaran. */\nexport function EventCard({ item, variant = 'row', className }: { item: EventCardItem; variant?: 'row' | 'card'; className?: string }) {\n const j1 = jam(item.start);\n const j2 = jam(item.end);\n const beda = item.end && item.end.slice(0, 10) !== item.start.slice(0, 10);\n return (\n <article className={cn('u-event', className)} data-variant={variant}>\n {variant === 'card' && item.image && (\n <div className=\"u-news-media\">\n <img src={item.image} alt=\"\" loading=\"lazy\" />\n </div>\n )}\n <div className=\"u-event-main\">\n <DateTile date={item.start.slice(0, 10)} size={variant === 'card' ? 'md' : 'lg'} />\n <div className=\"u-event-body\">\n <h3 className=\"u-news-title\">\n {item.href ? (\n <a href={item.href} className=\"u-news-link\">\n {item.title}\n </a>\n ) : (\n item.title\n )}\n </h3>\n <div className=\"u-news-meta\">\n <span>\n <Clock aria-hidden />\n {beda ? `${formatDate(item.start.slice(0, 10), 'medium')} – ${formatDate(item.end!.slice(0, 10), 'medium')}` : item.allDay || !j1 ? 'Sepanjang hari' : `${j1}${j2 ? `–${j2}` : ''} WITA`}\n </span>\n {item.location && (\n <span>\n {item.mode === 'daring' ? <Video aria-hidden /> : <MapPin aria-hidden />}\n {item.location}\n </span>\n )}\n {item.organizer && (\n <span>\n <Users aria-hidden />\n {item.organizer}\n </span>\n )}\n </div>\n {(item.mode || item.registration) && (\n <div className=\"u-event-tags\">\n {item.mode && MODE[item.mode] && (\n <span className=\"u-event-tag\" data-mode={item.mode}>\n {MODE[item.mode]}\n </span>\n )}\n {item.registration && (\n <span className=\"u-event-tag\" data-mode=\"daftar\">\n Pendaftaran dibuka\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n </article>\n );\n}\n\n// ================================================================ Bagian landing\nexport interface SectionProps extends Omit<React.ComponentProps<'section'>, 'title'> {\n eyebrow?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Tautan \"Lihat semua\". */\n href?: string;\n linkLabel?: React.ReactNode;\n /** Aksi lain di kanan judul. */\n actions?: React.ReactNode;\n align?: 'start' | 'center';\n}\n\n/** Kepala bagian halaman (eyebrow, judul, deskripsi, tautan) + isi. Dipakai di landing page dan beranda portal. */\nexport function Section({ eyebrow, title, description, href, linkLabel = 'Lihat semua', actions, align = 'start', className, children, ...props }: SectionProps) {\n return (\n <section className={cn('u-section', className)} data-align={align} {...props}>\n <header className=\"u-section-head\">\n <div className=\"u-section-text\">\n {eyebrow && <p className=\"u-section-eyebrow\">{eyebrow}</p>}\n <h2 className=\"u-section-title\">{title}</h2>\n {description && <p className=\"u-section-desc\">{description}</p>}\n </div>\n {(href || actions) && (\n <div className=\"u-section-actions\">\n {actions}\n {href && (\n <a href={href} className=\"u-section-link\">\n {linkLabel} <ArrowRight aria-hidden />\n </a>\n )}\n </div>\n )}\n </header>\n {children}\n </section>\n );\n}\n\nexport interface HeroProps {\n eyebrow?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n /** Angka singkat di bawah aksi, mis. [{ value: '12', label: 'Program studi' }]. */\n stats?: Array<{ value: React.ReactNode; label: React.ReactNode }>;\n /** Gambar atau ilustrasi di kanan (atau latar untuk variant=\"image\"). */\n media?: React.ReactNode;\n image?: string;\n /** split = teks kiri, media kanan; image = teks di atas foto lebar; plain = teks tengah. */\n variant?: 'split' | 'image' | 'plain';\n /** Kartu/pengumuman kecil di atas judul, mis. \"Pendaftaran gelombang I dibuka\". */\n announcement?: React.ReactNode;\n className?: string;\n}\n\n/** Hero landing page kampus: tiga varian, angka singkat, dan pengumuman kecil. */\nexport function Hero({ eyebrow, title, description, actions, stats, media, image, variant = 'split', announcement, className }: HeroProps) {\n return (\n <section className={cn('u-hero', className)} data-variant={variant} style={variant === 'image' && image ? ({ '--hero-image': `url(\"${image}\")` } as React.CSSProperties) : undefined}>\n <div className=\"u-hero-grid\">\n <div className=\"u-hero-text\">\n {announcement && <div className=\"u-hero-announce\">{announcement}</div>}\n {eyebrow && <p className=\"u-section-eyebrow\">{eyebrow}</p>}\n <h1 className=\"u-hero-title\">{title}</h1>\n {description && <p className=\"u-hero-desc\">{description}</p>}\n {actions && <div className=\"u-hero-actions\">{actions}</div>}\n {stats && (\n <dl className=\"u-hero-stats\">\n {stats.map((s, i) => (\n <div key={i}>\n <dt>{s.label}</dt>\n <dd>{s.value}</dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n {variant === 'split' && (media || image) && <div className=\"u-hero-media\">{media ?? <img src={image} alt=\"\" />}</div>}\n </div>\n </section>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { ArrowLeft, ArrowRight, Check, CircleAlert, Pencil } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { formatTime } from '../lib/format';\nimport { Button } from './actions';\n\nexport interface WizardStep {\n id: string;\n title: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n content: React.ReactNode;\n /**\n * Dipanggil saat menekan Lanjut. Kembalikan pesan galat (string) untuk menahan langkah,\n * atau lempar galat. Cocok untuk menyimpan langkah ini ke API.\n */\n onNext?: () => void | string | null | undefined | Promise<void | string | null | undefined>;\n /** Tandai langkah bermasalah (mis. dari validasi server) tanpa membukanya. */\n error?: boolean;\n optional?: boolean;\n}\n\nexport interface WizardProps {\n steps: WizardStep[];\n /** Langkah aktif (terkendali). */\n step?: number;\n onStepChange?: (step: number) => void;\n /** Dipanggil di langkah terakhir. Kembalikan pesan galat untuk menahan. */\n onFinish: () => void | string | null | undefined | Promise<void | string | null | undefined>;\n finishLabel?: React.ReactNode;\n nextLabel?: React.ReactNode;\n /** Judul di atas daftar langkah (desktop). */\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** Waktu simpan terakhir untuk teks \"Tersimpan 10.42\". */\n savedAt?: Date | null;\n /** Bebaskan lompat ke langkah mana pun (bawaan: hanya ke langkah yang sudah dilewati). */\n freeNavigation?: boolean;\n /** Isi di bawah daftar langkah, mis. kontak panitia. */\n aside?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Formulir bertahap: daftar langkah di kiri (desktop) atau bilah kemajuan (ponsel), satu langkah per layar,\n * simpan per langkah lewat `onNext`, pesan galat di dekat tombol, dan fokus ke judul tiap pindah langkah.\n */\nexport function Wizard({\n steps,\n step: stepProp,\n onStepChange,\n onFinish,\n finishLabel = 'Kirim',\n nextLabel = 'Simpan & lanjut',\n title,\n description,\n savedAt,\n freeNavigation,\n aside,\n className,\n}: WizardProps) {\n const [inner, setInner] = React.useState(0);\n const step = stepProp ?? inner;\n const [visited, setVisited] = React.useState(step);\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n const headRef = React.useRef<HTMLHeadingElement>(null);\n const first = React.useRef(true);\n const last = step === steps.length - 1;\n const cur = steps[step]!;\n\n const go = (i: number) => {\n setError(null);\n setInner(i);\n setVisited((v) => Math.max(v, i));\n onStepChange?.(i);\n };\n React.useEffect(() => {\n if (first.current) {\n first.current = false;\n return;\n }\n headRef.current?.focus({ preventScroll: false });\n }, [step]);\n\n const lanjut = async () => {\n setBusy(true);\n setError(null);\n try {\n const r = await (last ? onFinish() : cur.onNext?.());\n if (typeof r === 'string' && r) setError(r);\n else if (!last) go(step + 1);\n } catch (e) {\n setError((e as Error)?.message || 'Gagal menyimpan. Coba lagi.');\n } finally {\n setBusy(false);\n }\n };\n\n const pct = Math.round(((step + 1) / steps.length) * 100);\n return (\n <div className={cn('u-wizard-wrap', className)}>\n <div className=\"u-wizard\">\n <aside className=\"u-wizard-nav\">\n {(title || description) && (\n <div className=\"u-wizard-intro\">\n {title && <p className=\"u-wizard-intro-title\">{title}</p>}\n {description && <p className=\"u-wizard-intro-desc\">{description}</p>}\n </div>\n )}\n <ol className=\"u-wizard-steps\">\n {steps.map((s, i) => {\n const state = s.error ? 'error' : i === step ? 'current' : i < step || i <= visited ? 'complete' : 'upcoming';\n const can = i !== step && (freeNavigation || i <= visited);\n return (\n <li key={s.id} data-state={state}>\n <button type=\"button\" className=\"u-wizard-step\" disabled={!can} onClick={() => go(i)} aria-current={i === step ? 'step' : undefined}>\n <span className=\"u-wizard-marker\" aria-hidden>\n {state === 'complete' ? <Check /> : state === 'error' ? <CircleAlert /> : i + 1}\n </span>\n <span className=\"u-wizard-step-text\">\n <span className=\"u-wizard-step-title\">{s.title}</span>\n {s.description && <span className=\"u-wizard-step-desc\">{s.description}</span>}\n </span>\n </button>\n </li>\n );\n })}\n </ol>\n {aside && <div className=\"u-wizard-aside\">{aside}</div>}\n </aside>\n\n <section className=\"u-wizard-panel\" aria-labelledby=\"u-wizard-heading\">\n <div className=\"u-wizard-progress\" aria-hidden>\n <span style={{ width: `${pct}%` }} />\n </div>\n <header className=\"u-wizard-head\">\n <p className=\"u-wizard-count\">\n Langkah {step + 1} dari {steps.length}\n {cur.optional && <span> · tidak wajib</span>}\n </p>\n <h2 id=\"u-wizard-heading\" className=\"u-wizard-title\" tabIndex={-1} ref={headRef}>\n {cur.title}\n </h2>\n {cur.description && <p className=\"u-wizard-desc\">{cur.description}</p>}\n </header>\n <div className=\"u-wizard-body\" key={cur.id}>\n {cur.content}\n </div>\n <footer className=\"u-wizard-foot\">\n {error && (\n <p className=\"u-wizard-error\" role=\"alert\">\n <CircleAlert aria-hidden /> {error}\n </p>\n )}\n <div className=\"u-wizard-actions\">\n {step > 0 ? (\n <Button variant=\"ghost\" onClick={() => go(step - 1)} disabled={busy}>\n <ArrowLeft /> Kembali\n </Button>\n ) : (\n <span />\n )}\n <span className=\"u-wizard-saved\">{savedAt ? `Tersimpan ${formatTime(savedAt)}` : null}</span>\n <Button onClick={() => void lanjut()} loading={busy}>\n {last ? finishLabel : nextLabel}\n {!last && !busy && <ArrowRight />}\n </Button>\n </div>\n </footer>\n </section>\n </div>\n </div>\n );\n}\n\n// ================================================================ Ringkasan\nexport interface ReviewSection {\n title: React.ReactNode;\n items: Array<{ label: React.ReactNode; value?: React.ReactNode }>;\n /** Tombol \"Ubah\" untuk kembali ke langkah terkait. */\n onEdit?: () => void;\n /** Tandai bagian yang belum lengkap. */\n missing?: React.ReactNode;\n}\n\n/** Ringkasan isian untuk langkah terakhir wizard: per bagian, dengan tombol Ubah dan penanda belum lengkap. */\nexport function WizardReview({ sections, className }: { sections: ReviewSection[]; className?: string }) {\n return (\n <div className={cn('u-review', className)}>\n {sections.map((s, i) => (\n <section key={i} className=\"u-review-section\" data-missing={dataFlag(!!s.missing)}>\n <header>\n <h3>{s.title}</h3>\n {s.onEdit && (\n <Button variant=\"ghost\" size=\"sm\" onClick={s.onEdit}>\n <Pencil /> Ubah\n </Button>\n )}\n </header>\n {s.missing && (\n <p className=\"u-review-missing\">\n <CircleAlert aria-hidden /> {s.missing}\n </p>\n )}\n <dl>\n {s.items.map((it, j) => (\n <div key={j}>\n <dt>{it.label}</dt>\n <dd data-empty={dataFlag(it.value == null || it.value === '')}>{it.value == null || it.value === '' ? 'Belum diisi' : it.value}</dd>\n </div>\n ))}\n </dl>\n </section>\n ))}\n </div>\n );\n}\n\n/** Grid isian dua kolom yang turun ke satu kolom di layar sempit. `span` pada anak: style={{ gridColumn: '1 / -1' }}. */\nexport function FormGrid({ children, columns = 2, className }: { children: React.ReactNode; columns?: 1 | 2 | 3; className?: string }) {\n return (\n <div className={cn('u-form-grid', className)} style={{ '--cols': columns } as React.CSSProperties}>\n {children}\n </div>\n );\n}\n","'use client';\nimport * as React from 'react';\nimport { ArrowDownRight, ArrowUpRight, Check, Minus } from 'lucide-react';\nimport { cn, dataFlag } from '../lib/cn';\nimport { formatNumber } from '../lib/format';\nimport { Skeleton } from './actions';\n\n/**\n * Grafik ringan tanpa pustaka luar (SVG + CSS). Warna kategori memakai --u-chart-1 … --u-chart-8 dengan urutan tetap\n * (sudah diuji aman untuk buta warna pada mode terang dan gelap). Grafik satu seri memakai --u-primary.\n * Semua grafik punya tooltip saat disorot dan nilai tertulis di legenda, jadi warna tidak pernah satu-satunya penanda.\n */\nexport const CHART_COLORS = Array.from({ length: 8 }, (_, i) => `var(--u-chart-${i + 1})`);\nexport const chartColor = (i: number) => CHART_COLORS[i % CHART_COLORS.length]!;\n\nconst fmt = (n: number | null | undefined, f?: (n: number) => string) => (n == null ? '–' : f ? f(n) : formatNumber(n));\n\n// ================================================================ Tooltip bersama\ninterface Tip {\n x: number;\n y: number;\n content: React.ReactNode;\n}\nfunction useTip() {\n const ref = React.useRef<HTMLDivElement>(null);\n const [tip, setTip] = React.useState<Tip | null>(null);\n const show = (e: React.PointerEvent | React.FocusEvent, content: React.ReactNode) => {\n const box = ref.current?.getBoundingClientRect();\n if (!box) return;\n const t = (e.target as Element).getBoundingClientRect();\n const px = 'clientX' in e && e.pointerType === 'mouse' ? e.clientX : t.left + t.width / 2;\n setTip({ x: px - box.left, y: t.top - box.top, content });\n };\n const el = tip ? (\n <div className=\"u-chart-tip\" role=\"status\" style={{ left: tip.x, top: tip.y }}>\n {tip.content}\n </div>\n ) : null;\n /** Tampilkan di koordinat layar (clientX/clientY). */\n const showAt = (clientX: number, clientY: number, content: React.ReactNode) => {\n const box = ref.current?.getBoundingClientRect();\n if (box) setTip({ x: clientX - box.left, y: clientY - box.top, content });\n };\n return { ref, show, showAt, hide: () => setTip(null), el };\n}\n\n// ================================================================ Sparkline\nexport function Sparkline({\n data,\n width = 96,\n height = 28,\n tone = 'var(--u-primary)',\n area = true,\n className,\n}: {\n data: number[];\n width?: number;\n height?: number;\n tone?: string;\n area?: boolean;\n className?: string;\n}) {\n if (data.length < 2) return null;\n const min = Math.min(...data);\n const max = Math.max(...data);\n const span = max - min || 1;\n const pts = data.map((v, i) => [(i / (data.length - 1)) * (width - 4) + 2, height - 3 - ((v - min) / span) * (height - 6)] as const);\n const d = pts.map(([x, y], i) => `${i ? 'L' : 'M'}${x.toFixed(1)} ${y.toFixed(1)}`).join(' ');\n const last = pts[pts.length - 1]!;\n return (\n <svg className={cn('u-spark', className)} width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden style={{ color: tone }}>\n {area && <path d={`${d} L${last[0]} ${height} L${pts[0]![0]} ${height} Z`} fill=\"currentColor\" opacity={0.12} />}\n <path d={d} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <circle cx={last[0]} cy={last[1]} r={2.75} fill=\"currentColor\" stroke=\"var(--u-card)\" strokeWidth={1.5} />\n </svg>\n );\n}\n\n// ================================================================ Kartu statistik\nexport interface StatCardProps {\n label: React.ReactNode;\n value: React.ReactNode;\n /** Perubahan dibanding periode lalu, mis. 12.5 (persen) atau -3. */\n delta?: number | null;\n deltaLabel?: React.ReactNode;\n /** Naik itu buruk (mis. jumlah DO): warna delta dibalik. */\n inverse?: boolean;\n /** Satuan delta. Bawaan '%'. */\n deltaUnit?: string;\n hint?: React.ReactNode;\n icon?: React.ReactNode;\n trend?: number[];\n /** Isi kecil di bawah, mis. Progress. */\n footer?: React.ReactNode;\n href?: string;\n loading?: boolean;\n tone?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n className?: string;\n}\n\n/** Kartu angka utama: label, nilai besar, perubahan naik/turun dengan ikon, sparkline, dan keterangan. */\nexport function StatCard({ label, value, delta, deltaLabel = 'dari periode lalu', inverse, deltaUnit = '%', hint, icon, trend, footer, href, loading, tone = 'primary', className }: StatCardProps) {\n const arah = delta == null ? null : delta > 0 ? 'naik' : delta < 0 ? 'turun' : 'tetap';\n const baik = arah === 'tetap' || arah == null ? null : (arah === 'naik') !== !!inverse;\n const Tag = href ? 'a' : 'div';\n return (\n <Tag className={cn('u-stat', className)} data-tone={tone} {...(href ? { href } : {})}>\n <div className=\"u-stat-top\">\n <span className=\"u-stat-label\">{label}</span>\n {icon && <span className=\"u-stat-icon\">{icon}</span>}\n </div>\n {loading ? (\n <Skeleton style={{ height: 30, width: '55%' }} />\n ) : (\n <div className=\"u-stat-row\">\n <span className=\"u-stat-value\">{value}</span>\n {trend && trend.length > 1 && <Sparkline data={trend} tone={`var(--u-${tone === 'neutral' ? 'muted-foreground' : tone})`} />}\n </div>\n )}\n {(arah || hint) && !loading && (\n <div className=\"u-stat-foot\">\n {arah && (\n <span className=\"u-stat-delta\" data-good={baik == null ? undefined : String(baik)}>\n {arah === 'naik' ? <ArrowUpRight aria-hidden /> : arah === 'turun' ? <ArrowDownRight aria-hidden /> : <Minus aria-hidden />}\n <span className=\"u-sr-only\">{arah} </span>\n {formatNumber(Math.abs(delta!), { maximumFractionDigits: 1 })}\n {deltaUnit}\n </span>\n )}\n {arah && <span>{deltaLabel}</span>}\n {hint && <span>{hint}</span>}\n </div>\n )}\n {footer}\n </Tag>\n );\n}\n\n/**\n * Grid kartu statistik. Jumlah kolom dihitung dari lebar wadah lalu diseimbangkan, jadi 5 kartu jadi 3+2 dan 6 kartu jadi 3+3,\n * bukan 4+1 atau 4+2.\n */\nexport function StatGrid({ children, min = 200, className }: { children: React.ReactNode; min?: number; className?: string }) {\n const ref = React.useRef<HTMLDivElement>(null);\n const n = React.Children.toArray(children).filter(Boolean).length;\n const [cols, setCols] = React.useState<number | null>(null);\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!el || typeof ResizeObserver === 'undefined') return;\n const hitung = () => {\n const gap = parseFloat(getComputedStyle(el).columnGap) || 16;\n const muat = Math.max(1, Math.floor((el.clientWidth + gap) / (min + gap)));\n if (muat >= n) return setCols(n);\n const baris = Math.ceil(n / muat);\n setCols(Math.ceil(n / baris));\n };\n hitung();\n const ro = new ResizeObserver(hitung);\n ro.observe(el);\n return () => ro.disconnect();\n }, [min, n]);\n return (\n <div ref={ref} className={cn('u-stat-grid', className)} style={{ '--min': `${min}px`, ...(cols ? { gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))` } : {}) } as React.CSSProperties}>\n {children}\n </div>\n );\n}\n\n// ================================================================ Grafik batang (vertikal, satu seri)\nexport interface BarChartProps {\n data: Array<{ label: string; value: number; /** Label panjang untuk tooltip. */ title?: string }>;\n height?: number;\n format?: (n: number) => string;\n /** Tandai batang terakhir (mis. periode berjalan). */\n highlightLast?: boolean;\n tone?: string;\n /** Tampilkan nilai di atas batang tertinggi dan terakhir. */\n labels?: boolean;\n loading?: boolean;\n className?: string;\n 'aria-label'?: string;\n}\n\n/** Batang vertikal untuk tren per periode (semester, bulan, hari). Garis bantu tipis, tooltip per batang. */\nexport function BarChart({ data, height = 180, format, highlightLast, tone = 'var(--u-primary)', labels = true, loading, className, ...aria }: BarChartProps) {\n const tip = useTip();\n if (loading) return <Skeleton className={className} style={{ height, width: '100%' }} />;\n const max = Math.max(1, ...data.map((d) => d.value));\n const nice = niceMax(max);\n const imax = data.reduce((b, d, i) => (d.value > data[b]!.value ? i : b), 0);\n const step = data.length > 16 ? Math.ceil(data.length / 8) : 1;\n return (\n <div className={cn('u-bars', className)} ref={tip.ref} role=\"img\" aria-label={aria['aria-label'] ?? data.map((d) => `${d.title ?? d.label}: ${fmt(d.value, format)}`).join(', ')}>\n <div className=\"u-bars-plot\" style={{ height }}>\n {[0, 0.5, 1].map((g) => (\n <span key={g} className=\"u-bars-grid\" style={{ bottom: `${g * 100}%` }}>\n <span>{fmt(nice * g, format)}</span>\n </span>\n ))}\n <div className=\"u-bars-cols\">\n {data.map((d, i) => (\n <div\n key={i}\n className=\"u-bars-col\"\n tabIndex={0}\n onPointerEnter={(e) => tip.show(e, <TipBody label={d.title ?? d.label} value={fmt(d.value, format)} />)}\n onPointerLeave={tip.hide}\n onFocus={(e) => tip.show(e, <TipBody label={d.title ?? d.label} value={fmt(d.value, format)} />)}\n onBlur={tip.hide}\n >\n <span className=\"u-bars-bar\" data-last={dataFlag(highlightLast && i === data.length - 1)} style={{ height: `${(d.value / nice) * 100}%`, background: tone }}>\n {labels && (i === imax || (highlightLast && i === data.length - 1)) && d.value > 0 && <span className=\"u-bars-val\">{fmt(d.value, format)}</span>}\n </span>\n </div>\n ))}\n </div>\n </div>\n <div className=\"u-bars-x\" aria-hidden data-many={data.length > 6 ? '' : undefined}>\n {data.map((d, i) => (\n <span key={i}>{i % step === 0 || i === data.length - 1 ? d.label : ''}</span>\n ))}\n </div>\n {tip.el}\n </div>\n );\n}\n\n// ================================================================ Batang berkelompok (2–4 seri)\nexport interface ChartSeries {\n label: string;\n /** Nilai per titik, urut sama dengan `labels`. */\n values: number[];\n color?: string;\n}\n\n/** Batang berkelompok untuk membandingkan 2–4 seri per periode (mis. surat masuk vs keluar per bulan). Legenda berisi total tiap seri. */\nexport function GroupedBarChart({\n labels,\n titles,\n series,\n height = 180,\n format,\n loading,\n className,\n}: {\n labels: string[];\n /** Label panjang untuk tooltip. */ titles?: string[];\n series: ChartSeries[];\n height?: number;\n format?: (n: number) => string;\n loading?: boolean;\n className?: string;\n}) {\n const tip = useTip();\n if (loading) return <Skeleton className={className} style={{ height, width: '100%' }} />;\n const nice = niceMax(Math.max(1, ...series.flatMap((s) => s.values)));\n const step = labels.length > 16 ? Math.ceil(labels.length / 8) : 1;\n const isi = (i: number) => (\n <>\n <span className=\"u-chart-tip-label\">{titles?.[i] ?? labels[i]}</span>\n {series.map((s, j) => (\n <span key={j} className=\"u-chart-tip-row\">\n <i style={{ background: s.color ?? chartColor(j) }} />\n {s.label}\n <b>{fmt(s.values[i], format)}</b>\n </span>\n ))}\n </>\n );\n return (\n <div\n className={cn('u-bars', className)}\n ref={tip.ref}\n role=\"img\"\n aria-label={labels.map((l, i) => `${titles?.[i] ?? l}: ${series.map((s) => `${s.label} ${fmt(s.values[i], format)}`).join(', ')}`).join('; ')}\n >\n <ul className=\"u-legend\" data-inline=\"\" aria-hidden>\n {series.map((s, j) => (\n <li key={j}>\n <i style={{ background: s.color ?? chartColor(j) }} />\n <span className=\"u-legend-label\">{s.label}</span>\n <span className=\"u-legend-value\">\n {fmt(\n s.values.reduce((a, b) => a + b, 0),\n format,\n )}\n </span>\n </li>\n ))}\n </ul>\n <div className=\"u-bars-plot\" style={{ height }}>\n {[0, 0.5, 1].map((g) => (\n <span key={g} className=\"u-bars-grid\" style={{ bottom: `${g * 100}%` }}>\n <span>{fmt(nice * g, format)}</span>\n </span>\n ))}\n <div className=\"u-bars-cols\">\n {labels.map((_, i) => (\n <div key={i} className=\"u-bars-col\" data-group=\"\" tabIndex={0} onPointerEnter={(e) => tip.show(e, isi(i))} onPointerLeave={tip.hide} onFocus={(e) => tip.show(e, isi(i))} onBlur={tip.hide}>\n {series.map((s, j) => (\n <span key={j} className=\"u-bars-bar\" style={{ height: `${((s.values[i] ?? 0) / nice) * 100}%`, background: s.color ?? chartColor(j) }} />\n ))}\n </div>\n ))}\n </div>\n </div>\n <div className=\"u-bars-x\" aria-hidden data-many={labels.length > 6 ? '' : undefined}>\n {labels.map((l, i) => (\n <span key={i}>{i % step === 0 || i === labels.length - 1 ? l : ''}</span>\n ))}\n </div>\n {tip.el}\n </div>\n );\n}\n\n// ================================================================ Garis (1–4 seri, harian)\n/** Garis untuk deret harian/mingguan. Garis bantu silang dan tooltip semua seri saat disorot; legenda berisi total. */\nexport function LineChart({\n labels,\n titles,\n series,\n height = 180,\n format,\n area = true,\n loading,\n legendValue = 'total',\n max,\n className,\n}: {\n labels: string[];\n titles?: string[];\n series: ChartSeries[];\n height?: number;\n format?: (n: number) => string;\n area?: boolean;\n loading?: boolean;\n /** Angka di legenda: jumlah seluruh titik (bawaan), nilai titik terakhir, atau tanpa angka. */\n legendValue?: 'total' | 'akhir' | 'tidak';\n /** Batas atas sumbu Y (mis. 4 untuk IPK). Bawaan dibulatkan dari data. */\n max?: number;\n className?: string;\n}) {\n const tip = useTip();\n const [aktif, setAktif] = React.useState<number | null>(null);\n const plot = React.useRef<HTMLDivElement>(null);\n if (loading) return <Skeleton className={className} style={{ height, width: '100%' }} />;\n const n = labels.length;\n const nice = max ?? niceMax(Math.max(1, ...series.flatMap((s) => s.values)));\n const W = 1000;\n const x = (i: number) => (n <= 1 ? W / 2 : (i / (n - 1)) * W);\n const y = (v: number) => height - (v / nice) * (height - 4) - 2;\n const step = n > 12 ? Math.ceil(n / 6) : 1;\n const isi = (i: number) => (\n <>\n <span className=\"u-chart-tip-label\">{titles?.[i] ?? labels[i]}</span>\n {series.map((s, j) => (\n <span key={j} className=\"u-chart-tip-row\">\n <i style={{ background: s.color ?? (series.length === 1 ? 'var(--u-primary)' : chartColor(j)) }} />\n {s.label}\n <b>{fmt(s.values[i], format)}</b>\n </span>\n ))}\n </>\n );\n const sorot = (e: React.PointerEvent) => {\n const box = plot.current?.getBoundingClientRect();\n if (!box || n === 0) return;\n const i = Math.max(0, Math.min(n - 1, Math.round(((e.clientX - box.left) / box.width) * (n - 1))));\n setAktif(i);\n tip.showAt(box.left + (x(i) / W) * box.width, box.top, isi(i));\n };\n return (\n <div\n className={cn('u-line', className)}\n ref={tip.ref}\n role=\"img\"\n aria-label={series\n .map(\n (s) =>\n `${s.label}: total ${fmt(\n s.values.reduce((a, b) => a + b, 0),\n format,\n )}`,\n )\n .join('; ')}\n >\n {series.length > 1 && (\n <ul className=\"u-legend\" data-inline=\"\" aria-hidden>\n {series.map((s, j) => (\n <li key={j}>\n <i style={{ background: s.color ?? chartColor(j) }} />\n <span className=\"u-legend-label\">{s.label}</span>\n {legendValue !== 'tidak' && <span className=\"u-legend-value\">{fmt(legendValue === 'akhir' ? (s.values[s.values.length - 1] ?? 0) : s.values.reduce((a, b) => a + b, 0), format)}</span>}\n </li>\n ))}\n </ul>\n )}\n <div className=\"u-bars-plot\" style={{ height }} ref={plot} onPointerMove={sorot} onPointerLeave={() => (setAktif(null), tip.hide())}>\n {[0, 0.5, 1].map((g) => (\n <span key={g} className=\"u-bars-grid\" style={{ bottom: `${g * 100}%` }}>\n <span>{fmt(nice * g, format)}</span>\n </span>\n ))}\n <svg className=\"u-line-svg\" viewBox={`0 0 ${W} ${height}`} preserveAspectRatio=\"none\" width=\"100%\" height={height} aria-hidden>\n {series.map((s, j) => {\n const c = s.color ?? (series.length === 1 ? 'var(--u-primary)' : chartColor(j));\n const d = s.values.map((v, i) => `${i ? 'L' : 'M'}${x(i).toFixed(1)} ${y(v).toFixed(1)}`).join(' ');\n return (\n <g key={j} style={{ color: c }}>\n {area && series.length === 1 && <path d={`${d} L${x(n - 1)} ${height} L${x(0)} ${height} Z`} fill=\"currentColor\" opacity={0.1} />}\n <path d={d} fill=\"none\" stroke=\"currentColor\" strokeWidth={2} vectorEffect=\"non-scaling-stroke\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n </g>\n );\n })}\n </svg>\n {aktif != null && (\n <>\n <span className=\"u-line-cross\" style={{ left: `${(x(aktif) / W) * 100}%` }} />\n {series.map((s, j) => (\n <span\n key={j}\n className=\"u-line-dot\"\n style={{ left: `${(x(aktif) / W) * 100}%`, top: y(s.values[aktif] ?? 0), background: s.color ?? (series.length === 1 ? 'var(--u-primary)' : chartColor(j)) }}\n />\n ))}\n </>\n )}\n </div>\n <div className=\"u-line-x\" aria-hidden>\n {labels.map((l, i) =>\n i % step === 0 || i === n - 1 ? (\n <span key={i} style={{ left: `${(x(i) / W) * 100}%` }} data-edge={i === 0 ? 'start' : i === n - 1 ? 'end' : undefined}>\n {l}\n </span>\n ) : null,\n )}\n </div>\n {tip.el}\n </div>\n );\n}\n\nfunction niceMax(v: number) {\n const p = Math.pow(10, Math.floor(Math.log10(v)));\n const n = v / p;\n return (n <= 1 ? 1 : n <= 2 ? 2 : n <= 2.5 ? 2.5 : n <= 5 ? 5 : 10) * p;\n}\n\nfunction TipBody({ label, value, color, extra }: { label: React.ReactNode; value: React.ReactNode; color?: string; extra?: React.ReactNode }) {\n return (\n <>\n <span className=\"u-chart-tip-label\">\n {color && <i style={{ background: color }} />}\n {label}\n </span>\n <b>{value}</b>\n {extra && <span className=\"u-chart-tip-extra\">{extra}</span>}\n </>\n );\n}\n\n// ================================================================ Daftar batang (horizontal, peringkat)\nexport interface BarListItem {\n label: React.ReactNode;\n value: number;\n /** Nilai kedua yang ditampilkan, mis. persen. */\n secondary?: React.ReactNode;\n href?: string;\n color?: string;\n}\n\n/** Batang horizontal berperingkat: label di kiri, nilai di kanan. Cocok untuk per prodi, per unit, per sumber. */\nexport function BarList({\n items,\n format,\n max: maxProp,\n limit,\n loading,\n empty = 'Belum ada data.',\n className,\n}: {\n items: BarListItem[];\n format?: (n: number) => string;\n max?: number;\n limit?: number;\n loading?: boolean;\n empty?: React.ReactNode;\n className?: string;\n}) {\n if (loading)\n return (\n <div className={cn('u-barlist', className)}>\n {Array.from({ length: 4 }, (_, i) => (\n <Skeleton key={i} style={{ height: 28, width: `${90 - i * 15}%` }} />\n ))}\n </div>\n );\n const list = limit ? items.slice(0, limit) : items;\n if (!list.length) return <div className=\"u-chart-empty\">{empty}</div>;\n const max = maxProp ?? Math.max(1, ...list.map((i) => i.value));\n return (\n <ul className={cn('u-barlist', className)}>\n {list.map((it, i) => {\n const Tag = it.href ? 'a' : 'div';\n return (\n <li key={i}>\n <Tag className=\"u-barlist-row\" {...(it.href ? { href: it.href } : {})}>\n <span className=\"u-barlist-fill\" style={{ width: `${Math.max(1.5, (it.value / max) * 100)}%`, background: it.color }} aria-hidden />\n <span className=\"u-barlist-label\">{it.label}</span>\n </Tag>\n <span className=\"u-barlist-value\">\n {fmt(it.value, format)}\n {it.secondary != null && <span>{it.secondary}</span>}\n </span>\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ================================================================ Donat\nexport interface DonutSegment {\n label: string;\n value: number;\n color?: string;\n}\n\n/** Donat komposisi (≤ 6 bagian; sisanya digabung \"Lainnya\"), angka total di tengah, legenda dengan nilai dan persen. */\nexport function DonutChart({\n data,\n size = 148,\n thickness = 18,\n centerLabel = 'Total',\n centerValue,\n format,\n maxSegments = 6,\n loading,\n className,\n}: {\n data: DonutSegment[];\n size?: number;\n thickness?: number;\n centerLabel?: React.ReactNode;\n centerValue?: React.ReactNode;\n format?: (n: number) => string;\n maxSegments?: number;\n loading?: boolean;\n className?: string;\n}) {\n const tip = useTip();\n if (loading)\n return (\n <div className={cn('u-donut', className)}>\n <Skeleton shape=\"circle\" style={{ width: size, height: size }} />\n </div>\n );\n const sorted = data.filter((d) => d.value > 0);\n let segs = sorted;\n if (sorted.length > maxSegments) {\n const rest = [...sorted].sort((a, b) => b.value - a.value);\n const keep = new Set(rest.slice(0, maxSegments - 1));\n segs = [...sorted.filter((d) => keep.has(d)), { label: 'Lainnya', value: rest.slice(maxSegments - 1).reduce((s, d) => s + d.value, 0), color: 'var(--u-muted-foreground)' }];\n }\n const total = segs.reduce((s, d) => s + d.value, 0);\n const r = (size - thickness) / 2;\n const c = 2 * Math.PI * r;\n const gap = segs.length > 1 ? 2 : 0;\n let acc = 0;\n return (\n <div className={cn('u-donut', className)} ref={tip.ref}>\n <div className=\"u-donut-ring\" style={{ width: size, height: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} role=\"img\" aria-label={segs.map((s) => `${s.label}: ${fmt(s.value, format)}`).join(', ')}>\n <circle cx={size / 2} cy={size / 2} r={r} fill=\"none\" stroke=\"var(--u-muted)\" strokeWidth={thickness} />\n {segs.map((s, i) => {\n const len = total ? (s.value / total) * c : 0;\n const el = (\n <circle\n key={i}\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={s.color ?? chartColor(i)}\n strokeWidth={thickness}\n strokeDasharray={`${Math.max(0, len - gap)} ${c}`}\n strokeDashoffset={-acc}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n className=\"u-donut-seg\"\n onPointerEnter={(e) => tip.show(e, <TipBody label={s.label} color={s.color ?? chartColor(i)} value={fmt(s.value, format)} extra={`${((s.value / total) * 100).toFixed(1)}%`} />)}\n onPointerLeave={tip.hide}\n />\n );\n acc += len;\n return el;\n })}\n </svg>\n <span className=\"u-donut-center\">\n <b data-long={String(centerValue ?? fmt(total, format)).length > 6 ? '' : undefined}>{centerValue ?? fmt(total, format)}</b>\n <span>{centerLabel}</span>\n </span>\n </div>\n <ul className=\"u-legend\">\n {segs.map((s, i) => (\n <li key={i}>\n <i style={{ background: s.color ?? chartColor(i) }} aria-hidden />\n <span className=\"u-legend-label\">{s.label}</span>\n <span className=\"u-legend-value\">\n {fmt(s.value, format)}\n <span>{total ? `${Math.round((s.value / total) * 100)}%` : ''}</span>\n </span>\n </li>\n ))}\n </ul>\n {tip.el}\n </div>\n );\n}\n\n// ================================================================ Batang bertumpuk 100% (komposisi satu baris)\n/** Satu bilah komposisi (mis. status kegiatan) dengan legenda bernilai. */\nexport function SegmentBar({ data, format, className }: { data: DonutSegment[]; format?: (n: number) => string; className?: string }) {\n const tip = useTip();\n const segs = data.filter((d) => d.value > 0);\n const total = segs.reduce((s, d) => s + d.value, 0);\n return (\n <div className={cn('u-segbar', className)} ref={tip.ref}>\n <div className=\"u-segbar-track\" role=\"img\" aria-label={segs.map((s) => `${s.label}: ${fmt(s.value, format)}`).join(', ')}>\n {segs.map((s, i) => (\n <span\n key={i}\n style={{ flexGrow: s.value, background: s.color ?? chartColor(i) }}\n onPointerEnter={(e) => tip.show(e, <TipBody label={s.label} color={s.color ?? chartColor(i)} value={fmt(s.value, format)} extra={`${((s.value / total) * 100).toFixed(1)}%`} />)}\n onPointerLeave={tip.hide}\n />\n ))}\n </div>\n <ul className=\"u-legend\" data-inline=\"\">\n {segs.map((s, i) => (\n <li key={i}>\n <i style={{ background: s.color ?? chartColor(i) }} aria-hidden />\n <span className=\"u-legend-label\">{s.label}</span>\n <span className=\"u-legend-value\">{fmt(s.value, format)}</span>\n </li>\n ))}\n </ul>\n {tip.el}\n </div>\n );\n}\n\n// ================================================================ Corong (funnel)\nexport interface FunnelStage {\n label: React.ReactNode;\n value: number;\n hint?: React.ReactNode;\n}\n\n/** Corong tahapan (mis. PMB: akun → diajukan → terverifikasi → lulus → daftar ulang) dengan persen lanjut antar tahap. */\nexport function Funnel({ stages, format, loading, className }: { stages: FunnelStage[]; format?: (n: number) => string; loading?: boolean; className?: string }) {\n if (loading)\n return (\n <div className={cn('u-funnel', className)}>\n {Array.from({ length: 4 }, (_, i) => (\n <Skeleton key={i} style={{ height: 40, width: `${100 - i * 18}%` }} />\n ))}\n </div>\n );\n const top = Math.max(1, stages[0]?.value ?? 1);\n return (\n <ol className={cn('u-funnel', className)}>\n {stages.map((s, i) => {\n const prev = i > 0 ? stages[i - 1]!.value : null;\n const conv = prev ? Math.round((s.value / prev) * 100) : null;\n return (\n <li key={i}>\n <div className=\"u-funnel-bar\" style={{ width: `${Math.max(6, (s.value / top) * 100)}%` }} />\n <div className=\"u-funnel-text\">\n <span className=\"u-funnel-label\">{s.label}</span>\n <span className=\"u-funnel-value\">{fmt(s.value, format)}</span>\n </div>\n {conv != null && (\n <span className=\"u-funnel-conv\" title=\"Lanjut dari tahap sebelumnya\">\n {conv}%\n </span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ================================================================ Anggaran vs realisasi\n/** Meteran realisasi terhadap target (mis. serapan anggaran): terpakai, dalam proses, dan sisa. */\nexport function BudgetMeter({\n target,\n used,\n pending = 0,\n format,\n label,\n className,\n}: {\n target: number;\n used: number;\n pending?: number;\n format?: (n: number) => string;\n label?: React.ReactNode;\n className?: string;\n}) {\n const p = (n: number) => (target > 0 ? Math.min(100, (n / target) * 100) : 0);\n const pct = target > 0 ? (used / target) * 100 : 0;\n const sisa = Math.max(0, target - used - pending);\n return (\n <div className={cn('u-budget', className)}>\n <div className=\"u-budget-head\">\n {label && <span className=\"u-budget-label\">{label}</span>}\n <b>{pct.toLocaleString('id-ID', { maximumFractionDigits: 1 })}%</b>\n </div>\n <div className=\"u-budget-track\" role=\"img\" aria-label={`Terpakai ${fmt(used, format)} dari ${fmt(target, format)}`}>\n <span className=\"u-budget-used\" style={{ width: `${p(used)}%` }} />\n {pending > 0 && <span className=\"u-budget-pending\" style={{ width: `${p(pending)}%` }} />}\n </div>\n <dl className=\"u-budget-legend\">\n <div>\n <dt>\n <i data-k=\"used\" /> Terpakai\n </dt>\n <dd>{fmt(used, format)}</dd>\n </div>\n {pending > 0 && (\n <div>\n <dt>\n <i data-k=\"pending\" /> Dalam proses\n </dt>\n <dd>{fmt(pending, format)}</dd>\n </div>\n )}\n <div>\n <dt>\n <i data-k=\"sisa\" /> Sisa\n </dt>\n <dd>{fmt(sisa, format)}</dd>\n </div>\n </dl>\n </div>\n );\n}\n\n// ================================================================ Siklus / tahapan dengan status\nexport interface CycleStep {\n label: React.ReactNode;\n done: boolean;\n detail?: React.ReactNode;\n}\n\n/** Tahapan siklus (mis. PPEPP SPMI) dengan tanda terpenuhi dan bukti singkat. */\nexport function CycleSteps({ steps, className }: { steps: CycleStep[]; className?: string }) {\n return (\n <ol className={cn('u-cycle', className)}>\n {steps.map((s, i) => (\n <li key={i} data-done={dataFlag(s.done)}>\n <span className=\"u-cycle-mark\" aria-hidden>\n {s.done ? <Check /> : i + 1}\n </span>\n <span className=\"u-cycle-label\">\n {s.label}\n <span className=\"u-sr-only\">{s.done ? ' (terpenuhi)' : ' (belum)'}</span>\n </span>\n {s.detail && <span className=\"u-cycle-detail\">{s.detail}</span>}\n </li>\n ))}\n </ol>\n );\n}\n\n// ================================================================ Panel dasbor\n/** Bingkai widget dasbor: judul, keterangan, aksi kanan, isi. */\nexport function Panel({\n title,\n description,\n actions,\n children,\n className,\n span,\n}: {\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n /** Lebar kolom di DashboardGrid. */ span?: 1 | 2 | 3 | 'full';\n}) {\n return (\n <section className={cn('u-panel', className)} data-span={span}>\n {(title || actions) && (\n <header className=\"u-panel-head\">\n <div>\n {title && <h3 className=\"u-panel-title\">{title}</h3>}\n {description && <p className=\"u-panel-desc\">{description}</p>}\n </div>\n {actions && <div className=\"u-panel-actions\">{actions}</div>}\n </header>\n )}\n <div className=\"u-panel-body\">{children}</div>\n </section>\n );\n}\n\n/** Grid dasbor 3 kolom yang turun ke 2 dan 1 kolom sesuai lebar wadah. Anak bisa diberi `span` lewat Panel. */\nexport function DashboardGrid({ children, className }: { children: React.ReactNode; className?: string }) {\n return (\n <div className={cn('u-dash-wrap', className)}>\n <div className=\"u-dash\">{children}</div>\n </div>\n );\n}\n\n// ================================================================ Daftar tindakan\nexport interface ActionItem {\n key?: string;\n label: React.ReactNode;\n count: number;\n description?: React.ReactNode;\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n /** warning bila ada antrean, danger untuk yang lewat batas. Bawaan: warning saat count > 0. */\n tone?: 'neutral' | 'warning' | 'danger' | 'info';\n}\n\n/** Antrean kerja yang perlu ditangani (mis. usulan menunggu review). Baris bernilai nol diredam, bukan disembunyikan. */\nexport function ActionList({ items, loading, className }: { items: ActionItem[]; loading?: boolean; className?: string }) {\n if (loading) return <Skeleton className={className} style={{ height: items.length * 44 || 132 }} />;\n return (\n <ul className={cn('u-actions-list', className)}>\n {items.map((it, i) => {\n const tone = it.tone ?? (it.count > 0 ? 'warning' : 'neutral');\n const isi = (\n <>\n {it.icon && (\n <span className=\"u-actions-icon\" aria-hidden>\n {it.icon}\n </span>\n )}\n <span className=\"u-actions-text\">\n <span className=\"u-actions-label\">{it.label}</span>\n {it.description && <span className=\"u-actions-desc\">{it.description}</span>}\n </span>\n <span className=\"u-actions-count\" data-tone={it.count > 0 ? tone : 'neutral'}>\n {formatNumber(it.count)}\n </span>\n </>\n );\n return (\n <li key={it.key ?? i} data-zero={dataFlag(it.count === 0)}>\n {it.href ? (\n <a href={it.href} className=\"u-actions-row\">\n {isi}\n </a>\n ) : it.onClick ? (\n <button type=\"button\" className=\"u-actions-row\" onClick={it.onClick}>\n {isi}\n </button>\n ) : (\n <div className=\"u-actions-row\">{isi}</div>\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ================================================================ Linimasa aktivitas\nexport interface FeedItem {\n id: React.Key;\n title: React.ReactNode;\n meta?: React.ReactNode;\n time?: React.ReactNode;\n icon?: React.ReactNode;\n href?: string;\n}\n\n/** Linimasa ringkas (aktivitas terbaru, antrean review, jadwal terbit). */\nexport function ActivityFeed({ items, loading, empty = 'Belum ada aktivitas.', className }: { items: FeedItem[]; loading?: boolean; empty?: React.ReactNode; className?: string }) {\n if (loading)\n return (\n <div className={cn('u-feed', className)}>\n {[0, 1, 2].map((i) => (\n <Skeleton key={i} style={{ height: 40 }} />\n ))}\n </div>\n );\n if (!items.length) return <p className=\"u-chart-empty\">{empty}</p>;\n return (\n <ol className={cn('u-feed', className)}>\n {items.map((it) => (\n <li key={it.id}>\n <span className=\"u-feed-icon\" aria-hidden>\n {it.icon ?? <span className=\"u-feed-dot\" />}\n </span>\n <span className=\"u-feed-body\">\n {it.href ? (\n <a href={it.href} className=\"u-feed-title\">\n {it.title}\n </a>\n ) : (\n <span className=\"u-feed-title\">{it.title}</span>\n )}\n {(it.meta || it.time) && (\n <span className=\"u-feed-meta\">\n {it.meta}\n {it.meta && it.time && ' · '}\n {it.time}\n </span>\n )}\n </span>\n </li>\n ))}\n </ol>\n );\n}\n"]}
|