@alfadocs/ui-kit-debug 1.33.0 → 1.35.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/_chunks/appointment-card-Bh_CIlc6.js +431 -0
- package/dist/_chunks/appointment-card-Bh_CIlc6.js.map +1 -0
- package/dist/_chunks/appointment-timeline-De-Wqdkw.js +449 -0
- package/dist/_chunks/appointment-timeline-De-Wqdkw.js.map +1 -0
- package/dist/_chunks/{appointment-tray-DCk8gHod.js → appointment-tray-4I9wTAi4.js} +2 -2
- package/dist/_chunks/{appointment-tray-DCk8gHod.js.map → appointment-tray-4I9wTAi4.js.map} +1 -1
- package/dist/_chunks/{calendar-workspace-BX-zDyVR.js → calendar-workspace-UywR5gUl.js} +7 -7
- package/dist/_chunks/{calendar-workspace-BX-zDyVR.js.map → calendar-workspace-UywR5gUl.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-CZW476Kg.js → care-plan-card-DHVhBcvs.js} +3 -3
- package/dist/_chunks/{care-plan-card-CZW476Kg.js.map → care-plan-card-DHVhBcvs.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-BMUYagEw.js → care-plan-entry-card-Dx6IdTcR.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-BMUYagEw.js.map → care-plan-entry-card-Dx6IdTcR.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-B5CBE0zu.js → care-plan-header-UTX5ZD74.js} +2 -2
- package/dist/_chunks/{care-plan-header-B5CBE0zu.js.map → care-plan-header-UTX5ZD74.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-D2WTV2CO.js → clinical-note-card-CTRzmqvv.js} +83 -81
- package/dist/_chunks/clinical-note-card-CTRzmqvv.js.map +1 -0
- package/dist/_chunks/{contact-profile-card-BZqi8Hck.js → contact-profile-card-DSI9uumA.js} +17 -16
- package/dist/_chunks/{contact-profile-card-BZqi8Hck.js.map → contact-profile-card-DSI9uumA.js.map} +1 -1
- package/dist/_chunks/{control-room-rail-iO_BCaq1.js → control-room-rail-5MbhjsxN.js} +2 -2
- package/dist/_chunks/{control-room-rail-iO_BCaq1.js.map → control-room-rail-5MbhjsxN.js.map} +1 -1
- package/dist/_chunks/{entity-card-DmrgYSEX.js → entity-card-9_62gY7l.js} +4 -4
- package/dist/_chunks/{entity-card-DmrgYSEX.js.map → entity-card-9_62gY7l.js.map} +1 -1
- package/dist/_chunks/format-price-BkMEbeW3.js +47 -0
- package/dist/_chunks/format-price-BkMEbeW3.js.map +1 -0
- package/dist/_chunks/{format-price-DNqXPa_q.js → languages-CZqBaPwI.js} +8 -38
- package/dist/_chunks/languages-CZqBaPwI.js.map +1 -0
- package/dist/_chunks/money.agent-Dw55UxUA.js +116 -0
- package/dist/_chunks/money.agent-Dw55UxUA.js.map +1 -0
- package/dist/_chunks/notes-panel-BjLt-kiP.js +469 -0
- package/dist/_chunks/notes-panel-BjLt-kiP.js.map +1 -0
- package/dist/_chunks/{operator-hero-D7-iiFQ9.js → operator-hero-aG_qyn6g.js} +2 -2
- package/dist/_chunks/{operator-hero-D7-iiFQ9.js.map → operator-hero-aG_qyn6g.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-lmKLwsDs.js → payment-request-card-DvEsWEkC.js} +2 -2
- package/dist/_chunks/{payment-request-card-lmKLwsDs.js.map → payment-request-card-DvEsWEkC.js.map} +1 -1
- package/dist/_chunks/{practice-results-DjEzPgAK.js → practice-results-kayDEorM.js} +15 -14
- package/dist/_chunks/{practice-results-DjEzPgAK.js.map → practice-results-kayDEorM.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-CQ7yZdG3.js → rich-text-editor-CCI-Y3DN.js} +3 -5
- package/dist/_chunks/rich-text-editor-CCI-Y3DN.js.map +1 -0
- package/dist/_chunks/{task-card-BUgK6yZT.js → task-card-BalrLkSz.js} +41 -40
- package/dist/_chunks/task-card-BalrLkSz.js.map +1 -0
- package/dist/_chunks/{task-tray-CYG6rj2s.js → task-tray-COo-RlDv.js} +2 -2
- package/dist/_chunks/{task-tray-CYG6rj2s.js.map → task-tray-COo-RlDv.js.map} +1 -1
- package/dist/_chunks/tasks-panel-DLKpSNoE.js +844 -0
- package/dist/_chunks/tasks-panel-DLKpSNoE.js.map +1 -0
- package/dist/_chunks/tool-rail-ONaV-Nzz.js +588 -0
- package/dist/_chunks/tool-rail-ONaV-Nzz.js.map +1 -0
- package/dist/_chunks/use-check-animation--I3cS00X.js +28 -0
- package/dist/_chunks/use-check-animation--I3cS00X.js.map +1 -0
- package/dist/_chunks/use-list-reflow-Cw43nxw5.js +100 -0
- package/dist/_chunks/use-list-reflow-Cw43nxw5.js.map +1 -0
- package/dist/agent-catalog.json +15 -1
- package/dist/components/_shared/format-price.d.ts +15 -0
- package/dist/components/_shared/format-price.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-card.d.ts +36 -1
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-timeline/appointment-timeline.d.ts +6 -0
- package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +8 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/command-palette/command-palette.d.ts +7 -7
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/control-room-rail/index.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/money/index.d.ts +4 -0
- package/dist/components/money/index.d.ts.map +1 -0
- package/dist/components/money/index.js +6 -0
- package/dist/components/money/index.js.map +1 -0
- package/dist/components/money/money.agent.d.ts +3 -0
- package/dist/components/money/money.agent.d.ts.map +1 -0
- package/dist/components/money/money.d.ts +38 -0
- package/dist/components/money/money.d.ts.map +1 -0
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +16 -1
- package/dist/components/notes-panel/notes-panel.d.ts.map +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/rich-text-editor/help-me-write-overlay.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.d.ts +11 -3
- package/dist/components/task-card/task-card.d.ts.map +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/tasks-panel/tasks-panel.d.ts +1 -1
- package/dist/components/tasks-panel/tasks-panel.d.ts.map +1 -1
- package/dist/components/tool-rail/index.js +1 -1
- package/dist/components/tool-rail/tool-rail.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +43 -37
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-check-animation.d.ts +53 -0
- package/dist/hooks/use-check-animation.d.ts.map +1 -0
- package/dist/hooks/use-exit-transition.d.ts +48 -0
- package/dist/hooks/use-exit-transition.d.ts.map +1 -0
- package/dist/hooks/use-list-reflow.d.ts +47 -0
- package/dist/hooks/use-list-reflow.d.ts.map +1 -0
- package/dist/host-compat.css +8 -2
- package/dist/i18n/locales/ar.d.ts +10 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +12 -2
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +10 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +12 -2
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +10 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +12 -2
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +10 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +12 -2
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +10 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +12 -2
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +10 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +12 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +10 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +12 -2
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +13 -3
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +14 -4
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +10 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +12 -2
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +10 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +12 -2
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +10 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +12 -2
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +10 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +12 -2
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +10 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +12 -2
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +10 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +12 -2
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +10 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +12 -2
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +10 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +12 -2
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +10 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +12 -2
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +10 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +12 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +919 -916
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +12 -2
- package/dist/locales/de.json +12 -2
- package/dist/locales/el.json +12 -2
- package/dist/locales/en.json +12 -2
- package/dist/locales/es.json +12 -2
- package/dist/locales/fr.json +12 -2
- package/dist/locales/hi.json +12 -2
- package/dist/locales/it.json +14 -4
- package/dist/locales/ja.json +12 -2
- package/dist/locales/nl.json +12 -2
- package/dist/locales/pl.json +12 -2
- package/dist/locales/pt.json +12 -2
- package/dist/locales/ro.json +12 -2
- package/dist/locales/ru.json +12 -2
- package/dist/locales/sq.json +12 -2
- package/dist/locales/sv.json +12 -2
- package/dist/locales/tr.json +12 -2
- package/dist/locales/zh.json +12 -2
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/tokens.css +2 -1
- package/package.json +5 -1
- package/dist/_chunks/appointment-card-D-oj_ugh.js +0 -296
- package/dist/_chunks/appointment-card-D-oj_ugh.js.map +0 -1
- package/dist/_chunks/appointment-timeline-CymGHyIP.js +0 -403
- package/dist/_chunks/appointment-timeline-CymGHyIP.js.map +0 -1
- package/dist/_chunks/clinical-note-card-D2WTV2CO.js.map +0 -1
- package/dist/_chunks/format-price-DNqXPa_q.js.map +0 -1
- package/dist/_chunks/notes-panel-C4G-mhZ9.js +0 -380
- package/dist/_chunks/notes-panel-C4G-mhZ9.js.map +0 -1
- package/dist/_chunks/rich-text-editor-CQ7yZdG3.js.map +0 -1
- package/dist/_chunks/task-card-BUgK6yZT.js.map +0 -1
- package/dist/_chunks/tasks-panel-DQuaVvl5.js +0 -757
- package/dist/_chunks/tasks-panel-DQuaVvl5.js.map +0 -1
- package/dist/_chunks/tool-rail-8Scslq3X.js +0 -524
- package/dist/_chunks/tool-rail-8Scslq3X.js.map +0 -1
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBO,SAASA,EAAqBC,GAAUC,GAAoB;AACjE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAYJ,CAAK,GACrCK,IAAWC,EAA6C,IAAI;AAElE,SAAAC,EAAU,MAAM;AACd,QAAIN,KAAW,GAAG;AAGhB,MAAII,EAAS,YAAY,SACvB,aAAaA,EAAS,OAAO,GAC7BA,EAAS,UAAU,OAErBF,EAASH,CAAK;AACd;AAAA,IACF;AACA,UAAMQ,IAAQ,WAAW,MAAM;AAC7B,MAAAL,EAASH,CAAK,GACdK,EAAS,UAAU;AAAA,IACrB,GAAGJ,CAAO;AACV,WAAAI,EAAS,UAAUG,GACZ,MAAM,aAAaA,CAAK;AAAA,EACjC,GAAG,CAACR,GAAOC,CAAO,CAAC,GAEZC;AACT;ACTA,MAAMO,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,SAASC,EAAaC,GAAuC;AAC3D,SAAO,MAAM;AAAA,IACXA,EAAU,iBAA8BF,CAAkB;AAAA,EAAA,EAC1D,OAAO,CAACG,MAAO;AACf,QAAIA,EAAG,OAAQ,QAAO;AAGtB,QAAIC,IAA2BD;AAC/B,WAAOC,KAAM;AAEX,UADIA,EAAK,aAAa,OAAO,KACzBA,EAAK,aAAa,aAAa,MAAM,OAAQ,QAAO;AACxD,MAAAA,IAAOA,EAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAiBO,SAASC,EACdC,GACAC,IAA+B,IACzB;AACN,QAAM,EAAE,SAAAC,IAAU,IAAM,WAAAC,IAAY,IAAM,cAAAC,IAAe,OAASH,GAC5DI,IAAoBd,EAA2B,IAAI;AAEzD,EAAAC,EAAU,MAAM;AACd,QAAI,CAACU,EAAS;AACd,UAAMN,IAAYI,EAAa;AAC/B,QAAI,CAACJ,EAAW;AAQhB,QANAS,EAAkB,UAChB,OAAO,WAAa,OACpB,SAAS,yBAAyB,cAC9B,SAAS,gBACT,MAEFF,GAAW;AAIb,YAAMG,IAHYX,EAAaC,CAAS,EAI5B,CAAC,MAAMA,EAAU,YAAY,KAAKA,IAAY;AAC1D,MAAAU,KAAA,QAAAA,EAAQ;AAAA,IACV;AAEA,aAASC,EAAUC,GAAsB;AACvC,UAAIA,EAAM,QAAQ,MAAO;AACzB,YAAMC,IAAOT,EAAa;AAC1B,UAAI,CAACS,EAAM;AACX,YAAMC,IAAYf,EAAac,CAAI;AACnC,UAAIC,EAAU,WAAW,GAAG;AAC1B,QAAAF,EAAM,eAAA;AACN;AAAA,MACF;AACA,YAAMG,IAAQD,EAAU,CAAC,GACnBE,IAAOF,EAAUA,EAAU,SAAS,CAAC,GACrCG,IAAS,SAAS;AAExB,MAAIL,EAAM,YACJK,MAAWF,KAAS,CAACF,EAAK,SAASI,CAAM,OAC3CL,EAAM,eAAA,GACNI,EAAK,MAAA,MAGHC,MAAWD,KAAQ,CAACH,EAAK,SAASI,CAAM,OAC1CL,EAAM,eAAA,GACNG,EAAM,MAAA;AAAA,IAGZ;AAEA,WAAAf,EAAU,iBAAiB,WAAWW,CAAS,GAExC,MAAM;AAEX,UADAX,EAAU,oBAAoB,WAAWW,CAAS,GAC9CH,KAAgBC,EAAkB,SAAS;AAG7C,cAAMC,IAASD,EAAkB;AACjC,8BAAsB,MAAM;AAC1B,UAAIC,EAAO,eAAaA,EAAO,MAAA;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAACJ,GAASC,GAAWC,GAAcJ,CAAY,CAAC;AACrD;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface UseCheckAnimationOptions {
|
|
2
|
+
/**
|
|
3
|
+
* The committed state, as the host holds it. The hook shows an optimistic
|
|
4
|
+
* value while a toggle is in flight so the tick draws on the click rather
|
|
5
|
+
* than waiting for the host's re-render.
|
|
6
|
+
*/
|
|
7
|
+
checked: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* How long the tick takes to draw, in milliseconds. Keep it in step with
|
|
10
|
+
* the CSS transition the caller paints — `--duration-normal` (200ms) is
|
|
11
|
+
* the kit's default and the hook's too.
|
|
12
|
+
*/
|
|
13
|
+
durationMs?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Force the reduced-motion branch. Defaults to reading
|
|
16
|
+
* `prefers-reduced-motion: reduce`. Useful in tests and for callers that
|
|
17
|
+
* already track the preference upstream. When reduced, the tick lands
|
|
18
|
+
* immediately and `drawing` never turns true.
|
|
19
|
+
*/
|
|
20
|
+
reduceMotion?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface UseCheckAnimationReturn {
|
|
23
|
+
/** What to render: the optimistic value while a toggle is in flight. */
|
|
24
|
+
checked: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* True only while an unchecked → checked flip is drawing. Reflect it onto
|
|
27
|
+
* the element (e.g. `data-drawing`) to trigger the stroke animation;
|
|
28
|
+
* unticking is deliberately instant, since there is nothing to celebrate.
|
|
29
|
+
*/
|
|
30
|
+
drawing: boolean;
|
|
31
|
+
/** The effective duration — 0 under reduced motion. */
|
|
32
|
+
durationMs: number;
|
|
33
|
+
/**
|
|
34
|
+
* Flip the box. Returns the value it flipped to, so the caller can pass it
|
|
35
|
+
* straight to its own commit callback.
|
|
36
|
+
*/
|
|
37
|
+
toggle: () => boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Drives an animated tick for a checkbox whose state lives with the host.
|
|
41
|
+
*
|
|
42
|
+
* A checkbox backed by host state cannot animate on click: the tick would
|
|
43
|
+
* wait for the round trip, and when the row is about to leave the list the
|
|
44
|
+
* host may never send the new value back at all. This hook holds an
|
|
45
|
+
* optimistic value for the length of the animation so the tick draws
|
|
46
|
+
* immediately, then defers to the host once its value agrees.
|
|
47
|
+
*
|
|
48
|
+
* The hook owns the timing only. Paint the tick in CSS — a
|
|
49
|
+
* `stroke-dashoffset` transition keyed off `drawing` — so the animation
|
|
50
|
+
* honours the `--animation-duration` token in the accessible theme.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useCheckAnimation({ checked, durationMs, reduceMotion, }: UseCheckAnimationOptions): UseCheckAnimationReturn;
|
|
53
|
+
//# sourceMappingURL=use-check-animation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-check-animation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-check-animation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,UAAgB,EAChB,YAAY,GACb,EAAE,wBAAwB,GAAG,uBAAuB,CAyCpD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface UseExitTransitionOptions {
|
|
2
|
+
/**
|
|
3
|
+
* How long the exit takes, in milliseconds. Keep it in step with the CSS
|
|
4
|
+
* transition the caller paints — `--duration-normal` (200ms) is the kit's
|
|
5
|
+
* default and the hook's too.
|
|
6
|
+
*/
|
|
7
|
+
durationMs?: number;
|
|
8
|
+
/**
|
|
9
|
+
* Hold this long before the exit begins. The row is not reported as
|
|
10
|
+
* leaving until it elapses, so an animation already playing on the row (a
|
|
11
|
+
* tick drawing in) finishes before the fade starts rather than sharing it.
|
|
12
|
+
* Default 0.
|
|
13
|
+
*/
|
|
14
|
+
delayMs?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Force the reduced-motion branch. Defaults to reading
|
|
17
|
+
* `prefers-reduced-motion: reduce`. When reduced, `leave` commits
|
|
18
|
+
* synchronously and nothing is ever reported as leaving.
|
|
19
|
+
*/
|
|
20
|
+
reduceMotion?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface UseExitTransitionReturn {
|
|
23
|
+
/** Whether this id is mid-exit. Reflect it onto the row (e.g. `data-leaving`). */
|
|
24
|
+
isLeaving: (id: string) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Start `id` leaving, then run `commit` once the exit has played. Calling
|
|
27
|
+
* it twice for the same id is a no-op, so a double click cannot remove a
|
|
28
|
+
* row twice. Under reduced motion `commit` runs immediately.
|
|
29
|
+
*/
|
|
30
|
+
leave: (id: string, commit: () => void) => void;
|
|
31
|
+
/** The effective total delay + duration — 0 under reduced motion. */
|
|
32
|
+
durationMs: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Holds a row on screen long enough to fade out before the host removes it.
|
|
36
|
+
*
|
|
37
|
+
* A list that drops an item the instant it is actioned gives no sense of
|
|
38
|
+
* where the item went. This hook inverts the order: mark the row as leaving,
|
|
39
|
+
* let CSS fade it, and only then tell the host to drop it — so the removal
|
|
40
|
+
* the user sees and the state change agree.
|
|
41
|
+
*
|
|
42
|
+
* The hook owns the timing only. Paint the exit in CSS, keyed off
|
|
43
|
+
* `isLeaving`, so it honours the `--animation-duration` token in the
|
|
44
|
+
* accessible theme. Pending exits are cancelled on unmount, so a commit
|
|
45
|
+
* never fires against a list that has gone away.
|
|
46
|
+
*/
|
|
47
|
+
export declare function useExitTransition({ durationMs, delayMs, reduceMotion, }?: UseExitTransitionOptions): UseExitTransitionReturn;
|
|
48
|
+
//# sourceMappingURL=use-exit-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-exit-transition.d.ts","sourceRoot":"","sources":["../../src/hooks/use-exit-transition.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC;;;;OAIG;IACH,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChD,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,UAAgB,EAChB,OAAW,EACX,YAAY,GACb,GAAE,wBAA6B,GAAG,uBAAuB,CAgEzD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
export interface UseListReflowOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Changes to this string trigger a measurement pass — pass the rendered
|
|
5
|
+
* ids in order (`items.map((i) => i.id).join()`), so the hook runs when
|
|
6
|
+
* the list is reordered, added to or removed from, and not on every
|
|
7
|
+
* unrelated re-render.
|
|
8
|
+
*/
|
|
9
|
+
key: string;
|
|
10
|
+
/**
|
|
11
|
+
* How long a row takes to travel to its new place, in milliseconds.
|
|
12
|
+
* Matches the CSS the row paints via {@link REFLOW_ROW_CLASS}.
|
|
13
|
+
*/
|
|
14
|
+
durationMs?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Force the reduced-motion branch. Defaults to reading
|
|
17
|
+
* `prefers-reduced-motion: reduce`. When reduced, rows jump as before.
|
|
18
|
+
*/
|
|
19
|
+
reduceMotion?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface UseListReflowReturn<T extends HTMLElement> {
|
|
22
|
+
/** Attach to the element that contains the tracked rows. */
|
|
23
|
+
containerRef: RefObject<T | null>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Every tracked row must carry this class and a `data-reflow-id`. It parks
|
|
27
|
+
* the row at the offset the hook sets and animates it back to zero; the
|
|
28
|
+
* snap frame that sets the offset is exempted, so the jump itself is never
|
|
29
|
+
* animated.
|
|
30
|
+
*/
|
|
31
|
+
export declare const REFLOW_ROW_CLASS: string;
|
|
32
|
+
/**
|
|
33
|
+
* Slides the surviving rows of a list to their new positions instead of
|
|
34
|
+
* letting them snap.
|
|
35
|
+
*
|
|
36
|
+
* When a row is removed the rows below it jump up by its height, and the eye
|
|
37
|
+
* loses its place — the list looks like it re-rendered rather than like one
|
|
38
|
+
* row left. This runs the standard invert-and-play: it records where each
|
|
39
|
+
* row sat, and after the DOM changes it puts each moved row back where it
|
|
40
|
+
* was and releases it, so the gap closes as a movement.
|
|
41
|
+
*
|
|
42
|
+
* Measurement happens before paint, so no intermediate frame is shown. Rows
|
|
43
|
+
* that are new (no previous position) are left alone — this animates travel,
|
|
44
|
+
* not arrival.
|
|
45
|
+
*/
|
|
46
|
+
export declare function useListReflow<T extends HTMLElement>({ key, durationMs, reduceMotion, }: UseListReflowOptions): UseListReflowReturn<T>;
|
|
47
|
+
//# sourceMappingURL=use-list-reflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-list-reflow.d.ts","sourceRoot":"","sources":["../../src/hooks/use-list-reflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ/C,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,WAAW;IACxD,4DAA4D;IAC5D,YAAY,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAMlB,CAAC;AAMZ;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,EACnD,GAAG,EACH,UAAgB,EAChB,YAAY,GACb,EAAE,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CA6D/C"}
|
package/dist/host-compat.css
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
|
|
42
42
|
/* ───────────────────────────────────────────────────────────────────────
|
|
43
43
|
SECTION A — design tokens (custom properties). UNLAYERED.
|
|
44
|
-
|
|
44
|
+
96 declarations across 73 token names and 26 selectors.
|
|
45
45
|
|
|
46
46
|
Unlayered normal declarations outrank every layered one regardless of
|
|
47
47
|
source order and specificity, so this block beats the kit's own
|
|
@@ -199,10 +199,13 @@
|
|
|
199
199
|
.redactor-theme-alfadocs[data-min-height=lg] {
|
|
200
200
|
--rich-text-editor-min-block-size:384px;
|
|
201
201
|
}
|
|
202
|
+
.redactor-theme-alfadocs[data-min-height=fill] {
|
|
203
|
+
--rich-text-editor-min-block-size:max(128px, 30dvh);
|
|
204
|
+
}
|
|
202
205
|
|
|
203
206
|
/* ───────────────────────────────────────────────────────────────────────
|
|
204
207
|
SECTION B — non-token declarations. ORIGINAL LAYER PRESERVED.
|
|
205
|
-
|
|
208
|
+
133 declarations across 129 rules.
|
|
206
209
|
|
|
207
210
|
Kit-authored arbitrary-value utilities (`ds:w-[20rem]`) and the
|
|
208
211
|
vendored AG Grid rules. These set real properties on real elements,
|
|
@@ -463,6 +466,9 @@
|
|
|
463
466
|
.ds\:min-w-\[32rem\] {
|
|
464
467
|
min-width:512px;
|
|
465
468
|
}
|
|
469
|
+
.ds\:min-w-\[36rem\] {
|
|
470
|
+
min-width:576px;
|
|
471
|
+
}
|
|
466
472
|
.ds\:auto-rows-\[14rem\] {
|
|
467
473
|
grid-auto-rows:224px;
|
|
468
474
|
}
|
|
@@ -2119,10 +2119,15 @@ export declare const arUi: {
|
|
|
2119
2119
|
readonly duration_many: "{{count}} min";
|
|
2120
2120
|
readonly duration_other: "{{count}} min";
|
|
2121
2121
|
readonly firstVisit: "First visit";
|
|
2122
|
+
readonly firstVisitUnknown: "首次就诊?";
|
|
2123
|
+
readonly hasBookingNote: "预约备注";
|
|
2124
|
+
readonly recurring: "周期性";
|
|
2125
|
+
readonly signing: "{{complete}}/{{required}} 已签";
|
|
2122
2126
|
readonly treatmentWithElements: "{{care}} ({{elements}})";
|
|
2123
2127
|
readonly flag: {
|
|
2124
2128
|
readonly bookedOnline: "Booked online";
|
|
2125
2129
|
readonly highlightedAnamnesis: "Anamnesis flag";
|
|
2130
|
+
readonly billable: "可计费";
|
|
2126
2131
|
};
|
|
2127
2132
|
readonly state: {
|
|
2128
2133
|
readonly absent: "Absent";
|
|
@@ -3957,6 +3962,11 @@ export declare const arUi: {
|
|
|
3957
3962
|
readonly loadError: "تعذّر تحميل الملاحظات.";
|
|
3958
3963
|
readonly retry: "إعادة المحاولة";
|
|
3959
3964
|
readonly addFailed: "تعذّر حفظ الملاحظة.";
|
|
3965
|
+
readonly delete: "حذف ملاحظة";
|
|
3966
|
+
readonly deleteConfirmTitle: "حذف هذه الملاحظة؟";
|
|
3967
|
+
readonly deleteConfirmBody: "سيتم إزالة الملاحظة من السجل.";
|
|
3968
|
+
readonly deleteConfirmAction: "حذف";
|
|
3969
|
+
readonly deleteConfirmCancel: "إلغاء";
|
|
3960
3970
|
};
|
|
3961
3971
|
readonly toolRail: {
|
|
3962
3972
|
readonly reorderInstructions: "إعادة ترتيب {{tool}}. اضغط Alt + أعلى أو Alt + أسفل للنقل.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4rJP,CAAC"}
|
package/dist/i18n/locales/ar.js
CHANGED
|
@@ -2106,10 +2106,15 @@ const e = {
|
|
|
2106
2106
|
duration_many: "{{count}} min",
|
|
2107
2107
|
duration_other: "{{count}} min",
|
|
2108
2108
|
firstVisit: "First visit",
|
|
2109
|
+
firstVisitUnknown: "首次就诊?",
|
|
2110
|
+
hasBookingNote: "预约备注",
|
|
2111
|
+
recurring: "周期性",
|
|
2112
|
+
signing: "{{complete}}/{{required}} 已签",
|
|
2109
2113
|
treatmentWithElements: "{{care}} ({{elements}})",
|
|
2110
2114
|
flag: {
|
|
2111
2115
|
bookedOnline: "Booked online",
|
|
2112
|
-
highlightedAnamnesis: "Anamnesis flag"
|
|
2116
|
+
highlightedAnamnesis: "Anamnesis flag",
|
|
2117
|
+
billable: "可计费"
|
|
2113
2118
|
},
|
|
2114
2119
|
state: {
|
|
2115
2120
|
absent: "Absent",
|
|
@@ -3920,7 +3925,12 @@ const e = {
|
|
|
3920
3925
|
loading: "جارٍ تحميل الملاحظات…",
|
|
3921
3926
|
loadError: "تعذّر تحميل الملاحظات.",
|
|
3922
3927
|
retry: "إعادة المحاولة",
|
|
3923
|
-
addFailed: "تعذّر حفظ الملاحظة."
|
|
3928
|
+
addFailed: "تعذّر حفظ الملاحظة.",
|
|
3929
|
+
delete: "حذف ملاحظة",
|
|
3930
|
+
deleteConfirmTitle: "حذف هذه الملاحظة؟",
|
|
3931
|
+
deleteConfirmBody: "سيتم إزالة الملاحظة من السجل.",
|
|
3932
|
+
deleteConfirmAction: "حذف",
|
|
3933
|
+
deleteConfirmCancel: "إلغاء"
|
|
3924
3934
|
},
|
|
3925
3935
|
toolRail: {
|
|
3926
3936
|
reorderInstructions: "إعادة ترتيب {{tool}}. اضغط Alt + أعلى أو Alt + أسفل للنقل.",
|