@logicplanes/kaeso-ui 0.1.0 → 0.2.1
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/AGENTS.md +1 -0
- package/LICENSE +1 -1
- package/ai/component-guides.md +269 -7
- package/ai/component-registry.json +600 -800
- package/ai/component-registry.md +200 -141
- package/ai/icons.md +2 -2
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +3 -3
- package/dist/blocks/resource-list.js +2 -2
- package/dist/chunks/app-frame-BXh-06HL.js +214 -0
- package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
- package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
- package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
- package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
- package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
- package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
- package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
- package/dist/chunks/code-BADhvsgC.js +33 -0
- package/dist/chunks/code-BADhvsgC.js.map +1 -0
- package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
- package/dist/chunks/code-block-DxtladFW.js.map +1 -0
- package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
- package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
- package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
- package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
- package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
- package/dist/chunks/core-K960A4OT.js.map +1 -0
- package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
- package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
- package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
- package/dist/chunks/de-CTAo4KL7.js.map +1 -0
- package/dist/chunks/dialog-LNKgPEsV.js +319 -0
- package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
- package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
- package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
- package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
- package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
- package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
- package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
- package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
- package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
- package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
- package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
- package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
- package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
- package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
- package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
- package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
- package/dist/chunks/link-vz9aV8WX.js.map +1 -0
- package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
- package/dist/chunks/list-CzaiyNja.js.map +1 -0
- package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
- package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
- package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
- package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
- package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
- package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
- package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
- package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
- package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
- package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
- package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
- package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
- package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
- package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
- package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
- package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
- package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
- package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
- package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
- package/dist/chunks/section-DzOLLN1p.js.map +1 -0
- package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
- package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
- package/dist/chunks/select-Bc4kRiSG.js +227 -0
- package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
- package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
- package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
- package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
- package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
- package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
- package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
- package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
- package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
- package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
- package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
- package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
- package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
- package/dist/chunks/tooltip-DEbCCsru.js +151 -0
- package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
- package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
- package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
- package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
- package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
- package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
- package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
- package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
- package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
- package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
- package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
- package/dist/components/app-frame.js +3 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +78 -77
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +2 -2
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/sankey.js +1 -1
- package/dist/components/charts/timeseries.js +75 -75
- package/dist/components/charts/timeseries.js.map +1 -1
- package/dist/components/charts.js +1 -1
- package/dist/components/code-block.js +1 -1
- package/dist/components/code.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +105 -97
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +94 -95
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +3 -3
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +141 -153
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +5 -5
- package/dist/components/filter-chip.js +1 -1
- package/dist/components/flow.js +37 -36
- package/dist/components/flow.js.map +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +5 -5
- package/dist/components/kaeso/conversation.js +2 -2
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +4 -4
- package/dist/components/key-value.js +3 -3
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/logo.js +101 -1
- package/dist/components/logo.js.map +1 -0
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +8 -8
- package/dist/components/scroll-area.js +30 -23
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/section.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +46 -41
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/stat.js +75 -76
- package/dist/components/stat.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +38 -0
- package/dist/components/theme-image.js.map +1 -0
- package/dist/components/theme-menu.js +3 -3
- package/dist/components/theme-select.js +58 -0
- package/dist/components/theme-select.js.map +1 -0
- package/dist/components/toast.js +91 -92
- package/dist/components/toast.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +76 -74
- package/dist/kaeso.css +39 -16
- package/dist/styles.css +1 -1
- package/dist/theme.js +1 -1
- package/dist/types/components/app-frame/app-frame.d.ts +2 -10
- package/dist/types/components/app-frame/docs.d.ts +1 -0
- package/dist/types/components/app-frame/index.d.ts +1 -0
- package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
- package/dist/types/components/charts/linear-scale.d.ts +17 -0
- package/dist/types/components/code/code.d.ts +16 -0
- package/dist/types/components/code/docs.d.ts +1 -0
- package/dist/types/components/code-block/code-block.d.ts +2 -0
- package/dist/types/components/code-block/docs.d.ts +4 -0
- package/dist/types/components/command-palette/command-palette.d.ts +1 -0
- package/dist/types/components/command-palette/docs.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +5 -2
- package/dist/types/components/dialog/docs.d.ts +10 -0
- package/dist/types/components/dialog/index.d.ts +1 -0
- package/dist/types/components/dialog/scope.d.ts +9 -0
- package/dist/types/components/dialog/step-dialog.d.ts +9 -1
- package/dist/types/components/link/link.d.ts +8 -0
- package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
- package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
- package/dist/types/components/theme-image/docs.d.ts +13 -0
- package/dist/types/components/theme-image/index.d.ts +1 -0
- package/dist/types/components/theme-image/theme-image.d.ts +23 -0
- package/dist/types/components/theme-select/docs.d.ts +10 -0
- package/dist/types/components/theme-select/index.d.ts +1 -0
- package/dist/types/components/theme-select/theme-select.d.ts +34 -0
- package/dist/types/icons/groups.d.ts +1 -1
- package/dist/types/icons/vocabulary.d.ts +5 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/theme/theme-provider.d.ts +1 -1
- package/dist/types/utils/dialog-scope.d.ts +7 -0
- package/dist/types/utils/lazy-module.d.ts +7 -2
- package/dist/types/utils/observe-resize.d.ts +1 -0
- package/dist/types/utils/resize-motion.d.ts +2 -0
- package/foundations/motion.md +1 -0
- package/package.json +2 -2
- package/dist/chunks/app-frame-BBIMch8X.js +0 -224
- package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
- package/dist/chunks/code-DDyOlIFO.js +0 -23
- package/dist/chunks/code-DDyOlIFO.js.map +0 -1
- package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
- package/dist/chunks/core-Bgefcs3z.js.map +0 -1
- package/dist/chunks/de-BCg1eRVd.js.map +0 -1
- package/dist/chunks/dialog-CVqSVk3T.js +0 -283
- package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
- package/dist/chunks/icon-Bha63LaN.js.map +0 -1
- package/dist/chunks/link-tTapNTpM.js.map +0 -1
- package/dist/chunks/list-CN8pO8lv.js.map +0 -1
- package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
- package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
- package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
- package/dist/chunks/section-XStLtXKa.js.map +0 -1
- package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
- package/dist/chunks/select-Ca3HGsN1.js +0 -223
- package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
- package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
- package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
- package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
- package/dist/chunks/tooltip-CDu00nzg.js +0 -124
- package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
- package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
- package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
- package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
- package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
- package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
- package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
- package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-CVqSVk3T.js","names":["BaseDialog","__icon_Cancel01Icon","_Fragment","Dialog","BaseAlertDialog","AlertDialog","__icon_ArrowLeft01Icon","cn","usePortalContainer","InsetContent","useUiText","Button","IconButton","Input","useRestoreFocus","Fragment$1","DIALOG_FIELD","FOCUSABLE","usable","el","firstUsable","scope","selector","initialDialogControl","content","frame","footer","actions","dangerSecondary","KAESO_BUTTON_VARIANTS","safe","a","danger","primary","focusDialogSection","section","previous","KAESO_DIALOG_VARIANTS","KAESO_DIALOG_DEFAULT_VARIANTS","BACKDROP","DIALOG_VIEWPORT","DIALOG_POPUP","useScrolledUnder","ref","useRef","under","setUnder","useState","useEffect","check","ro","observe","child","mo","DialogFrame","t","Title","inline","Dialog","closeButton","Cancel01Icon","close","hideClose","Description","size","className","onSubmit","headerStart","title","description","children","focusFirstControl","open","Root","props","focus","container","defaultOpen","onOpenChange","o","trigger","Close","Dialog$1","KAESO_ALERT_DIALOG_VARIANTS","KAESO_ALERT_DIALOG_DEFAULT_VARIANTS","AlertFrame","cancelProp","typed","setTyped","busy","setBusy","pending","cancelLabel","typeBefore","typeAfter","AlertDialog","ok","confirmText","confirm","loading","r","onConfirm","done","tone","confirmLabel","AlertDialog$1","inner","setInner","isOpen","setOpen","KAESO_LAYER_DIALOG_VARIANTS","KAESO_LAYER_DIALOG_DEFAULT_VARIANTS","bodyOf","LayerDialog","wanted","layer","index","layers","sections","focused","tops","left","shown","useLayoutEffect","from","back","body","go","i","onLayerChange","stack","current","remember","e","l","ArrowLeft01Icon"],"sources":["../../src/components/dialog/focus.ts","../../src/components/dialog/dialog.tsx"],"sourcesContent":["import { KAESO_BUTTON_VARIANTS } from \"../button/button.js\";\n\nconst DIALOG_FIELD =\n 'input:not([type=hidden]):not([tabindex=\"-1\"]):not([aria-hidden=\"true\"]), textarea, select, [role=combobox]:not([tabindex=\"-1\"]), [role=radio][tabindex=\"0\"], [role=checkbox]:not([tabindex=\"-1\"]), [role=switch]:not([tabindex=\"-1\"]), [role=listbox]:not([tabindex=\"-1\"]), [role=grid] [data-index][tabindex=\"0\"]';\nconst FOCUSABLE = 'a[href], button, input:not([type=hidden]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst usable = (el: HTMLElement) => !el.closest(\"[hidden], [inert]\") && !el.matches(\":disabled, [aria-disabled=true]\");\nconst firstUsable = (scope: ParentNode, selector: string) => [...scope.querySelectorAll<HTMLElement>(selector)].find(usable) ?? null;\n\nexport function initialDialogControl(frame: HTMLElement, scope?: HTMLElement | undefined): HTMLElement | null {\n const content = scope ?? frame.querySelector<HTMLElement>(\"[data-dialog-body]\");\n const footer = frame.querySelector<HTMLElement>(\"[data-dialog-footer]\");\n const actions = footer ? [...footer.querySelectorAll<HTMLElement>(\"button, a[href]\")].filter(usable) : [];\n const { primary, danger, \"danger-secondary\": dangerSecondary } = KAESO_BUTTON_VARIANTS.variant;\n const safe = actions.filter((a) => !a.classList.contains(danger.classes) && !a.classList.contains(dangerSecondary.classes));\n return (\n (content && (firstUsable(content, \"[data-autofocus]\") ?? firstUsable(content, DIALOG_FIELD))) ??\n safe.find((a) => a.classList.contains(primary.classes)) ??\n safe[0] ??\n (content && firstUsable(content, FOCUSABLE)) ??\n firstUsable(frame, FOCUSABLE)\n );\n}\n\nexport function focusDialogSection(section: HTMLElement | null | undefined, previous?: HTMLElement | null | undefined) {\n const frame = section?.closest<HTMLElement>(\"[data-dialog-frame]\");\n if (!section || !frame || frame.closest(\"[data-closed]\")) return;\n const back = previous?.isConnected && frame.contains(previous) && usable(previous) ? previous : null;\n (back ?? initialDialogControl(frame, section))?.focus({ preventScroll: true });\n}\n","import { InsetContent } from \"../../utils/inset.js\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { forwardRef, useEffect, useLayoutEffect, useRef, useState, type FocusEvent, type KeyboardEvent, type ReactElement, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { AlertDialog as BaseAlertDialog } from \"@base-ui/react/alert-dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon, ArrowLeft01Icon as __icon_ArrowLeft01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Button } from \"../button/button.js\";\nimport { Input } from \"../input/input.js\";\nimport { focusDialogSection, initialDialogControl } from \"./focus.js\";\n\nexport const KAESO_DIALOG_VARIANTS = {\n size: {\n sm: { classes: \"w-440\" },\n md: { classes: \"w-560\" },\n lg: { classes: \"w-720\" },\n },\n} as const;\nexport const KAESO_DIALOG_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst BACKDROP = \"fixed inset-0 z-50 bg-overlay backdrop-motion\";\nconst DIALOG_VIEWPORT = \"fixed inset-0 z-50 flex items-center justify-center p-16\";\nconst DIALOG_POPUP = \"relative flex dialog-limits flex-col overflow-hidden rounded-dialog bg-raised text-fg shadow-dialog outline-none dialog-motion\";\n\nfunction useScrolledUnder<T extends HTMLElement>() {\n const ref = useRef<T | null>(null);\n const [under, setUnder] = useState(false);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const check = () => setUnder(el.scrollHeight - el.scrollTop - el.clientHeight > 1);\n check();\n el.addEventListener(\"scroll\", check, { passive: true });\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(check) : null;\n const observe = () => {\n for (const child of el.children) ro?.observe(child);\n };\n ro?.observe(el);\n observe();\n const mo = new MutationObserver(() => {\n observe();\n check();\n });\n mo.observe(el, { childList: true });\n return () => {\n el.removeEventListener(\"scroll\", check);\n ro?.disconnect();\n mo.disconnect();\n };\n }, []);\n return { ref, under };\n}\n\nexport interface DialogProps {\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n trigger?: ReactElement | undefined;\n title: ReactNode;\n description?: ReactNode | undefined;\n size?: keyof typeof KAESO_DIALOG_VARIANTS.size | undefined;\n children?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n onSubmit?: (() => void) | undefined;\n hideClose?: boolean | undefined;\n headerStart?: ReactNode | undefined;\n className?: string | undefined;\n inline?: boolean | undefined;\n}\n\nfunction DialogFrame({ title, description, children, footer, onSubmit, hideClose, headerStart, size = \"md\", className, inline }: DialogProps) {\n const { ref, under } = useScrolledUnder<HTMLDivElement>();\n const t = useUiText();\n const Title = inline ? \"h2\" : BaseDialog.Title;\n const closeButton = <IconButton icon={__icon_Cancel01Icon} aria-label={t(\"dialog.close\", \"Close\")} tooltip={false} />;\n const close = hideClose ? null : inline ? closeButton : <BaseDialog.Close render={closeButton} />;\n const Description = inline ? \"p\" : BaseDialog.Description;\n return (\n <div\n data-dialog-frame=\"\"\n className={cn(\"flex min-h-0 flex-col\", inline && \"rounded-dialog bg-raised shadow-dialog\", inline && KAESO_DIALOG_VARIANTS.size[size].classes, className)}\n onKeyDown={(e: KeyboardEvent) => {\n if (onSubmit && e.key === \"Enter\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n onSubmit();\n }\n }}\n >\n {headerStart !== undefined ? (\n <>\n <div className=\"flex h-32 items-center justify-between px-16 pt-16 box-content\">\n <span className=\"flex items-center\">{headerStart}</span>\n {close}\n </div>\n <div className=\"flex flex-col gap-4 px-24 pt-8 pb-4\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n {description && <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>}\n </div>\n </>\n ) : (\n <div className=\"flex items-start gap-12 px-24 pt-20 pb-4\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-4 pt-4\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n {description && <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>}\n </div>\n {close && <span className=\"-mr-8 flex\">{close}</span>}\n </div>\n )}\n {children && (\n <div ref={ref} data-dialog-body=\"\" className={cn(\"min-h-0 flex-1 overflow-y-auto px-24 pt-16 scrollbar-quiet\", footer ? \"pb-8\" : \"pb-24\")}>\n {children}\n </div>\n )}\n {footer && (\n <div\n data-dialog-footer=\"\"\n className={cn(\"flex shrink-0 flex-wrap items-center justify-end gap-8 px-24 pt-16 pb-20 transition-control\", under && \"hairline-t\")}\n >\n {footer}\n </div>\n )}\n </div>\n );\n}\n\nfunction focusFirstControl(): HTMLElement | true {\n const open = [...document.querySelectorAll<HTMLElement>(\"[role=dialog], [role=alertdialog]\")].pop();\n const frame = open?.querySelector<HTMLElement>(\"[data-dialog-frame]\");\n return (frame && initialDialogControl(frame)) ?? open ?? true;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, DialogProps>(function Dialog(props, ref) {\n const { open, defaultOpen, onOpenChange, trigger, size = \"md\", inline } = props;\n const focus = useRestoreFocus(open, focusFirstControl);\n const container = usePortalContainer();\n if (inline) return <DialogFrame {...props} />;\n return (\n <BaseDialog.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className={BACKDROP} />\n <BaseDialog.Viewport className={DIALOG_VIEWPORT}>\n <BaseDialog.Popup\n ref={ref}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className={cn(DIALOG_POPUP, KAESO_DIALOG_VARIANTS.size[size].classes)}\n >\n <InsetContent inset={false}>\n <DialogFrame {...props} />\n </InsetContent>\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Dialog\";\n\nfunction Close({ children }: { children: ReactElement }) {\n return <BaseDialog.Close render={children} />;\n}\nif (process.env.NODE_ENV !== \"production\") Close.displayName = \"Dialog.Close\";\n\nexport const Dialog = /* @__PURE__ */ Object.assign(Root, { Close });\n\nexport const KAESO_ALERT_DIALOG_VARIANTS = {\n tone: {\n danger: { classes: \"bg-danger-tint text-danger-text\" },\n warning: { classes: \"bg-warning-tint text-warning-text\" },\n info: { classes: \"bg-info-tint text-info-text\" },\n },\n} as const;\nexport const KAESO_ALERT_DIALOG_DEFAULT_VARIANTS = { tone: \"danger\" } as const;\n\nexport interface AlertDialogProps {\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n trigger?: ReactElement | undefined;\n title: ReactNode;\n description: ReactNode;\n confirmLabel: string;\n cancelLabel?: string | undefined;\n onConfirm: () => void | Promise<void>;\n tone?: keyof typeof KAESO_ALERT_DIALOG_VARIANTS.tone | undefined;\n confirmText?: string | undefined;\n loading?: boolean | undefined;\n inline?: boolean | undefined;\n}\n\nfunction AlertFrame({\n title,\n description,\n confirmLabel,\n cancelLabel: cancelProp,\n onConfirm,\n tone = \"danger\",\n confirmText,\n loading,\n inline,\n close,\n}: AlertDialogProps & { close: () => void }) {\n const [typed, setTyped] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const pending = useRef(false);\n const t = useUiText();\n const cancelLabel = cancelProp ?? t(\"alertDialog.cancel\", \"Cancel\");\n const [typeBefore, typeAfter = \"\"] = t(\"alertDialog.typeToConfirm\", \"Type {text} to confirm\").split(\"{text}\");\n const Title = inline ? \"h2\" : BaseAlertDialog.Title;\n const Description = inline ? \"p\" : BaseAlertDialog.Description;\n const ok = !confirmText || typed === confirmText;\n const confirm = async () => {\n if (!ok || loading || pending.current) return;\n const r = onConfirm();\n if (!(r instanceof Promise)) return close();\n pending.current = true;\n setBusy(true);\n const done = await r.then(\n () => true,\n () => false,\n );\n pending.current = false;\n setBusy(false);\n if (done) close();\n };\n return (\n <div className={cn(\"flex flex-col gap-20 p-24\", inline && \"w-440 rounded-dialog bg-raised shadow-dialog\")}>\n <div className=\"flex flex-col gap-6\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>\n </div>\n {confirmText && (\n <Input\n label={\n <span className=\"font-regular text-fg-secondary\">\n {typeBefore}\n <span className=\"mono font-medium text-fg\">{confirmText}</span>\n {typeAfter}\n </span>\n }\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoComplete=\"off\"\n spellCheck={false}\n onKeyDown={(e) => e.key === \"Enter\" && confirm()}\n />\n )}\n <div className=\"flex flex-wrap justify-end gap-8\">\n {inline ? <Button>{cancelLabel}</Button> : <BaseAlertDialog.Close render={<Button>{cancelLabel}</Button>} />}\n <Button variant={tone === \"danger\" ? \"danger\" : \"primary\"} onClick={confirm} disabled={!ok} loading={busy || loading}>\n {confirmLabel}\n </Button>\n </div>\n </div>\n );\n}\n\nexport function AlertDialog(props: AlertDialogProps) {\n const { open, defaultOpen, onOpenChange, trigger, inline } = props;\n const [inner, setInner] = useState(defaultOpen ?? false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const focus = useRestoreFocus(isOpen);\n const container = usePortalContainer();\n if (inline) return <AlertFrame {...props} close={() => undefined} />;\n return (\n <BaseAlertDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)}>\n {trigger && <BaseAlertDialog.Trigger render={trigger} />}\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className={BACKDROP} />\n <BaseAlertDialog.Viewport className={DIALOG_VIEWPORT}>\n <BaseAlertDialog.Popup initialFocus={focus.initialFocus} finalFocus={focus.finalFocus} className={cn(DIALOG_POPUP, \"w-440\")}>\n <InsetContent inset={false}>\n <AlertFrame {...props} close={() => setOpen(false)} />\n </InsetContent>\n </BaseAlertDialog.Popup>\n </BaseAlertDialog.Viewport>\n </BaseAlertDialog.Portal>\n </BaseAlertDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") AlertDialog.displayName = \"AlertDialog\";\n\nexport const KAESO_LAYER_DIALOG_VARIANTS = KAESO_DIALOG_VARIANTS;\nexport const KAESO_LAYER_DIALOG_DEFAULT_VARIANTS = KAESO_DIALOG_DEFAULT_VARIANTS;\n\nexport interface DialogLayer {\n title: ReactNode;\n description?: ReactNode | undefined;\n content: ReactNode;\n footer?: ReactNode | undefined;\n}\n\nexport interface LayerDialogProps extends Omit<DialogProps, \"title\" | \"description\" | \"children\" | \"footer\" | \"headerStart\"> {\n layers: DialogLayer[];\n layer?: number | undefined;\n onLayerChange?: ((layer: number) => void) | undefined;\n}\n\nconst bodyOf = (el: HTMLElement | null | undefined) => el?.closest<HTMLElement>(\"[data-dialog-body]\") ?? null;\n\nexport function LayerDialog({ layers, layer, onLayerChange, ...props }: LayerDialogProps) {\n const [inner, setInner] = useState(0);\n const t = useUiText();\n const wanted = layer ?? inner;\n const index = wanted > 0 && wanted < layers.length ? wanted : 0;\n const sections = useRef<(HTMLDivElement | null)[]>([]);\n const focused = useRef<(HTMLElement | null)[]>([]);\n const tops = useRef<number[]>([]);\n const left = useRef(index);\n const shown = useRef(index);\n if (left.current !== index) {\n tops.current[left.current] = bodyOf(sections.current[left.current])?.scrollTop ?? 0;\n left.current = index;\n }\n useLayoutEffect(() => {\n const from = shown.current;\n shown.current = index;\n if (from === index) return;\n const back = index < from;\n if (!back) focused.current[index] = null;\n focused.current.length = index + 1;\n const section = sections.current[index];\n const body = bodyOf(section);\n if (body) body.scrollTop = back ? (tops.current[index] ?? 0) : 0;\n focusDialogSection(section, back ? focused.current[index] : null);\n }, [index]);\n const go = (i: number) => {\n if (layer === undefined) setInner(i);\n onLayerChange?.(i);\n };\n const stack = layers.slice(0, index + 1);\n const current = stack[index];\n if (!current) return null;\n const remember = (i: number) => (e: FocusEvent<HTMLElement>) => {\n if (e.target instanceof HTMLElement) focused.current[i] = e.target;\n };\n return (\n <Dialog\n {...props}\n title={current.title}\n description={current.description}\n footer={\n current.footer\n ? stack.map((l, i) =>\n l.footer ? (\n <div key={i} hidden={i !== index} className=\"contents\" onFocus={remember(i)}>\n {l.footer}\n </div>\n ) : null,\n )\n : undefined\n }\n headerStart={\n index > 0 ? (\n <IconButton key=\"back\" icon={__icon_ArrowLeft01Icon} aria-label={t(\"dialog.back\", \"Back\")} onClick={() => go(index - 1)} className=\"animate-layer-in\" />\n ) : null\n }\n >\n {stack.map((l, i) => (\n <div\n key={i}\n ref={(el) => {\n sections.current[i] = el;\n }}\n hidden={i !== index}\n className=\"animate-layer-in\"\n onFocus={remember(i)}\n >\n {l.content}\n </div>\n ))}\n </Dialog>\n );\n}\nif (process.env.NODE_ENV !== \"production\") LayerDialog.displayName = \"LayerDialog\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-Bha63LaN.js","names":["icons","Key01Icon","ShieldKeyIcon","Folder01Icon","Building03Icon","AiBrain01Icon","TestTube01Icon","Link01Icon","GaugeIcon","Wallet01Icon","LeftToRightListBulletIcon","Analytics01Icon","User03Icon","UserGroupIcon","Robot01Icon","Settings01Icon","Audit01Icon","ServerStack01Icon","PlugSocketIcon","Route01Icon","ArrowDataTransferVerticalIcon","Database01Icon","LockKeyIcon","LaptopIcon","DashboardSquare01Icon","ChartLineData01Icon","Home01Icon","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","Logout01Icon","Copy01Icon","ArrowUpRight01Icon","LinkSquare02Icon","Add01Icon","Cancel01Icon","Edit02Icon","Delete02Icon","Download01Icon","Upload01Icon","Refresh01Icon","ArrowReloadHorizontalIcon","Search01Icon","FilterHorizontalIcon","SlidersHorizontalIcon","MoreHorizontalIcon","Menu01Icon","Sorting05Icon","UnfoldMoreIcon","ArrowExpand01Icon","ArrowShrink02Icon","ViewIcon","ViewOffSlashIcon","EyeIcon","SidebarLeftIcon","SidebarRightIcon","GridViewIcon","Layers01Icon","Tick02Icon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","InformationCircleIcon","MinusSignIcon","Notification03Icon","ArrowDown01Icon","ArrowUp01Icon","ArrowLeft01Icon","ArrowRight01Icon","Calendar03Icon","Clock01Icon","CodeIcon","Mail01Icon","KeyboardIcon","HelpCircleIcon","GithubIcon","Sun03Icon","Moon02Icon","ComputerIcon"],"sources":["../../src/icons/vocabulary.ts"],"sourcesContent":["import {\n Add01Icon,\n AiBrain01Icon,\n TestTube01Icon,\n Alert02Icon,\n AlertCircleIcon,\n Analytics01Icon,\n ArrowDown01Icon,\n ArrowLeft01Icon,\n ArrowRight01Icon,\n ArrowUp01Icon,\n ArrowUpRight01Icon,\n ArrowDataTransferVerticalIcon,\n Audit01Icon,\n Building03Icon,\n Calendar03Icon,\n Cancel01Icon,\n CheckmarkCircle02Icon,\n Clock01Icon,\n CodeIcon,\n Copy01Icon,\n CpuIcon,\n Database01Icon,\n Delete02Icon,\n Download01Icon,\n Edit02Icon,\n EyeIcon,\n FilterHorizontalIcon,\n Folder01Icon,\n GaugeIcon,\n GithubIcon,\n HelpCircleIcon,\n Home01Icon,\n Image01Icon,\n InformationCircleIcon,\n Key01Icon,\n KeyboardIcon,\n LeftToRightListBulletIcon,\n Link01Icon,\n LinkSquare02Icon,\n LockKeyIcon,\n Logout01Icon,\n Mail01Icon,\n Menu01Icon,\n Moon02Icon,\n MoreHorizontalIcon,\n Pdf01Icon,\n PlugSocketIcon,\n Refresh01Icon,\n Robot01Icon,\n Route01Icon,\n Search01Icon,\n ServerStack01Icon,\n Settings01Icon,\n ShieldKeyIcon,\n SidebarLeftIcon,\n SidebarRightIcon,\n SlidersHorizontalIcon,\n Sorting05Icon,\n SourceCodeIcon,\n Sun03Icon,\n Tick02Icon,\n ToolsIcon,\n User03Icon,\n UserGroupIcon,\n ViewIcon,\n ViewOffSlashIcon,\n Wallet01Icon,\n ComputerIcon,\n DashboardSquare01Icon,\n ChartLineData01Icon,\n GridViewIcon,\n Layers01Icon,\n ArrowExpand01Icon,\n ArrowShrink02Icon,\n MinusSignIcon,\n Upload01Icon,\n Notification03Icon,\n ArrowReloadHorizontalIcon,\n UnfoldMoreIcon,\n LaptopIcon,\n} from \"@hugeicons/core-free-icons\";\n\nexport const icons = {\n key: Key01Icon,\n providerKey: ShieldKeyIcon,\n project: Folder01Icon,\n organization: Building03Icon,\n model: AiBrain01Icon,\n playground: TestTube01Icon,\n alias: Link01Icon,\n limit: GaugeIcon,\n budget: Wallet01Icon,\n requestLog: LeftToRightListBulletIcon,\n usage: Analytics01Icon,\n member: User03Icon,\n members: UserGroupIcon,\n serviceAccount: Robot01Icon,\n settings: Settings01Icon,\n audit: Audit01Icon,\n instance: ServerStack01Icon,\n provider: PlugSocketIcon,\n route: Route01Icon,\n gateway: ArrowDataTransferVerticalIcon,\n database: Database01Icon,\n security: LockKeyIcon,\n session: LaptopIcon,\n overview: DashboardSquare01Icon,\n chart: ChartLineData01Icon,\n home: Home01Icon,\n tools: ToolsIcon,\n reasoning: CpuIcon,\n vision: Image01Icon,\n pdf: Pdf01Icon,\n structuredOutput: SourceCodeIcon,\n signOut: Logout01Icon,\n copy: Copy01Icon,\n externalLink: ArrowUpRight01Icon,\n openExternal: LinkSquare02Icon,\n add: Add01Icon,\n close: Cancel01Icon,\n edit: Edit02Icon,\n delete: Delete02Icon,\n download: Download01Icon,\n upload: Upload01Icon,\n refresh: Refresh01Icon,\n retry: ArrowReloadHorizontalIcon,\n search: Search01Icon,\n filter: FilterHorizontalIcon,\n displayOptions: SlidersHorizontalIcon,\n more: MoreHorizontalIcon,\n menu: Menu01Icon,\n sort: Sorting05Icon,\n switcher: UnfoldMoreIcon,\n expand: ArrowExpand01Icon,\n collapse: ArrowShrink02Icon,\n show: ViewIcon,\n hide: ViewOffSlashIcon,\n reveal: EyeIcon,\n sidebar: SidebarLeftIcon,\n sidePanel: SidebarRightIcon,\n list: LeftToRightListBulletIcon,\n board: GridViewIcon,\n stack: Layers01Icon,\n check: Tick02Icon,\n success: CheckmarkCircle02Icon,\n warning: Alert02Icon,\n error: AlertCircleIcon,\n info: InformationCircleIcon,\n minus: MinusSignIcon,\n notification: Notification03Icon,\n chevronDown: ArrowDown01Icon,\n chevronUp: ArrowUp01Icon,\n chevronLeft: ArrowLeft01Icon,\n chevronRight: ArrowRight01Icon,\n arrowRight: ArrowRight01Icon,\n calendar: Calendar03Icon,\n time: Clock01Icon,\n code: CodeIcon,\n mail: Mail01Icon,\n keyboard: KeyboardIcon,\n help: HelpCircleIcon,\n github: GithubIcon,\n themeLight: Sun03Icon,\n themeDark: Moon02Icon,\n themeSystem: ComputerIcon,\n} as const;\n\nexport type IconName = keyof typeof icons;\n"],"mappings":";;AAmFA,IAAaA,KAAQ;CACnB,KAAKC;CACL,aAAaC;CACb,SAASC;CACT,cAAcC;CACd,OAAOC;CACP,YAAYC;CACZ,OAAOC;CACP,OAAOC;CACP,QAAQC;CACR,YAAYC;CACZ,OAAOC;CACP,QAAQC;CACR,SAASC;CACT,gBAAgBC;CAChB,UAAUC;CACV,OAAOC;CACP,UAAUC;CACV,UAAUC;CACV,OAAOC;CACP,SAASC;CACT,UAAUC;CACV,UAAUC;CACV,SAASC;CACT,UAAUC;CACV,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,WAAWC;CACX,QAAQC;CACR,KAAKC;CACL,kBAAkBC;CAClB,SAASC;CACT,MAAMC;CACN,cAAcC;CACd,cAAcC;CACd,KAAKC;CACL,OAAOC;CACP,MAAMC;CACN,QAAQC;CACR,UAAUC;CACV,QAAQC;CACR,SAASC;CACT,OAAOC;CACP,QAAQC;CACR,QAAQC;CACR,gBAAgBC;CAChB,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,QAAQC;CACR,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,QAAQC;CACR,SAASC;CACT,WAAWC;CACX,MAAM/C;CACN,OAAOgD;CACP,OAAOC;CACP,OAAOC;CACP,SAASC;CACT,SAASC;CACT,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,cAAcC;CACd,aAAaC;CACb,WAAWC;CACX,aAAaC;CACb,cAAcC;CACd,YAAYA;CACZ,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,MAAMC;CACN,QAAQC;CACR,YAAYC;CACZ,WAAWC;CACX,aAAaC;AACf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link-tTapNTpM.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {isExternal && (\n <span aria-hidden=\"true\" className=\"whitespace-nowrap\">\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ml-2 inline-block align-middle\" />\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,kGACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCC,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EATN,UAAA;GAWGQ;GACAL,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IAAnC,UAAA,CACG,KACD,kBAACP,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPY,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-CN8pO8lv.js","names":["__icon_Add01Icon","__icon_Cancel01Icon","cn","usePortalContainer","useUiText","Icon","useLazyModule","lazyModule","Text","IconButton","useLayoutWidth","Skeleton","scrollParent","checkbox","n","RowCheckbox","ariaLabel","mod","over","setOver","useState","pressed","setPressed","useEffect","timer","release","onToggle","checked","virtualRows","KAESO_LIST_VARIANTS","KAESO_LIST_DEFAULT_VARIANTS","ID_W","NARROW","FOCUSABLE","TEXT_ENTRY","removeWidgetsFromTabOrder","line","root","primary","widget","List","selectedProp","forceRow","inset","useInset","selectedInner","setSelectedInner","selected","setSelected","useCallback","s","onSelectedChange","collapsed","setCollapsed","groups","g","active","setActive","anchor","setAnchor","useRef","width","narrow","flat","useMemo","rows","list","item","c","i","a","items","firstRow","f","none","virtual","virtualizeAbove","estimateSize","density","VirtualRows","scrollTo","tabStop","focusLine","now","hadVirtualRows","useLayoutEffect","el","observer","toggle","id","enabledIds","lines","onKeyDown","target","index","onPrimary","row","selectable","moveTo","from","next","widgets","w","at","onOpen","selecting","render","GroupHeader","ListRow","ref","loading","className","LoadingRows","empty","FirstRows","selectionBar","SelectionBar","selectionActions","view","total","extra","count","j","force","card","t","stacked","onSelect","depth","lastChild","idWidth","first","indent","glyph","title","onAdd","Add01Icon","addLabel","container","createPortal","children","onClear","Cancel01Icon","SelectionAction","danger","icon"],"sources":["../../src/components/list/row-checkbox.tsx","../../src/components/list/list.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\n\nconst checkbox = /* @__PURE__ */ lazyModule(() => import(\"../checkbox/checkbox.js\"));\n\nexport function RowCheckbox({ checked, onToggle, \"aria-label\": ariaLabel }: { checked: boolean; onToggle: () => void; \"aria-label\": string }) {\n const mod = useLazyModule(checkbox, true);\n const [over, setOver] = useState(false);\n const [pressed, setPressed] = useState(false);\n useEffect(() => {\n if (!pressed) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const release = () => {\n timer = setTimeout(() => setPressed(false));\n };\n window.addEventListener(\"pointerup\", release, true);\n window.addEventListener(\"pointercancel\", release, true);\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"pointerup\", release, true);\n window.removeEventListener(\"pointercancel\", release, true);\n };\n }, [pressed]);\n if (mod && !over && !pressed) return <mod.CheckboxBox checked={checked} onCheckedChange={onToggle} aria-label={ariaLabel} />;\n return (\n <span\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n onPointerEnter={() => setOver(true)}\n onPointerLeave={() => setOver(false)}\n onPointerDown={() => setPressed(true)}\n onClick={() => {\n onToggle();\n setOver(false);\n setPressed(false);\n }}\n className=\"relative -m-3 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-checkbox\"\n >\n <span aria-hidden className={cn(\"flex size-18 items-center justify-center rounded-checkbox\", checked ? \"bg-ink\" : \"bg-raised shadow-selector\")} />\n </span>\n );\n}\n","import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { Add01Icon as __icon_Add01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Text } from \"../text/text.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { RowCheckbox } from \"./row-checkbox.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst virtualRows = /* @__PURE__ */ lazyModule(() => import(\"./virtual-rows.js\"));\n\nexport const KAESO_LIST_VARIANTS = {\n density: {\n default: { classes: \"h-44\" },\n compact: { classes: \"h-36\" },\n },\n} as const;\nexport const KAESO_LIST_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport interface ListItemData {\n id: string;\n title: ReactNode;\n textValue?: string | undefined;\n subtitle?: ReactNode | undefined;\n glyph?: ReactNode | undefined;\n leading?: ReactNode | undefined;\n displayId?: string | undefined;\n meta?: ReactNode | undefined;\n date?: ReactNode | undefined;\n avatar?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children?: ListItemData[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ListGroup {\n id: string;\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n items: ListItemData[];\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n defaultCollapsed?: boolean | undefined;\n}\n\ntype Flat = { kind: \"header\"; group: ListGroup; key: string } | { kind: \"row\"; item: ListItemData; depth: 0 | 1; lastChild: boolean; key: string };\n\nexport interface ListProps {\n items?: ListItemData[] | undefined;\n groups?: ListGroup[] | undefined;\n onOpen?: ((item: ListItemData) => void) | undefined;\n selectable?: boolean | undefined;\n selected?: Set<string> | undefined;\n onSelectedChange?: ((selected: Set<string>) => void) | undefined;\n idWidth?: 48 | 64 | 80 | 96 | 120 | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n virtualizeAbove?: number | undefined;\n selectionActions?: ReactNode | undefined;\n selectionBar?: boolean | undefined;\n loading?: boolean | undefined;\n empty?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ID_W = { 48: \"w-48\", 64: \"w-64\", 80: \"w-80\", 96: \"w-96\", 120: \"w-120\" } as const;\n\nconst NARROW = 520;\nconst FOCUSABLE = \"a[href], button, input, select, textarea, [tabindex], [contenteditable=true]\";\nconst TEXT_ENTRY = \"input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]\";\n\nfunction removeWidgetsFromTabOrder(root: HTMLElement) {\n for (const line of root.querySelectorAll<HTMLElement>(\"[role=row]\")) {\n const primary = line.querySelector(\"[data-index]\");\n if (!primary) continue;\n for (const widget of line.querySelectorAll<HTMLElement>(FOCUSABLE)) {\n if (widget !== primary && widget.getAttribute(\"tabindex\") !== \"-1\") widget.setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n\nexport const List = /* @__PURE__ */ forwardRef<HTMLDivElement, ListProps>(function List(\n {\n items,\n groups,\n onOpen,\n selectable,\n selected: selectedProp,\n onSelectedChange,\n idWidth,\n density = \"default\",\n virtualizeAbove = 100,\n selectionActions,\n selectionBar = true,\n loading,\n empty,\n className,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n },\n ref,\n) {\n const inset = useInset();\n const [selectedInner, setSelectedInner] = useState<Set<string>>(new Set());\n const selected = selectedProp ?? selectedInner;\n const setSelected = useCallback(\n (s: Set<string>) => {\n if (!selectedProp) setSelectedInner(s);\n onSelectedChange?.(s);\n },\n [selectedProp, onSelectedChange],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set((groups ?? []).filter((g) => g.defaultCollapsed).map((g) => g.id)));\n const [active, setActive] = useState(-1);\n const [anchor, setAnchor] = useState<number | null>(null);\n const root = useRef<HTMLDivElement | null>(null);\n const width = useLayoutWidth(root);\n const narrow = !!width && width < NARROW;\n\n const flat = useMemo<Flat[]>(() => {\n const rows = (list: ListItemData[]): Flat[] =>\n list.flatMap((item) => [\n { kind: \"row\" as const, item, depth: 0 as const, lastChild: false, key: item.id },\n ...(item.children ?? []).map((c, i, a) => ({ kind: \"row\" as const, item: c, depth: 1 as const, lastChild: i === a.length - 1, key: c.id })),\n ]);\n if (groups) return groups.flatMap((g) => [{ kind: \"header\" as const, group: g, key: `h-${g.id}` }, ...(collapsed.has(g.id) ? [] : rows(g.items))]);\n return rows(items ?? []);\n }, [items, groups, collapsed]);\n const firstRow = flat.findIndex((f) => f.kind === \"row\");\n const none = groups ? groups.every((g) => g.items.length === 0) : (items ?? []).length === 0;\n\n const virtual = flat.length > virtualizeAbove;\n const estimateSize = (i: number) => (flat[i]?.kind === \"header\" ? (i === 0 ? 36 : 52) : narrow ? 64 : density === \"compact\" ? 36 : 44);\n const VirtualRows = useLazyModule(virtualRows, virtual)?.VirtualRows;\n const scrollTo = useRef<((index: number) => void) | null>(null);\n\n if (active >= flat.length) setActive(-1);\n const tabStop = active >= 0 ? active : flat.length ? 0 : -1;\n const focusLine = (i: number) => {\n setActive(i);\n if (virtual) scrollTo.current?.(i);\n const line = () => root.current?.querySelector<HTMLElement>(`[data-index=\"${i}\"]`);\n const now = line();\n if (now) now.focus();\n else requestAnimationFrame(() => line()?.focus());\n };\n const hadVirtualRows = useRef(!!VirtualRows);\n useLayoutEffect(() => {\n if (VirtualRows && !hadVirtualRows.current && active >= 0 && document.activeElement === document.body) {\n root.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`)?.focus();\n }\n hadVirtualRows.current = !!VirtualRows;\n });\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n removeWidgetsFromTabOrder(el);\n const observer = new MutationObserver(() => removeWidgetsFromTabOrder(el));\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n const toggle = (id: string) => {\n const s = new Set(selected);\n if (s.has(id)) s.delete(id);\n else s.add(id);\n setSelected(s);\n };\n const enabledIds = (lines: Flat[]) => lines.flatMap((f) => (f.kind === \"row\" && !f.item.disabled ? [f.item.id] : []));\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (e.defaultPrevented || !e.currentTarget.contains(target) || target.closest(TEXT_ENTRY)) return;\n const line = target.closest<HTMLElement>(\"[role=row]\");\n const primary = line?.querySelector<HTMLElement>(\"[data-index]\");\n if (!line || !primary) return;\n const index = Number(primary.dataset.index);\n const onPrimary = target === primary;\n const f = flat[index];\n const row = f?.kind === \"row\" ? f.item : undefined;\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n setSelected(new Set(enabledIds(flat)));\n }\n return;\n }\n const moveTo = (next: number) => {\n e.preventDefault();\n if (e.shiftKey && selectable) {\n const from = anchor ?? index;\n setAnchor(from);\n const s = new Set(selected);\n enabledIds(flat.slice(Math.min(from, next), Math.max(from, next) + 1)).forEach((id) => s.add(id));\n setSelected(s);\n } else setAnchor(null);\n focusLine(next);\n };\n const widgets = () =>\n [...line.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => w !== primary && !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n if (e.key === \"ArrowDown\" || (e.key === \"j\" && !e.shiftKey)) moveTo(Math.min(flat.length - 1, index + 1));\n else if (e.key === \"ArrowUp\" || (e.key === \"k\" && !e.shiftKey)) moveTo(Math.max(0, index - 1));\n else if (e.key === \"Home\") moveTo(0);\n else if (e.key === \"End\") moveTo(flat.length - 1);\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n const list = widgets();\n const at = onPrimary ? -1 : list.indexOf(target);\n const next = e.key === \"ArrowRight\" ? list[at + 1] : at > 0 ? list[at - 1] : at === 0 ? primary : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n } else if (e.key === \"Escape\" && !onPrimary) {\n e.preventDefault();\n primary.focus();\n } else if (!onPrimary || !row || e.shiftKey) {\n return;\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n if (!row.disabled) toggle(row.id);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (!row.disabled) onOpen?.(row);\n } else if (e.key === \"Escape\" && selectable && selected.size) {\n setSelected(new Set());\n }\n };\n const selecting = selected.size > 0;\n const render = (f: Flat, i: number) =>\n f.kind === \"header\" ? (\n <GroupHeader\n key={f.key}\n title={f.group.title}\n glyph={f.group.glyph}\n count={f.group.count ?? f.group.items.length}\n collapsed={collapsed.has(f.group.id)}\n onToggle={() => {\n const s = new Set(collapsed);\n if (s.has(f.group.id)) s.delete(f.group.id);\n else s.add(f.group.id);\n setCollapsed(s);\n }}\n onAdd={f.group.onAdd}\n addLabel={f.group.addLabel}\n indent={!!selectable}\n first={i === 0}\n index={i}\n active={i === tabStop}\n onFocus={() => setActive(i)}\n />\n ) : (\n <ListRow\n key={f.key}\n index={i}\n item={f.item}\n depth={f.depth}\n lastChild={f.lastChild}\n idWidth={idWidth}\n density={density}\n narrow={narrow}\n active={i === tabStop}\n selected={selected.has(f.item.id)}\n selectable={!!selectable}\n selecting={selecting}\n onSelect={() => toggle(f.item.id)}\n onOpen={() => onOpen?.(f.item)}\n onFocus={() => setActive(i)}\n {...(forceRow && i === firstRow ? { \"data-force\": forceRow } : {})}\n />\n );\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) ref.current = e;\n }}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-multiselectable={selectable || undefined}\n aria-busy={loading || undefined}\n onKeyDown={onKeyDown}\n className={cn(\"relative flex flex-col outline-none\", inset && \"overflow-hidden rounded-group bg-raised shadow-xs\", className)}\n >\n {loading && (none || flat.length === 0) ? (\n <LoadingRows density={density} />\n ) : none && empty ? (\n <div role=\"row\">\n <div role=\"gridcell\">{empty}</div>\n </div>\n ) : virtual && VirtualRows ? (\n <VirtualRows\n count={flat.length}\n estimateSize={estimateSize}\n getScrollElement={() => scrollParent(root.current)}\n scrollTo={scrollTo}\n row={(i) => render(flat[i]!, i)}\n measure={narrow}\n />\n ) : virtual ? (\n <FirstRows count={flat.length} estimateSize={estimateSize} row={(i) => render(flat[i]!, i)} />\n ) : (\n flat.map(render)\n )}\n {selectable && selecting && selectionBar && (\n <SelectionBar count={selected.size} onClear={() => setSelected(new Set())}>\n {selectionActions}\n </SelectionBar>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"List\";\n\nfunction FirstRows({ count, estimateSize, row }: { count: number; estimateSize: (index: number) => number; row: (index: number) => ReactNode }) {\n const view = typeof window === \"undefined\" ? 1024 : window.innerHeight;\n const rows: ReactNode[] = [];\n let total = 0;\n let extra = 12;\n for (let i = 0; i < count; i++) {\n if (total >= view && extra-- <= 0) {\n for (let j = i; j < count; j++) total += estimateSize(j);\n break;\n }\n rows.push(\n <div key={i} role=\"presentation\" className=\"absolute top-0 left-0 w-full\" style={{ transform: `translateY(${Math.round(total)}px)` }}>\n {row(i)}\n </div>,\n );\n total += estimateSize(i);\n }\n return (\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: total }}>\n {rows}\n </div>\n );\n}\n\nfunction LoadingRows({ density }: { density: keyof typeof KAESO_LIST_VARIANTS.density }) {\n return (\n <div role=\"presentation\">\n {[62, 48, 70, 54, 40, 58].map((w, i) => (\n <div key={i} role=\"presentation\" className=\"px-8\">\n <div className={cn(\"flex items-center gap-12 px-16\", KAESO_LIST_VARIANTS.density[density].classes)}>\n <Skeleton shape=\"line\" className=\"min-w-0\" style={{ width: `${w}%` }} />\n <span className=\"flex-1\" />\n <Skeleton shape=\"line\" className=\"w-64 shrink-0\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface ListRowProps {\n item: ListItemData;\n index?: number | undefined;\n depth?: 0 | 1 | undefined;\n lastChild?: boolean | undefined;\n idWidth?: keyof typeof ID_W | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n narrow?: boolean | undefined;\n active?: boolean | undefined;\n selected?: boolean | undefined;\n selectable?: boolean | undefined;\n selecting?: boolean | undefined;\n onSelect?: (() => void) | undefined;\n onOpen?: (() => void) | undefined;\n onFocus?: (() => void) | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const ListRow = /* @__PURE__ */ forwardRef<HTMLDivElement, ListRowProps>(function ListRow(\n {\n item,\n index,\n depth = 0,\n lastChild,\n idWidth,\n density = \"default\",\n narrow = false,\n active,\n selected,\n selectable,\n selecting,\n onSelect,\n onOpen,\n onFocus,\n \"data-force\": force,\n },\n ref,\n) {\n const card = useInset();\n const t = useUiText();\n const lines = narrow && !!(item.meta || item.date);\n const stacked = (card || lines) && !!item.subtitle;\n return (\n <div role=\"row\" className={card ? cn(\"px-0\", index !== undefined && index > 0 && \"hairline-t\") : \"px-8\"}>\n <div\n ref={ref}\n role=\"gridcell\"\n aria-selected={selectable ? !!selected : undefined}\n aria-disabled={item.disabled || undefined}\n data-index={index}\n data-row=\"\"\n tabIndex={active === false ? -1 : 0}\n onFocus={onFocus}\n onClick={(e: MouseEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.target as Node) || (e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n if (selecting && selectable) onSelect?.();\n else onOpen?.();\n }}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/row relative flex cursor-pointer items-center gap-12 px-16 text-body transition-control focus-ring-inset select-none\",\n card ? \"rounded-none\" : \"rounded-item\",\n lines ? \"min-h-56 py-8\" : stacked ? \"h-56\" : card && density === \"default\" ? \"h-48\" : KAESO_LIST_VARIANTS.density[density].classes,\n \"hover:bg-fill-1 hover:controls-on-fill\",\n selected && \"bg-fill-2 controls-on-fill hover:bg-fill-2\",\n item.disabled && \"pointer-events-none text-fg-disabled\",\n )}\n >\n {selectable && (\n <span\n className={cn(\n \"flex shrink-0 transition-control\",\n selecting || selected ? \"opacity-100\" : \"opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100\",\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <RowCheckbox\n checked={!!selected}\n onToggle={() => onSelect?.()}\n aria-label={t(\"list.selectItem\", \"Select {name}\", { name: item.textValue ?? (typeof item.title === \"string\" ? item.title : item.id) })}\n />\n </span>\n )}\n {depth === 1 && (\n <span aria-hidden className=\"relative -ml-4 h-full w-16 shrink-0\">\n <span className={cn(\"absolute left-6 w-1 bg-line-strong\", lastChild ? \"top-0 h-1/2\" : \"inset-y-0\")} />\n <span className=\"absolute top-1/2 left-6 h-1 w-10 bg-line-strong\" />\n </span>\n )}\n {item.glyph && <span className=\"flex size-16 shrink-0 items-center justify-center\">{item.glyph}</span>}\n {item.leading && <span className=\"-mr-4 flex shrink-0\">{item.leading}</span>}\n {item.displayId && <span className={cn(\"shrink-0 truncate mono text-small text-fg-tertiary tabular\", idWidth && ID_W[idWidth])}>{item.displayId}</span>}\n <span className={cn(\"flex min-w-0 flex-1\", lines ? \"flex-col items-start gap-4\" : \"contents\")}>\n <span className={cn(\"flex min-w-0\", lines ? \"w-full\" : \"flex-1\", stacked ? \"flex-col items-start gap-2\" : \"items-baseline gap-8\")}>\n {typeof item.title === \"string\" ? (\n <Text truncate weight=\"medium\" className={cn(\"min-w-0 shrink\", stacked && \"max-w-full\")}>\n {item.title}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate font-medium text-fg\", stacked && \"max-w-full\")}>{item.title}</span>\n )}\n {item.subtitle && (\n <span className={cn(\"min-w-0 truncate text-fg-secondary\", stacked ? \"max-w-full text-small\" : \"flex-1 basis-0\")}>{item.subtitle}</span>\n )}\n </span>\n {lines && (\n <span className=\"flex min-w-0 flex-wrap items-center gap-x-8 gap-y-4\">\n {item.meta && <span className=\"flex min-w-0 flex-wrap items-center gap-6\">{item.meta}</span>}\n {item.date && <span className=\"text-small whitespace-nowrap text-fg-secondary tabular\">{item.date}</span>}\n </span>\n )}\n </span>\n {lines && item.actions && <span className=\"flex shrink-0 items-center gap-2\">{item.actions}</span>}\n {!lines && (item.meta || item.actions) && (\n <span className=\"relative flex shrink-0 items-center gap-6\">\n <span className={cn(\"flex items-center gap-6\", item.actions && \"transition-control group-hover/row:opacity-0 group-focus-within/row:opacity-0\")}>\n {item.meta}\n </span>\n {item.actions && (\n <span\n className={cn(\n \"flex items-center gap-2 opacity-0 transition-control group-hover/row:opacity-100 group-focus-within/row:opacity-100 coarse:opacity-100\",\n item.meta && \"absolute inset-y-0 right-0 coarse:static\",\n )}\n >\n {item.actions}\n </span>\n )}\n </span>\n )}\n {!lines && item.date && <span className=\"min-w-80 shrink-0 text-right text-small whitespace-nowrap text-fg-secondary tabular\">{item.date}</span>}\n {item.avatar && <span className=\"flex shrink-0\">{item.avatar}</span>}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ListRow.displayName = \"ListRow\";\n\nexport interface GroupHeaderProps {\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n collapsed?: boolean | undefined;\n onToggle?: (() => void) | undefined;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n indent?: boolean | undefined;\n first?: boolean | undefined;\n index?: number | undefined;\n active?: boolean | undefined;\n onFocus?: (() => void) | undefined;\n}\n\nexport const GroupHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, GroupHeaderProps>(function GroupHeader(\n { title, glyph, count, collapsed, onToggle, onAdd, addLabel, indent, first, index, active, onFocus },\n ref,\n) {\n const card = useInset();\n const t = useUiText();\n return (\n <div ref={ref} role=\"row\" onFocus={onFocus} className={card ? cn(\"group/gh bg-fill-1\", !first && \"hairline-t\") : \"group/gh px-8 pt-16 first:pt-0\"}>\n <div role=\"gridcell\" className={cn(\"flex items-center gap-4 pr-8\", card ? \"h-36 pl-6\" : \"h-36\", !card && (indent ? \"pl-36\" : \"pl-6\"))}>\n <button\n type=\"button\"\n aria-expanded={!collapsed}\n data-index={index}\n tabIndex={active === false ? -1 : 0}\n onClick={onToggle}\n className=\"relative flex h-28 min-w-0 cursor-pointer items-center gap-8 rounded-pill px-10 text-small transition-control hover:bg-fill-1 focus-ring tap-target\"\n >\n {glyph && <span className=\"flex size-16 items-center justify-center\">{glyph}</span>}\n <span className=\"truncate font-medium text-fg-secondary\">{title}</span>\n {count !== undefined && <span className=\"text-fg-tertiary tabular\">{count}</span>}\n <svg viewBox=\"0 0 8 8\" aria-hidden className={cn(\"size-8 text-fg-tertiary transition-transform duration-180\", !collapsed && \"rotate-90\")}>\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </button>\n <span className=\"flex-1\" />\n {onAdd && (\n <span className=\"flex opacity-0 transition-control group-hover/gh:opacity-100 group-focus-within/gh:opacity-100 coarse:opacity-100\">\n <IconButton icon={__icon_Add01Icon} aria-label={addLabel ?? t(\"list.add\", \"Add\")} size=\"xs\" onClick={onAdd} />\n </span>\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupHeader.displayName = \"GroupHeader\";\n\nexport function SelectionBar({ count, onClear, children }: { count: number; onClear: () => void; children?: ReactNode | undefined }) {\n const container = usePortalContainer();\n const t = useUiText();\n if (typeof document === \"undefined\") return null;\n return createPortal(\n <div\n role=\"region\"\n aria-label={t(\"list.selection\", \"Selection\")}\n className=\"pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16\"\n >\n <div className=\"pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion\">\n <span className=\"pr-8 tabular\">{t(\"list.selected\", \"{count} selected\", { count: String(count) })}</span>\n <span className=\"mr-4 h-20 w-1 bg-toast-action\" aria-hidden />\n {children}\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={t(\"list.clearSelection\", \"Clear selection\")}\n className=\"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"sm\" />\n </button>\n </div>\n </div>,\n container ?? document.body,\n );\n}\nif (process.env.NODE_ENV !== \"production\") SelectionBar.displayName = \"SelectionBar\";\n\nexport function SelectionAction({\n children,\n onClick,\n icon,\n danger,\n}: {\n children: ReactNode;\n onClick?: (() => void) | undefined;\n icon?: IconData | undefined;\n danger?: boolean | undefined;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring\",\n danger ? \"text-toast-danger\" : \"text-toast-fg\",\n icon && \"pl-10\",\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className={danger ? undefined : \"text-toast-fg-secondary\"} />}\n {children}\n </button>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SelectionAction.displayName = \"SelectionAction\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logo-VmXYhIJL.js","names":["geometry.mark","geometry.markIcon","geometry.lockup","geometry.wordmark","cn","mark","markIcon","wordmark","lockup","KAESO_LOGO_VARIANTS","KAESO_LOGO_DEFAULT_VARIANTS","makeSvg","C","defaultTitle","props","g","base","sizeClass","className","decorative","title","d","name","MarkSvg","IconSvg","LockupSvg","WordmarkSvg","Mark","size","IconMark","Lockup","WORDMARK_TIGHT","Wordmark","style","Logo"],"sources":["../../src/components/logo/paths.ts","../../src/components/logo/logo.tsx"],"sourcesContent":["export const mark = {\n viewBox: \"80.5 79.5 861 643\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const markIcon = {\n viewBox: \"107 90 620 620\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const wordmark = {\n viewBox: \"49.952 47.249 925.995 221.798\",\n paths: [\n \"m72 71.5h34.5v76.1l86-76.1h47.1l-89.6 81.9 90.5 91.8h-46.3l-70.8-70.3-16.9 15.7v54.6h-34.5z\",\n \"m330.5 71.5h31.6l80.2 173.7h-38.1l-20.5-43.2h-79.6l-19.5 43.2h-34.5zm14.6 42.6-26.7 59.2h53.6z\",\n \"m457.7 71.5h136.4v30.6h-101.4v37.8h87.4v31h-87.4v43.1h102.3v31.2h-137.3z\",\n \"m748.1 79.3v31.8c-20.5-7.1-41.8-11-65.4-11-21.7 0-34.7 6.2-34.7 19.8 0 11.5 9.8 16.8 26.4 18.9l21.3 1.7c40.7 2.5 63.3 18.2 63.3 52.2 0 36.1-26.1 54.3-74.8 54.3-24 0-46.4-3.6-66.4-11.7v-32.3c21.3 8.5 40.9 12.9 65.4 12.9 25.9 0 39.9-6.7 39.9-20.3 0-13.3-10.4-19.1-30.2-20.6l-21.4-1.4c-40.2-2.6-60.5-19.1-60.5-50.2 0-33.7 26.8-54.1 69.8-54.1 27.1 0 48.4 3 67.3 10z\",\n \"m862.8 69.7c52.3 0 91.1 37.1 91.1 88.8 0 52.4-37.2 88.3-90.9 88.3-53.9 0-92-36.4-92-88 0-51.1 39.4-89.1 91.8-89.1zm0 33.3c-32.7 0-55.3 23.4-55.3 55.8 0 32.5 22.5 55 55.5 55 32.9 0 55-22.8 55-55s-22.7-55.8-55.2-55.8z\",\n ],\n} as const;\nexport const lockup = {\n viewBox: \"42.541 42.142 939.02 234.215\",\n paths: [\n \"m112 64.5h57.5l46.3 42.3c12.3 10.8 23.3 13.3 39.5 13.3h72.9v19.9h-117c-14.8 0-26-1.3-33.6-8.4z\",\n \"m64.9 205.1 47.2-29.3c25.2-15.9 44.7-23.9 73.5-23.9h142.6v12.3h-111.6c-17.2 0-24.8 2.2-35.9 10.6l-66.8 51.5h-49z\",\n \"m132.9 254 64.8-58.5c13.5-12.4 22.4-16.1 44.1-16.1h86.4v21.6h-60.7c-13.4 0-17.9 2.2-26.9 9.7l-48.8 43.3z\",\n \"m383.5 101h22.3v48.6l55.5-48.6h30.1l-57.3 52.2 59.1 58.8h-30.4l-44.8-44-12.2 10.5v33.5h-22.3z\",\n \"m498.7 212 52.5-111h19.5l52.1 111h-24.8l-12.3-28h-51.2l-12.9 28zm44.6-46.9h33.7l-16.6-36.4z\",\n \"m632.8 101h89v20.2h-65.9v23.8h57.2v20.1h-57.2v26.5h66.9v20.4h-90z\",\n \"m823.6 105.5v20.7c-12.9-4.3-24.3-6.6-38.2-6.6-17.3 0-26.8 4.3-26.8 12.5 0 8.7 8 11.1 25.1 11.9 31.6 1.4 46.8 11.3 46.8 33.3 0 24.3-18 35.9-48.5 35.9-17 0-33-2.6-44.5-6.5v-21.2c14.1 5.2 28.6 7.6 43.3 7.6 17.3 0 26.5-4.1 26.5-12.9 0-8.7-6.7-12-25.4-13-31.8-1.5-47.9-10.1-47.9-32.3 0-22.3 17.6-35 47.5-35 15.6 0 30 1.7 42.1 5.6z\",\n \"m898.9 100c35.8 0 60.3 23 60.3 56.7s-24.5 56.6-60.3 56.6c-35.7 0-59.9-22.8-59.9-56.6 0-33.7 24.2-56.7 59.9-56.7zm0 21.1c-21.9 0-36.8 14.2-36.8 35.6s14.9 35.5 36.8 35.5c22 0 36.7-14.1 36.7-35.5s-14.7-35.6-36.7-35.6z\",\n ],\n} as const;\n","import { forwardRef, type SVGAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport * as geometry from \"./paths.js\";\n\nexport const KAESO_LOGO_VARIANTS = {\n markSize: {\n sm: { classes: \"h-20\" },\n md: { classes: \"h-24\" },\n lg: { classes: \"h-32\" },\n xl: { classes: \"h-48\" },\n },\n lockupSize: {\n sm: { classes: \"h-28\" },\n md: { classes: \"h-32\" },\n lg: { classes: \"h-40\" },\n },\n} as const;\nexport const KAESO_LOGO_DEFAULT_VARIANTS = { markSize: \"md\", lockupSize: \"sm\" } as const;\n\ntype Geometry = { readonly viewBox: string; readonly paths: readonly string[] };\ninterface BaseLogoProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\"> {\n title?: string | undefined;\n decorative?: boolean | undefined;\n}\n\nfunction makeSvg(name: string, g: Geometry, defaultTitle: string, base: string) {\n const C = /* @__PURE__ */ forwardRef<SVGSVGElement, BaseLogoProps & { sizeClass: string }>(function LogoSvg(\n { title = defaultTitle, decorative, sizeClass, className, ...props },\n ref,\n ) {\n return (\n <svg\n ref={ref}\n viewBox={g.viewBox}\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"block w-auto shrink-0\", base, sizeClass, className)}\n {...(decorative ? { \"aria-hidden\": true, focusable: false } : { role: \"img\", \"aria-label\": title })}\n {...props}\n >\n {g.paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n });\n C.displayName = name;\n return C;\n}\n\nconst MarkSvg = /* @__PURE__ */ makeSvg(\"Logo.Mark\", geometry.mark, \"Kaeso\", \"\");\nconst IconSvg = /* @__PURE__ */ makeSvg(\"Logo.Icon\", geometry.markIcon, \"Kaeso\", \"\");\nconst LockupSvg = /* @__PURE__ */ makeSvg(\"Logo.Lockup\", geometry.lockup, \"Kaeso\", \"\");\nconst WordmarkSvg = /* @__PURE__ */ makeSvg(\"Logo.Wordmark\", geometry.wordmark, \"Kaeso\", \"\");\n\nexport interface LogoMarkProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.markSize | undefined;\n}\nexport interface LogoLockupProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.lockupSize | undefined;\n}\n\nconst Mark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoMarkProps>(function Mark({ size = \"md\", ...props }, ref) {\n return <MarkSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.markSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Mark.displayName = \"Logo.Mark\";\n\nconst IconMark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoMarkProps>(function IconMark({ size = \"md\", ...props }, ref) {\n return <IconSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.markSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") IconMark.displayName = \"Logo.Icon\";\n\nconst Lockup = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoLockupProps>(function Lockup({ size = \"sm\", ...props }, ref) {\n return <LockupSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.lockupSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Lockup.displayName = \"Logo.Lockup\";\n\nexport interface LogoWordmarkProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.lockupSize | \"nav\" | undefined;\n}\n\nconst WORDMARK_TIGHT = \"72 69.3 881.9 177.7\";\n\nconst Wordmark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoWordmarkProps>(function Wordmark({ size = \"sm\", title = \"Kaeso\", decorative, className, style, ...props }, ref) {\n if (size === \"nav\") {\n return (\n <svg\n ref={ref}\n viewBox={WORDMARK_TIGHT}\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"block shrink-0\", className)}\n style={{ width: 60, height: 12, ...style }}\n {...(decorative ? { \"aria-hidden\": true, focusable: false } : { role: \"img\", \"aria-label\": title })}\n {...props}\n >\n {geometry.wordmark.paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n }\n return (\n <WordmarkSvg\n ref={ref}\n sizeClass={size === \"sm\" ? \"h-24\" : KAESO_LOGO_VARIANTS.lockupSize[size].classes}\n title={title}\n {...(decorative ? { decorative } : {})}\n {...(className ? { className } : {})}\n {...(style ? { style } : {})}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Wordmark.displayName = \"Logo.Wordmark\";\n\nexport const Logo = /* @__PURE__ */ Object.assign(\n /* @__PURE__ */ forwardRef<SVGSVGElement, LogoLockupProps>(function Logo(props, ref) {\n return <Lockup ref={ref} {...props} />;\n }),\n { Mark, Icon: IconMark, Lockup, Wordmark },\n);\nif (process.env.NODE_ENV !== \"production\") Logo.displayName = \"Logo\";\n"],"mappings":";;;;;AAAA,IAAaK,IAAO;CAClB,SAAS;CACT,OAAO;EACL;EACA;EACA;CACF;AACF,GACaC,IAAW;CACtB,SAAS;CACT,OAAO;EACL;EACA;EACA;CACF;AACF,GACaC,IAAW;CACtB,SAAS;CACT,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF,GACaC,IAAS;CACpB,SAAS;CACT,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF,GClCaC,IAAsB;CACjC,UAAU;EACR,IAAI,EAAE,SAAS,OAAO;EACtB,IAAI,EAAE,SAAS,OAAO;EACtB,IAAI,EAAE,SAAS,OAAO;EACtB,IAAI,EAAE,SAAS,OAAO;CACxB;CACA,YAAY;EACV,IAAI,EAAE,SAAS,OAAO;EACtB,IAAI,EAAE,SAAS,OAAO;EACtB,IAAI,EAAE,SAAS,OAAO;CACxB;AACF,GACaC,IAA8B;CAAE,UAAU;CAAM,YAAY;AAAK;AAQ9E,SAASC,EAAQ,GAAc,GAAa,GAAsB,GAAc;CAC9E,IAAMC,IAAoB,kBAAiE,SACzF,EAAE,WAAQC,GAAc,eAAY,cAAW,cAAW,GAAGC,KAC7D,GACA;EACA,OACE,kBAAC,OAAD;GACO;GACL,SAASC,EAAE;GACX,MAAK;GACL,OAAM;GACN,WAAWX,EAAG,yBAAyBY,GAAMC,GAAWC,CAAS;GACjE,GAAKC,IAAa;IAAE,eAAe;IAAM,WAAW;GAAM,IAAI;IAAE,MAAM;IAAO,cAAcC;GAAM;GACjG,GAAIN;GAEH,UAAAC,EAAE,MAAM,KAAK,MACZ,kBAAC,QAAD,EAAiB,KAAI,GAAVM,CAAU,CACtB;EACE,CAAA;CAET,CAAC;CAED,OADA,EAAE,cAAcC,GACTV;AACT;AAEA,IAAMW,IAA0B,kBAAQ,aAAavB,GAAe,SAAS,EAAE,GACzEwB,IAA0B,kBAAQ,aAAavB,GAAmB,SAAS,EAAE,GAC7EwB,IAA4B,kBAAQ,eAAevB,GAAiB,SAAS,EAAE,GAC/EwB,IAA8B,kBAAQ,iBAAiBvB,GAAmB,SAAS,EAAE,GASrFwB,IAAuB,kBAAyC,SAAc,EAAE,UAAO,MAAM,GAAGb,KAAS,GAAK;CAClH,OAAO,kBAACS,GAAD;EAAc;EAAK,WAAWd,EAAoB,SAASmB,EAAK,CAAC;EAAS,GAAId;CAAQ,CAAA;AAC/F,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAE9D,IAAMe,IAA2B,kBAAyC,SAAkB,EAAE,UAAO,MAAM,GAAGf,KAAS,GAAK;CAC1H,OAAO,kBAACU,GAAD;EAAc;EAAK,WAAWf,EAAoB,SAASmB,EAAK,CAAC;EAAS,GAAId;CAAQ,CAAA;AAC/F,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAElE,IAAMgB,IAAyB,kBAA2C,SAAgB,EAAE,UAAO,MAAM,GAAGhB,KAAS,GAAK;CACxH,OAAO,kBAACW,GAAD;EAAgB;EAAK,WAAWhB,EAAoB,WAAWmB,EAAK,CAAC;EAAS,GAAId;CAAQ,CAAA;AACnG,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAMhE,IAAMiB,IAAiB,uBAEjBC,IAA2B,kBAA6C,SAAkB,EAAE,UAAO,MAAM,WAAQ,SAAS,eAAY,cAAW,UAAO,GAAGlB,KAAS,GAAK;CAmB7K,OAlBIc,MAAS,QAET,kBAAC,OAAD;EACO;EACL,SAASG;EACT,MAAK;EACL,OAAM;EACN,WAAW3B,EAAG,kBAAkBc,CAAS;EACzC,OAAO;GAAE,OAAO;GAAI,QAAQ;GAAI,GAAGe;EAAM;EACzC,GAAKd,IAAa;GAAE,eAAe;GAAM,WAAW;EAAM,IAAI;GAAE,MAAM;GAAO,cAAcC;EAAM;EACjG,GAAIN;EAEH,UAAAP,EAAkB,MAAM,KAAK,MAC5B,kBAAC,QAAD,EAAiB,KAAI,GAAVc,CAAU,CACtB;CACE,CAAA,IAIP,kBAACK,GAAD;EACO;EACL,WAAWE,MAAS,OAAO,SAASnB,EAAoB,WAAWmB,EAAK,CAAC;EAClE;EACP,GAAKT,IAAa,EAAE,cAAW,IAAI,CAAC;EACpC,GAAKD,IAAY,EAAE,aAAU,IAAI,CAAC;EAClC,GAAKe,IAAQ,EAAE,SAAM,IAAI,CAAC;EAC1B,GAAInB;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAElE,IAAaoB,IAAuB,uBAAO,OACzB,kBAA2C,SAAc,GAAO,GAAK;CACnF,OAAO,kBAACJ,GAAD;EAAa;EAAK,GAAIhB;CAAQ,CAAA;AACvC,CAAC,GACD;CAAE;CAAM,MAAMe;CAAU;CAAQ;AAAS,CAC3C;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useRef as e } from "react";
|
|
3
|
-
//#region src/utils/restore-focus.ts
|
|
4
|
-
function t() {
|
|
5
|
-
if (typeof document > "u") return null;
|
|
6
|
-
let e = document.activeElement;
|
|
7
|
-
return e instanceof HTMLElement && e !== document.body ? e : null;
|
|
8
|
-
}
|
|
9
|
-
function n(n, r = () => !0) {
|
|
10
|
-
let i = e(null), a = e(!1);
|
|
11
|
-
return n && !a.current && (i.current = t()), n !== void 0 && (a.current = n), {
|
|
12
|
-
initialFocus: () => r(),
|
|
13
|
-
finalFocus: () => n !== void 0 && i.current?.isConnected ? i.current : !0
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
export { n as t };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=restore-focus-Cap1Q-R3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"restore-focus-Cap1Q-R3.js","names":["focused","a","useRestoreFocus","opener","useRef","wasOpen","open","first"],"sources":["../../src/utils/restore-focus.ts"],"sourcesContent":["import { useRef } from \"react\";\n\nfunction focused(): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n const a = document.activeElement;\n return a instanceof HTMLElement && a !== document.body ? a : null;\n}\n\nexport function useRestoreFocus(open: boolean | undefined, first: () => HTMLElement | boolean = () => true) {\n const opener = useRef<HTMLElement | null>(null);\n const wasOpen = useRef(false);\n if (open && !wasOpen.current) opener.current = focused();\n if (open !== undefined) wasOpen.current = open;\n return {\n initialFocus: () => first(),\n finalFocus: () => (open !== undefined && opener.current?.isConnected ? opener.current : true),\n };\n}\n"],"mappings":";;;AAEA,SAASA,IAA8B;CACrC,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAI,SAAS;CACnB,OAAOA,aAAa,eAAeA,MAAM,SAAS,OAAOA,IAAI;AAC/D;AAEA,SAAgBC,EAAgB,GAA2B,UAA2C,IAAM;CAC1G,IAAMC,IAASC,EAA2B,IAAI,GACxCC,IAAUD,EAAO,EAAK;CAG5B,OAFIE,KAAQ,CAACD,EAAQ,YAAS,EAAO,UAAUL,EAAQ,IACnDM,MAAS,KAAA,MAAW,EAAQ,UAAUA,IACnC;EACL,oBAAoBC,EAAM;EAC1B,kBAAmBD,MAAS,KAAA,KAAaH,EAAO,SAAS,cAAcA,EAAO,UAAU;CAC1F;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"section-XStLtXKa.js","names":["cn","Logo","KAESO_SECTION_VARIANTS","KAESO_SECTION_DEFAULT_VARIANTS","Section","spacing","className","title","actions","description","children","SplitView","aside","AuthLayout","footer"],"sources":["../../src/components/section/section.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Logo } from \"../logo/logo.js\";\n\nexport const KAESO_SECTION_VARIANTS = {\n spacing: {\n default: { classes: \"mt-48 first:mt-0\" },\n none: { classes: \"\" },\n },\n} as const;\nexport const KAESO_SECTION_DEFAULT_VARIANTS = { spacing: \"default\" } as const;\n\nexport interface SectionProps {\n title?: ReactNode | undefined;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n spacing?: keyof typeof KAESO_SECTION_VARIANTS.spacing | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const Section = /* @__PURE__ */ forwardRef<HTMLElement, SectionProps>(function Section({ title, description, actions, spacing = \"default\", children, className }, ref) {\n return (\n <section ref={ref} className={cn(KAESO_SECTION_VARIANTS.spacing[spacing].classes, className)}>\n {(title || actions) && (\n <header className=\"mb-16 flex flex-wrap items-end justify-between gap-x-16 gap-y-12\">\n <div className=\"flex min-w-0 flex-col gap-2\">\n {title && <h2 className=\"text-title-sm font-semibold text-fg\">{title}</h2>}\n {description && <p className=\"max-w-prose text-small text-fg-secondary\">{description}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-8\">{actions}</div>}\n </header>\n )}\n {children}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Section.displayName = \"Section\";\n\nexport const SplitView = /* @__PURE__ */ forwardRef<HTMLDivElement, { children: ReactNode; aside: ReactNode; className?: string | undefined }>(function SplitView(\n { children, aside, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-1 lg:grid-cols-aside\", className)}>\n <div className=\"min-w-0 lg:pr-32\">{children}</div>\n <aside className=\"mt-32 min-w-0 lg:mt-0 lg:pl-32 lg:hairline-l\">\n <div className=\"flex flex-col gap-32 lg:sticky lg:top-16\">{aside}</div>\n </aside>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SplitView.displayName = \"SplitView\";\n\nexport const AuthLayout = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { title: ReactNode; description?: ReactNode | undefined; children: ReactNode; footer?: ReactNode | undefined; className?: string | undefined }\n>(function AuthLayout({ title, description, children, footer, className }, ref) {\n return (\n <div ref={ref} className={cn(\"relative flex min-h-dvh flex-col items-center bg-panel px-16 py-64 text-fg\", className)}>\n <div className=\"absolute top-0 left-0 mt-8 flex h-52 items-center px-28\">\n <Logo.Wordmark size=\"nav\" />\n </div>\n <div className=\"flex w-full max-w-auth flex-1 flex-col justify-center\">\n <h1 className=\"text-center text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {description && <p className=\"mt-8 text-center text-body-lg font-regular text-fg-secondary text-pretty\">{description}</p>}\n <div className=\"mt-24 flex flex-col gap-16\">{children}</div>\n </div>\n {footer && <div className=\"mt-48 text-small text-fg-tertiary\">{footer}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AuthLayout.displayName = \"AuthLayout\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAyB,EACpC,SAAS;CACP,SAAS,EAAE,SAAS,mBAAmB;CACvC,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAAiC,EAAE,SAAS,UAAU,GAWtDC,IAA0B,kBAAsC,SAAiB,EAAE,UAAO,gBAAa,YAAS,aAAU,WAAW,aAAU,gBAAa,GAAK;CAC5K,OACE,kBAAC,WAAD;EAAc;EAAK,WAAWJ,EAAGE,EAAuB,QAAQG,EAAQ,CAAC,SAASC,CAAS;EAA3F,UAAA,EACIC,KAASC,MACT,kBAAC,UAAD;GAAQ,WAAU;GAAlB,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAS,kBAAC,MAAD;KAAI,WAAU;KAAuC,UAAAA;IAAU,CAAA,GACxEE,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4C,UAAAA;IAAe,CAAA,CACrF;GACJ,CAAA,GAAAD,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAoC,UAAAA;GAAa,CAAA,CACtE;EAET,CAAA,GAAAE,CACM;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAQ,cAAc;AAEjE,IAAaC,IAA4B,kBAAsG,SAC7I,EAAE,aAAU,UAAO,gBACnB,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWX,EAAG,uCAAuCM,CAAS;EAA7E,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAoB;EAAc,CAAA,GACjD,kBAAC,SAAD;GAAO,WAAU;GACf,UAAA,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAM;GAAW,CAAA;EACjE,CAAA,CACJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AAEnE,IAAaC,IAA6B,kBAGxC,SAAoB,EAAE,UAAO,gBAAa,aAAU,WAAQ,gBAAa,GAAK;CAC9E,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWb,EAAG,8EAA8EM,CAAS;EAApH,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACL,EAAK,UAAN,EAAe,MAAK,MAAO,CAAA;GACxB,CAAA;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;MAAgE,UAAAM;KAAU,CAAA;KACvFE,KAAe,kBAAC,KAAD;MAAG,WAAU;MAA4E,UAAAA;KAAe,CAAA;KACxH,kBAAC,OAAD;MAAK,WAAU;MAA8B;KAAc,CAAA;IACxD;;GACJK,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAqC,UAAAA;GAAY,CAAA;EACxE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"segmented-CDTx2n29.js","names":["BaseRadioGroup","BaseRadio","cn","Icon","useIndicator","box","setBox","useState","animate","setAnimate","useEffect","raf","live","useLayoutEffect","root","container","measure","el","selector","b","ro","c","layout","KAESO_SEGMENTED_VARIANTS","KAESO_SEGMENTED_DEFAULT_VARIANTS","ITEM","ITEM_ICON","Segmented","ariaLabel","force","current","setCurrent","useControllable","value","defaultValue","options","onValueChange","track","useRef","ind","size","RadioGroup","ref","v","disabled","fullWidth","className","iconOnly","o","item","Radio","Tooltip"],"sources":["../../src/hooks/use-indicator.ts","../../src/components/segmented/segmented.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport function useIndicator(\n container: RefObject<HTMLElement | null>,\n selector: string,\n layout: string,\n): { x: number; y: number; w: number; h: number; ready: boolean; animate: boolean } {\n const [box, setBox] = useState({ x: 0, y: 0, w: 0, h: 0, ready: false });\n const [animate, setAnimate] = useState(false);\n useEffect(() => {\n if (!box.ready || animate) return;\n let raf = 0;\n let live = true;\n void (document.fonts?.ready ?? Promise.resolve()).then(() => {\n if (live) raf = requestAnimationFrame(() => (raf = requestAnimationFrame(() => setAnimate(true))));\n });\n return () => {\n live = false;\n cancelAnimationFrame(raf);\n };\n }, [box.ready, animate]);\n useLayoutEffect(() => {\n const root = container.current;\n if (!root) return;\n const measure = () => {\n const el = root.querySelector<HTMLElement>(selector);\n if (!el) return setBox((b) => ({ ...b, ready: false }));\n setBox({ x: Math.round(el.offsetLeft), y: Math.round(el.offsetTop), w: Math.round(el.offsetWidth), h: Math.round(el.offsetHeight), ready: true });\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n let live = true;\n const ro = new ResizeObserver(measure);\n ro.observe(root);\n root.querySelectorAll(\":scope > *\").forEach((c) => ro.observe(c));\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n ro.disconnect();\n };\n }, [container, selector, layout]);\n return { ...box, animate };\n}\n","import { forwardRef, useRef, type ReactNode } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useIndicator } from \"../../hooks/use-indicator.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_SEGMENTED_VARIANTS = {\n size: {\n sm: { classes: \"h-32 p-2 gap-2\" },\n md: { classes: \"h-36 p-2 gap-2\" },\n },\n} as const;\nexport const KAESO_SEGMENTED_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst ITEM = { sm: \"h-28 px-10 text-body\", md: \"h-32 px-12 text-body\" } as const;\nconst ITEM_ICON = { sm: \"w-32 px-0\", md: \"w-36 px-0\" } as const;\n\nexport interface SegmentedOption {\n value: string;\n label?: ReactNode | undefined;\n icon?: IconData | undefined;\n \"aria-label\"?: string | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: keyof typeof KAESO_SEGMENTED_VARIANTS.size | undefined;\n disabled?: boolean | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Segmented = /* @__PURE__ */ forwardRef<HTMLDivElement, SegmentedProps>(function Segmented(\n { options, value, defaultValue, onValueChange, size = \"md\", disabled, fullWidth, className, \"aria-label\": ariaLabel, \"data-force\": force },\n ref,\n) {\n const [current, setCurrent] = useControllable(value, defaultValue ?? options[0]?.value ?? \"\", onValueChange);\n const track = useRef<HTMLDivElement | null>(null);\n const ind = useIndicator(track, \"[data-checked]\", `${current}|${options.length}|${size}`);\n return (\n <BaseRadioGroup\n ref={(el: HTMLDivElement | null) => {\n track.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n value={current}\n onValueChange={(v: unknown) => setCurrent(String(v))}\n {...(disabled !== undefined ? { disabled } : {})}\n aria-label={ariaLabel}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative isolate inline-flex items-center rounded-pill bg-fill-1\",\n KAESO_SEGMENTED_VARIANTS.size[size].classes,\n fullWidth && \"flex w-full\",\n disabled && \"opacity-40\",\n className,\n )}\n >\n <span\n aria-hidden\n className={cn(\"absolute top-0 left-0 -z-10 rounded-pill bg-raised shadow-segment\", ind.animate && \"indicator-motion\", !ind.ready && \"opacity-0\")}\n style={{ transform: `translate(${ind.x}px, ${ind.y}px)`, width: ind.w, height: ind.h }}\n />\n {options.map((o) => {\n const iconOnly = o.icon && !o.label;\n const item = (\n <BaseRadio.Root\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n {...(o[\"aria-label\"] ? { \"aria-label\": o[\"aria-label\"] } : {})}\n className={cn(\n \"relative inline-flex cursor-pointer items-center justify-center gap-6 rounded-pill font-medium whitespace-nowrap text-fg-secondary transition-control focus-ring tap-target\",\n \"hover:text-fg checked:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ITEM[size],\n iconOnly && ITEM_ICON[size],\n fullWidth && \"flex-1\",\n )}\n >\n {o.icon && <Icon icon={o.icon} size=\"sm\" />}\n {o.label}\n </BaseRadio.Root>\n );\n return iconOnly && o[\"aria-label\"] ? (\n <Tooltip key={o.value} content={o[\"aria-label\"]}>\n {item}\n </Tooltip>\n ) : (\n item\n );\n })}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Segmented.displayName = \"Segmented\";\n"],"mappings":"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"}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { i as e, o as t } from "./styles-Btvg2DCf.js";
|
|
3
|
-
import { t as n } from "./cn-CidVUKMm.js";
|
|
4
|
-
import { i as r } from "./dev-CR1p7gCm.js";
|
|
5
|
-
import { n as i, r as a } from "./portal-context-BBbzDKmY.js";
|
|
6
|
-
import { i as o } from "./context-BELWW79w.js";
|
|
7
|
-
import { t as s } from "./icon-CeNQtobn.js";
|
|
8
|
-
import { a as ee, o as c, s as te } from "./field-d8V94bvZ.js";
|
|
9
|
-
import { n as ne, t as l } from "./use-layout-width-DZaLOQMT.js";
|
|
10
|
-
import { Fragment as u, forwardRef as d, useCallback as f, useRef as p } from "react";
|
|
11
|
-
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
12
|
-
import { ArrowDown01Icon as g, ArrowUp01Icon as re, Tick02Icon as _ } from "@hugeicons/core-free-icons";
|
|
13
|
-
import { Select as v } from "@base-ui/react/select";
|
|
14
|
-
//#region src/components/select/select.tsx
|
|
15
|
-
var y = {
|
|
16
|
-
appearance: {
|
|
17
|
-
default: { classes: "material-secondary" },
|
|
18
|
-
ghost: { classes: "material-ghost text-fg-secondary hover:text-fg open:text-fg" },
|
|
19
|
-
header: { classes: "material-ghost text-fg" }
|
|
20
|
-
},
|
|
21
|
-
size: {
|
|
22
|
-
sm: { classes: "h-32 pl-12 pr-10 gap-6 text-body" },
|
|
23
|
-
md: { classes: "h-36 pl-16 pr-12 gap-8 text-body" },
|
|
24
|
-
lg: { classes: "h-40 pl-18 pr-14 gap-8 text-body" },
|
|
25
|
-
xl: { classes: "h-48 pl-22 pr-18 gap-8 text-body-lg" }
|
|
26
|
-
}
|
|
27
|
-
}, b = {
|
|
28
|
-
appearance: "default",
|
|
29
|
-
size: "md"
|
|
30
|
-
};
|
|
31
|
-
function x(e, t) {
|
|
32
|
-
return (n) => {
|
|
33
|
-
t(n) && e(n);
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function ie(e) {
|
|
37
|
-
let t = [];
|
|
38
|
-
for (let n of e) {
|
|
39
|
-
let e = t[t.length - 1];
|
|
40
|
-
e && e.group === n.group ? e.items.push(n) : t.push({
|
|
41
|
-
group: n.group,
|
|
42
|
-
items: [n]
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
}
|
|
47
|
-
var S = /* @__PURE__ */ d(function(d, b) {
|
|
48
|
-
let { options: S, placeholder: w, size: T = "md", appearance: E = "default", disabled: D, name: O, id: k, open: A, onOpenChange: j, invalid: M, icon: N, fullWidth: P, label: F, description: I, error: L, optional: R, required: z, layout: B, className: V, multiple: H, "aria-label": U, "data-force": W } = d;
|
|
49
|
-
r("Select", V);
|
|
50
|
-
let G = o(), K = w ?? G("select.placeholder", "Select"), q = ee(), J = c(d), Y = p(null), X = ne(Y), ae = f((e) => {
|
|
51
|
-
Y.current = e, typeof b == "function" ? b(e) : b && (b.current = e);
|
|
52
|
-
}, [b]), Z = new Map(S.map((e) => [e.value, e])), Q = (e) => {
|
|
53
|
-
let t = Z.get(e);
|
|
54
|
-
return t?.textValue ?? (typeof t?.label == "string" ? t.label : e);
|
|
55
|
-
}, oe = d.multiple ? {
|
|
56
|
-
multiple: !0,
|
|
57
|
-
...d.value === void 0 ? {} : { value: d.value },
|
|
58
|
-
...d.defaultValue === void 0 ? {} : { defaultValue: d.defaultValue },
|
|
59
|
-
...d.onValueChange ? { onValueChange: x(d.onValueChange, Array.isArray) } : {}
|
|
60
|
-
} : {
|
|
61
|
-
...d.value === void 0 ? {} : { value: d.value },
|
|
62
|
-
...d.defaultValue === void 0 ? {} : { defaultValue: d.defaultValue },
|
|
63
|
-
...d.onValueChange ? { onValueChange: x(d.onValueChange, (e) => typeof e == "string") } : {}
|
|
64
|
-
}, $ = /* @__PURE__ */ h(v.Root, {
|
|
65
|
-
...oe,
|
|
66
|
-
...q?.required ?? z ? { required: !0 } : {},
|
|
67
|
-
...D === void 0 ? {} : { disabled: D },
|
|
68
|
-
...O ? { name: O } : {},
|
|
69
|
-
...A === void 0 ? {} : { open: A },
|
|
70
|
-
...j ? { onOpenChange: (e) => j(e) } : {},
|
|
71
|
-
itemToStringLabel: (e) => Q(String(e)),
|
|
72
|
-
modal: !1,
|
|
73
|
-
children: [/* @__PURE__ */ h(v.Trigger, {
|
|
74
|
-
ref: ae,
|
|
75
|
-
...k ? { id: k } : {},
|
|
76
|
-
...J.controlProps,
|
|
77
|
-
...U ? { "aria-label": U } : {},
|
|
78
|
-
...M || L ? { "aria-invalid": !0 } : {},
|
|
79
|
-
...W ? { "data-force": W } : {},
|
|
80
|
-
className: n("inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control focus-ring disabled:cursor-not-allowed", y.size[T].classes, y.appearance[E].classes, (M || L) && "ring-invalid", P && "w-full", !(F || I || L) && V),
|
|
81
|
-
children: [
|
|
82
|
-
N && /* @__PURE__ */ m(s, {
|
|
83
|
-
icon: N,
|
|
84
|
-
size: "sm",
|
|
85
|
-
className: "text-fg-secondary"
|
|
86
|
-
}),
|
|
87
|
-
/* @__PURE__ */ m(v.Value, {
|
|
88
|
-
className: "min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular",
|
|
89
|
-
placeholder: K,
|
|
90
|
-
children: (e) => {
|
|
91
|
-
if (H) {
|
|
92
|
-
let t = Array.isArray(e) ? e.map(String) : [], [n] = t;
|
|
93
|
-
return n === void 0 ? K : t.length === 1 ? Q(n) : G("select.firstAndMore", "{first} +{count}", {
|
|
94
|
-
first: Q(n),
|
|
95
|
-
count: String(t.length - 1)
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
return e == null || e === "" ? K : Z.get(String(e))?.label ?? String(e);
|
|
99
|
-
}
|
|
100
|
-
}),
|
|
101
|
-
/* @__PURE__ */ m(v.Icon, {
|
|
102
|
-
className: "flex shrink-0 text-fg-tertiary",
|
|
103
|
-
children: /* @__PURE__ */ m(s, {
|
|
104
|
-
icon: g,
|
|
105
|
-
size: "sm"
|
|
106
|
-
})
|
|
107
|
-
})
|
|
108
|
-
]
|
|
109
|
-
}), /* @__PURE__ */ m(v.Portal, {
|
|
110
|
-
container: a(),
|
|
111
|
-
children: /* @__PURE__ */ m(v.Positioner, {
|
|
112
|
-
positionMethod: "fixed",
|
|
113
|
-
collisionBoundary: i(),
|
|
114
|
-
alignItemWithTrigger: !1,
|
|
115
|
-
align: "start",
|
|
116
|
-
sideOffset: 6,
|
|
117
|
-
collisionPadding: 8,
|
|
118
|
-
className: "z-50 outline-none",
|
|
119
|
-
children: /* @__PURE__ */ h(v.Popup, {
|
|
120
|
-
className: n(t, "min-w-anchor overflow-hidden"),
|
|
121
|
-
style: l(X),
|
|
122
|
-
children: [
|
|
123
|
-
/* @__PURE__ */ m(v.ScrollUpArrow, {
|
|
124
|
-
className: "flex h-20 items-center justify-center text-fg-tertiary",
|
|
125
|
-
children: /* @__PURE__ */ m(s, {
|
|
126
|
-
icon: re,
|
|
127
|
-
size: "xs"
|
|
128
|
-
})
|
|
129
|
-
}),
|
|
130
|
-
/* @__PURE__ */ m(v.List, {
|
|
131
|
-
className: "-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet",
|
|
132
|
-
children: ie(S).map((t, r) => /* @__PURE__ */ h(u, { children: [r > 0 && /* @__PURE__ */ m("div", {
|
|
133
|
-
role: "presentation",
|
|
134
|
-
className: "mx-10 my-4 h-1 shrink-0 bg-line-subtle"
|
|
135
|
-
}), /* @__PURE__ */ h(v.Group, {
|
|
136
|
-
className: "flex flex-col",
|
|
137
|
-
children: [t.group && /* @__PURE__ */ m(v.GroupLabel, {
|
|
138
|
-
className: "flex h-28 items-center px-10 text-caption font-medium text-fg-secondary",
|
|
139
|
-
children: t.group
|
|
140
|
-
}), t.items.map((t) => /* @__PURE__ */ h(v.Item, {
|
|
141
|
-
value: t.value,
|
|
142
|
-
...t.disabled ? { disabled: !0 } : {},
|
|
143
|
-
label: t.textValue ?? (typeof t.label == "string" ? t.label : t.value),
|
|
144
|
-
className: n(e, "group/opt"),
|
|
145
|
-
children: [
|
|
146
|
-
H && /* @__PURE__ */ m("span", {
|
|
147
|
-
className: "pointer-events-none flex",
|
|
148
|
-
children: /* @__PURE__ */ m(C, {})
|
|
149
|
-
}),
|
|
150
|
-
t.icon && /* @__PURE__ */ m(s, {
|
|
151
|
-
icon: t.icon,
|
|
152
|
-
size: "sm",
|
|
153
|
-
className: n("text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled", t.description && "self-start mt-10")
|
|
154
|
-
}),
|
|
155
|
-
/* @__PURE__ */ h("span", {
|
|
156
|
-
className: n("flex min-w-0 flex-1 flex-col", t.description && "gap-2 py-8"),
|
|
157
|
-
children: [/* @__PURE__ */ m(v.ItemText, {
|
|
158
|
-
className: "truncate",
|
|
159
|
-
children: t.label
|
|
160
|
-
}), t.description && /* @__PURE__ */ m("span", {
|
|
161
|
-
className: "text-small font-regular whitespace-normal text-fg-secondary",
|
|
162
|
-
children: t.description
|
|
163
|
-
})]
|
|
164
|
-
}),
|
|
165
|
-
!H && /* @__PURE__ */ m(v.ItemIndicator, {
|
|
166
|
-
keepMounted: !0,
|
|
167
|
-
className: n("flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100", t.description && "self-start mt-10"),
|
|
168
|
-
children: /* @__PURE__ */ m(s, {
|
|
169
|
-
icon: _,
|
|
170
|
-
size: "sm"
|
|
171
|
-
})
|
|
172
|
-
})
|
|
173
|
-
]
|
|
174
|
-
}, t.value))]
|
|
175
|
-
})] }, t.group ?? `g${r}`))
|
|
176
|
-
}),
|
|
177
|
-
/* @__PURE__ */ m(v.ScrollDownArrow, {
|
|
178
|
-
className: "flex h-20 items-center justify-center text-fg-tertiary",
|
|
179
|
-
children: /* @__PURE__ */ m(s, {
|
|
180
|
-
icon: g,
|
|
181
|
-
size: "xs"
|
|
182
|
-
})
|
|
183
|
-
})
|
|
184
|
-
]
|
|
185
|
-
})
|
|
186
|
-
})
|
|
187
|
-
})]
|
|
188
|
-
});
|
|
189
|
-
return q ? $ : te({
|
|
190
|
-
label: F,
|
|
191
|
-
description: I,
|
|
192
|
-
error: L,
|
|
193
|
-
optional: R,
|
|
194
|
-
required: z,
|
|
195
|
-
layout: B,
|
|
196
|
-
id: J.wrapId ?? k,
|
|
197
|
-
disabled: D,
|
|
198
|
-
className: V
|
|
199
|
-
}, $);
|
|
200
|
-
});
|
|
201
|
-
process.env.NODE_ENV !== "production" && (S.displayName = "Select");
|
|
202
|
-
function C() {
|
|
203
|
-
return /* @__PURE__ */ m("span", {
|
|
204
|
-
className: "inline-flex size-18 shrink-0 items-center justify-center rounded-checkbox bg-raised shadow-selector group-data-selected/opt:bg-ink group-data-selected/opt:shadow-none",
|
|
205
|
-
children: /* @__PURE__ */ m("svg", {
|
|
206
|
-
viewBox: "0 0 12 12",
|
|
207
|
-
className: "hidden size-12 text-on-ink group-data-selected/opt:block",
|
|
208
|
-
fill: "none",
|
|
209
|
-
"aria-hidden": !0,
|
|
210
|
-
children: /* @__PURE__ */ m("path", {
|
|
211
|
-
d: "M2.5 6.25 4.9 8.5 9.5 3.75",
|
|
212
|
-
stroke: "currentColor",
|
|
213
|
-
strokeWidth: "1.75",
|
|
214
|
-
strokeLinecap: "round",
|
|
215
|
-
strokeLinejoin: "round"
|
|
216
|
-
})
|
|
217
|
-
})
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
//#endregion
|
|
221
|
-
export { y as n, S as r, b as t };
|
|
222
|
-
|
|
223
|
-
//# sourceMappingURL=select-Ca3HGsN1.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-Ca3HGsN1.js","names":["Select","BaseSelect","__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","__icon_Tick02Icon","MENU_ITEM","MENU_POPUP","cn","warnStylingClassName","pageBoundary","usePortalContainer","useUiText","Icon","useField","useFieldControl","withField","useLayoutWidth","anchorWidthStyle","KAESO_SELECT_VARIANTS","KAESO_SELECT_DEFAULT_VARIANTS","changeWith","accepts","value","onChange","groupsOf","out","o","options","last","Select$1","placeholderProp","ariaLabel","force","props","className","t","placeholder","field","fc","trigger","useRef","triggerWidth","setTrigger","useCallback","el","ref","byValue","textOf","v","valueProps","control","Select","required","disabled","name","open","onOpenChange","id","invalid","error","size","appearance","fullWidth","label","description","icon","multiple","arr","first","ArrowDown01Icon","ArrowUp01Icon","Fragment","gi","g","OptionCheckbox","Tick02Icon"],"sources":["../../src/components/select/select.tsx"],"sourcesContent":["import { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, forwardRef, useCallback, useRef, type ReactNode } from \"react\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon, Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { MENU_ICON, MENU_ITEM, MENU_LABEL, MENU_POPUP, MENU_SEPARATOR } from \"../menu/styles.js\";\nimport { anchorWidthStyle, useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_SELECT_VARIANTS = {\n appearance: {\n default: { classes: \"material-secondary\" },\n ghost: { classes: \"material-ghost text-fg-secondary hover:text-fg open:text-fg\" },\n header: { classes: \"material-ghost text-fg\" },\n },\n size: {\n sm: { classes: \"h-32 pl-12 pr-10 gap-6 text-body\" },\n md: { classes: \"h-36 pl-16 pr-12 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-18 pr-14 gap-8 text-body\" },\n xl: { classes: \"h-48 pl-22 pr-18 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_SELECT_DEFAULT_VARIANTS = { appearance: \"default\", size: \"md\" } as const;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n textValue?: string | undefined;\n description?: ReactNode | undefined;\n icon?: IconData | undefined;\n group?: string | undefined;\n disabled?: boolean | undefined;\n}\n\ninterface BaseProps extends FieldWrapProps {\n options: SelectOption[];\n placeholder?: ReactNode | undefined;\n size?: keyof typeof KAESO_SELECT_VARIANTS.size | undefined;\n appearance?: keyof typeof KAESO_SELECT_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n id?: string | undefined;\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n invalid?: boolean | undefined;\n icon?: IconData | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\nexport interface SingleSelectProps extends BaseProps {\n multiple?: false | undefined;\n value?: string | null | undefined;\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n}\nexport interface MultiSelectProps extends BaseProps {\n multiple: true;\n value?: string[] | undefined;\n defaultValue?: string[] | undefined;\n onValueChange?: ((value: string[]) => void) | undefined;\n}\nexport type SelectProps = SingleSelectProps | MultiSelectProps;\n\nfunction changeWith<T extends string | string[]>(onChange: (value: T) => void, accepts: (value: unknown) => value is T) {\n return (value: unknown) => {\n if (accepts(value)) onChange(value);\n };\n}\n\nfunction groupsOf(options: SelectOption[]) {\n const out: { group: string | undefined; items: SelectOption[] }[] = [];\n for (const o of options) {\n const last = out[out.length - 1];\n if (last && last.group === o.group) last.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\nexport const Select = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder: placeholderProp,\n size = \"md\",\n appearance = \"default\",\n disabled,\n name,\n id,\n open,\n onOpenChange,\n invalid,\n icon,\n fullWidth,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n multiple,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n warnStylingClassName(\"Select\", className);\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"select.placeholder\", \"Select\");\n const field = useField();\n const fc = useFieldControl(props);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const triggerWidth = useLayoutWidth(trigger);\n const setTrigger = useCallback(\n (el: HTMLButtonElement | null) => {\n trigger.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n const byValue = new Map(options.map((o) => [o.value, o]));\n const textOf = (v: string) => {\n const o = byValue.get(v);\n return o?.textValue ?? (typeof o?.label === \"string\" ? o.label : v);\n };\n const valueProps: Pick<BaseSelect.Root.Props<string, boolean>, \"multiple\" | \"value\" | \"defaultValue\" | \"onValueChange\"> = props.multiple\n ? {\n multiple: true,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, Array.isArray) } : {}),\n }\n : {\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, (v) => typeof v === \"string\") } : {}),\n };\n const control = (\n <BaseSelect.Root\n {...valueProps}\n {...((field?.required ?? required) ? { required: true } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n {...(open !== undefined ? { open } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n itemToStringLabel={(v: unknown) => textOf(String(v))}\n modal={false}\n >\n <BaseSelect.Trigger\n ref={setTrigger}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control focus-ring disabled:cursor-not-allowed\",\n KAESO_SELECT_VARIANTS.size[size].classes,\n KAESO_SELECT_VARIANTS.appearance[appearance].classes,\n (invalid || error) && \"ring-invalid\",\n fullWidth && \"w-full\",\n !(label || description || error) && className,\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className=\"text-fg-secondary\" />}\n <BaseSelect.Value\n className=\"min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular\"\n placeholder={placeholder}\n >\n {(value: unknown) => {\n if (multiple) {\n const arr = Array.isArray(value) ? value.map(String) : [];\n const [first] = arr;\n if (first === undefined) return placeholder;\n return arr.length === 1 ? textOf(first) : t(\"select.firstAndMore\", \"{first} +{count}\", { first: textOf(first), count: String(arr.length - 1) });\n }\n return value == null || value === \"\" ? placeholder : (byValue.get(String(value))?.label ?? String(value));\n }}\n </BaseSelect.Value>\n <BaseSelect.Icon className=\"flex shrink-0 text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"sm\" />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal container={usePortalContainer()}>\n <BaseSelect.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n alignItemWithTrigger={false}\n align=\"start\"\n sideOffset={6}\n collisionPadding={8}\n className=\"z-50 outline-none\"\n >\n <BaseSelect.Popup className={cn(MENU_POPUP, \"min-w-anchor overflow-hidden\")} style={anchorWidthStyle(triggerWidth)}>\n <BaseSelect.ScrollUpArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowUp01Icon} size=\"xs\" />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List className=\"-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet\">\n {groupsOf(options).map((g, gi) => (\n <Fragment key={g.group ?? `g${gi}`}>\n {gi > 0 && <div role=\"presentation\" className={MENU_SEPARATOR} />}\n <BaseSelect.Group className=\"flex flex-col\">\n {g.group && <BaseSelect.GroupLabel className={MENU_LABEL}>{g.group}</BaseSelect.GroupLabel>}\n {g.items.map((o) => (\n <BaseSelect.Item\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n label={o.textValue ?? (typeof o.label === \"string\" ? o.label : o.value)}\n className={cn(MENU_ITEM, \"group/opt\")}\n >\n {multiple && (\n <span className=\"pointer-events-none flex\">\n <OptionCheckbox />\n </span>\n )}\n {o.icon && <Icon icon={o.icon} size=\"sm\" className={cn(MENU_ICON, o.description && \"self-start mt-10\")} />}\n <span className={cn(\"flex min-w-0 flex-1 flex-col\", o.description && \"gap-2 py-8\")}>\n <BaseSelect.ItemText className=\"truncate\">{o.label}</BaseSelect.ItemText>\n {o.description && <span className=\"text-small font-regular whitespace-normal text-fg-secondary\">{o.description}</span>}\n </span>\n {!multiple && (\n <BaseSelect.ItemIndicator\n keepMounted\n className={cn(\n \"flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100\",\n o.description && \"self-start mt-10\",\n )}\n >\n <Icon icon={__icon_Tick02Icon} size=\"sm\" />\n </BaseSelect.ItemIndicator>\n )}\n </BaseSelect.Item>\n ))}\n </BaseSelect.Group>\n </Fragment>\n ))}\n </BaseSelect.List>\n <BaseSelect.ScrollDownArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"xs\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Select.displayName = \"Select\";\n\nfunction OptionCheckbox() {\n return (\n <span className=\"inline-flex size-18 shrink-0 items-center justify-center rounded-checkbox bg-raised shadow-selector group-data-selected/opt:bg-ink group-data-selected/opt:shadow-none\">\n <svg viewBox=\"0 0 12 12\" className=\"hidden size-12 text-on-ink group-data-selected/opt:block\" fill=\"none\" aria-hidden>\n <path d=\"M2.5 6.25 4.9 8.5 9.5 3.75\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n}\n"],"mappings":"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"}
|