@logicplanes/kaeso-ui 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -0
- package/NOTICE.md +1 -1
- package/ai/component-guides.md +249 -24
- package/ai/component-registry.json +1044 -67
- package/ai/component-registry.md +238 -50
- package/ai/icons.md +1 -1
- package/ai/tokens.md +7 -3
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +5 -5
- package/dist/blocks/resource-list.js +4 -4
- package/dist/chunks/app-frame-B9vrgwaE.js +220 -0
- package/dist/chunks/app-frame-B9vrgwaE.js.map +1 -0
- package/dist/chunks/{avatar-D2nJNbtC.js → avatar-DOzOhYJr.js} +2 -2
- package/dist/chunks/{avatar-D2nJNbtC.js.map → avatar-DOzOhYJr.js.map} +1 -1
- package/dist/chunks/{badge-Dkyhs0_j.js → badge-wUHlj7m3.js} +2 -2
- package/dist/chunks/{badge-Dkyhs0_j.js.map → badge-wUHlj7m3.js.map} +1 -1
- package/dist/chunks/{banner-DxGBPQ7p.js → banner-BBlNFHd-.js} +4 -4
- package/dist/chunks/{banner-DxGBPQ7p.js.map → banner-BBlNFHd-.js.map} +1 -1
- package/dist/chunks/{button-DQvoOxVQ.js → button-CAPyW-v8.js} +8 -8
- package/dist/chunks/{button-DQvoOxVQ.js.map → button-CAPyW-v8.js.map} +1 -1
- package/dist/chunks/{calendar-CN3YJi2k.js → calendar-CBeptQFq.js} +2 -2
- package/dist/chunks/{calendar-CN3YJi2k.js.map → calendar-CBeptQFq.js.map} +1 -1
- package/dist/chunks/{checkbox-BgRdbfCE.js → checkbox-C5yvSS7O.js} +3 -3
- package/dist/chunks/{checkbox-BgRdbfCE.js.map → checkbox-C5yvSS7O.js.map} +1 -1
- package/dist/chunks/{cn-CidVUKMm.js → cn-DUDmdLpZ.js} +3 -1
- package/dist/chunks/cn-DUDmdLpZ.js.map +1 -0
- package/dist/chunks/{code-BADhvsgC.js → code-C49NzHUQ.js} +2 -2
- package/dist/chunks/{code-BADhvsgC.js.map → code-C49NzHUQ.js.map} +1 -1
- package/dist/chunks/{code-block-DxtladFW.js → code-block-DREsvJ-g.js} +24 -21
- package/dist/chunks/code-block-DREsvJ-g.js.map +1 -0
- package/dist/chunks/{collapsible-Cw_1aem5.js → collapsible-CDQq1Y9x.js} +6 -6
- package/dist/chunks/collapsible-CDQq1Y9x.js.map +1 -0
- package/dist/chunks/combobox-DqtzsAKG.js +314 -0
- package/dist/chunks/combobox-DqtzsAKG.js.map +1 -0
- package/dist/chunks/command-list-D5k0uvkR.js +417 -0
- package/dist/chunks/command-list-D5k0uvkR.js.map +1 -0
- package/dist/chunks/{copy-button-DXxn-YYZ.js → copy-button-CNpEnS04.js} +6 -6
- package/dist/chunks/{copy-button-DXxn-YYZ.js.map → copy-button-CNpEnS04.js.map} +1 -1
- package/dist/chunks/{core-K960A4OT.js → core-CqLWVMDI.js} +36 -36
- package/dist/chunks/core-CqLWVMDI.js.map +1 -0
- package/dist/chunks/{date-popup-B-6xhb-1.js → date-popup-BgDz6SUj.js} +4 -4
- package/dist/chunks/{date-popup-B-6xhb-1.js.map → date-popup-BgDz6SUj.js.map} +1 -1
- package/dist/chunks/{de-CTAo4KL7.js → de-CkXZKaBD.js} +37 -5
- package/dist/chunks/de-CkXZKaBD.js.map +1 -0
- package/dist/chunks/dialog-truWH0qe.js +353 -0
- package/dist/chunks/dialog-truWH0qe.js.map +1 -0
- package/dist/chunks/{empty-DIbBpytW.js → empty-YXmSkKzR.js} +2 -2
- package/dist/chunks/{empty-DIbBpytW.js.map → empty-YXmSkKzR.js.map} +1 -1
- package/dist/chunks/{field-d8V94bvZ.js → field-BZriODU7.js} +3 -3
- package/dist/chunks/field-BZriODU7.js.map +1 -0
- package/dist/chunks/{icon-CeNQtobn.js → icon-BqujXDUc.js} +2 -2
- package/dist/chunks/{icon-CeNQtobn.js.map → icon-BqujXDUc.js.map} +1 -1
- package/dist/chunks/{icon-button-_x1RUphC.js → icon-button-D4O4puwH.js} +3 -3
- package/dist/chunks/{icon-button-_x1RUphC.js.map → icon-button-D4O4puwH.js.map} +1 -1
- package/dist/chunks/identity-CsZvAUwu.js +361 -0
- package/dist/chunks/identity-CsZvAUwu.js.map +1 -0
- package/dist/chunks/{input-CNTfI6YE.js → input-B0wtkcNh.js} +5 -5
- package/dist/chunks/{input-CNTfI6YE.js.map → input-B0wtkcNh.js.map} +1 -1
- package/dist/chunks/{input-group-CYA1MEoZ.js → input-group-BQLw06B0.js} +33 -27
- package/dist/chunks/input-group-BQLw06B0.js.map +1 -0
- package/dist/chunks/{inset-BLMdxX4I.js → inset-BnBj8NJV.js} +12 -2
- package/dist/chunks/inset-BnBj8NJV.js.map +1 -0
- package/dist/chunks/{iso-field-1qmg7TP8.js → iso-field-BUXgY1dB.js} +5 -3
- package/dist/chunks/{iso-field-1qmg7TP8.js.map → iso-field-BUXgY1dB.js.map} +1 -1
- package/dist/chunks/{json-view-B6KHIWzh.js → json-view-BkG2hTXV.js} +11 -10
- package/dist/chunks/{json-view-B6KHIWzh.js.map → json-view-BkG2hTXV.js.map} +1 -1
- package/dist/chunks/{kbd-CBcBDvqU.js → kbd-DqWmbr_e.js} +2 -2
- package/dist/chunks/{kbd-CBcBDvqU.js.map → kbd-DqWmbr_e.js.map} +1 -1
- package/dist/chunks/{link-vz9aV8WX.js → link-YMcxM-BZ.js} +4 -4
- package/dist/chunks/{link-vz9aV8WX.js.map → link-YMcxM-BZ.js.map} +1 -1
- package/dist/chunks/{link-provider---9JdxTg.js → link-provider-BsUxhZKG.js} +2 -2
- package/dist/chunks/{link-provider---9JdxTg.js.map → link-provider-BsUxhZKG.js.map} +1 -1
- package/dist/chunks/list-wXZIZo_s.js +492 -0
- package/dist/chunks/list-wXZIZo_s.js.map +1 -0
- package/dist/chunks/{loader-CUehxvSZ.js → loader-ENBh2Fbt.js} +2 -2
- package/dist/chunks/{loader-CUehxvSZ.js.map → loader-ENBh2Fbt.js.map} +1 -1
- package/dist/chunks/{markdown-5NyaHHfN.js → markdown-DWyxjsSY.js} +10 -10
- package/dist/chunks/{markdown-5NyaHHfN.js.map → markdown-DWyxjsSY.js.map} +1 -1
- package/dist/chunks/{menu-DyVPwgfF.js → menu-Bnfi9P3t.js} +7 -7
- package/dist/chunks/{menu-DyVPwgfF.js.map → menu-Bnfi9P3t.js.map} +1 -1
- package/dist/chunks/{meter-DWhyzFGQ.js → meter-DhTnem4k.js} +2 -2
- package/dist/chunks/{meter-DWhyzFGQ.js.map → meter-DhTnem4k.js.map} +1 -1
- package/dist/chunks/nav-sheet-QqNRHo-y.js +60 -0
- package/dist/chunks/nav-sheet-QqNRHo-y.js.map +1 -0
- package/dist/chunks/{nav-wordmark-DLkItdvo.js → nav-wordmark-DmbT1Aiw.js} +2 -2
- package/dist/chunks/{nav-wordmark-DLkItdvo.js.map → nav-wordmark-DmbT1Aiw.js.map} +1 -1
- package/dist/chunks/option-checkbox-Df7WhGn4.js +25 -0
- package/dist/chunks/option-checkbox-Df7WhGn4.js.map +1 -0
- package/dist/chunks/over-sheet-B8vzr_zU.js +8 -0
- package/dist/chunks/over-sheet-B8vzr_zU.js.map +1 -0
- package/dist/chunks/{page-header-CEPZzhRp.js → page-header-Ccnrspbp.js} +5 -5
- package/dist/chunks/{page-header-CEPZzhRp.js.map → page-header-Ccnrspbp.js.map} +1 -1
- package/dist/chunks/{pagination-CCMxQ5pH.js → pagination-CEmWZNjp.js} +5 -4
- package/dist/chunks/{pagination-CCMxQ5pH.js.map → pagination-CEmWZNjp.js.map} +1 -1
- package/dist/chunks/picker-popover-C4ElNk7t.js +102 -0
- package/dist/chunks/picker-popover-C4ElNk7t.js.map +1 -0
- package/dist/chunks/{popover-BE7VO-a4.js → popover-bjxg020P.js} +3 -3
- package/dist/chunks/{popover-BE7VO-a4.js.map → popover-bjxg020P.js.map} +1 -1
- package/dist/chunks/{radio-CUxbLCvD.js → radio-DwYcXAzv.js} +2 -2
- package/dist/chunks/{radio-CUxbLCvD.js.map → radio-DwYcXAzv.js.map} +1 -1
- package/dist/chunks/range-popup-CG9Jo5B7.js +128 -0
- package/dist/chunks/range-popup-CG9Jo5B7.js.map +1 -0
- package/dist/chunks/release-art-Chd8l9Rf.js +555 -0
- package/dist/chunks/release-art-Chd8l9Rf.js.map +1 -0
- package/dist/chunks/{resize-motion-CMaidkwe.js → resize-motion-BWGMchyP.js} +27 -23
- package/dist/chunks/resize-motion-BWGMchyP.js.map +1 -0
- package/dist/chunks/{rights-BbiJ0AJB.js → rights-hMoaFasn.js} +12 -12
- package/dist/chunks/rights-hMoaFasn.js.map +1 -0
- package/dist/chunks/{section-DzOLLN1p.js → section-BsET7Fo-.js} +4 -4
- package/dist/chunks/{section-DzOLLN1p.js.map → section-BsET7Fo-.js.map} +1 -1
- package/dist/chunks/{segmented-MrinfDL8.js → segmented-DXKVF-nY.js} +4 -4
- package/dist/chunks/{segmented-MrinfDL8.js.map → segmented-DXKVF-nY.js.map} +1 -1
- package/dist/chunks/{select-Bc4kRiSG.js → select-Bbv2f5F8.js} +63 -80
- package/dist/chunks/select-Bbv2f5F8.js.map +1 -0
- package/dist/chunks/{separator-D5AzVFTS.js → separator-CpAUELNs.js} +2 -2
- package/dist/chunks/{separator-D5AzVFTS.js.map → separator-CpAUELNs.js.map} +1 -1
- package/dist/chunks/{sidebar-5IA18LuP.js → sidebar-Dey1ZfGt.js} +54 -51
- package/dist/chunks/sidebar-Dey1ZfGt.js.map +1 -0
- package/dist/chunks/{sidebar-menu-DRWRxcJ3.js → sidebar-menu-ct8IiL4z.js} +2 -2
- package/dist/chunks/{sidebar-menu-DRWRxcJ3.js.map → sidebar-menu-ct8IiL4z.js.map} +1 -1
- package/dist/chunks/{skeleton-kfuqdl1a.js → skeleton-BM797MAg.js} +2 -2
- package/dist/chunks/{skeleton-kfuqdl1a.js.map → skeleton-BM797MAg.js.map} +1 -1
- package/dist/chunks/{slider-DbhjJ3ML.js → slider-Ds-tqY-1.js} +2 -2
- package/dist/chunks/{slider-DbhjJ3ML.js.map → slider-Ds-tqY-1.js.map} +1 -1
- package/dist/chunks/status-dot-BqVOlShY.js +29 -0
- package/dist/chunks/status-dot-BqVOlShY.js.map +1 -0
- package/dist/chunks/{styles-Btvg2DCf.js → styles-CVJU9t9v.js} +2 -2
- package/dist/chunks/{styles-Btvg2DCf.js.map → styles-CVJU9t9v.js.map} +1 -1
- package/dist/chunks/{swap-text-BhPI8DOf.js → swap-text-Cica0pUr.js} +2 -2
- package/dist/chunks/{swap-text-BhPI8DOf.js.map → swap-text-Cica0pUr.js.map} +1 -1
- package/dist/chunks/{switch-XMY_CQE-.js → switch-CSKMEomo.js} +3 -3
- package/dist/chunks/{switch-XMY_CQE-.js.map → switch-CSKMEomo.js.map} +1 -1
- package/dist/chunks/{table-DYKa86af.js → table-D-36EM7f.js} +2 -2
- package/dist/chunks/{table-DYKa86af.js.map → table-D-36EM7f.js.map} +1 -1
- package/dist/chunks/{tag-Dg89uYpV.js → tag-CwDKXVHj.js} +4 -4
- package/dist/chunks/{tag-Dg89uYpV.js.map → tag-CwDKXVHj.js.map} +1 -1
- package/dist/chunks/{text--5MKh2G4.js → text-Dvvgg5Jt.js} +3 -3
- package/dist/chunks/{text--5MKh2G4.js.map → text-Dvvgg5Jt.js.map} +1 -1
- package/dist/chunks/{textarea-Cj8iR82R.js → textarea-2d373OyU.js} +35 -31
- package/dist/chunks/textarea-2d373OyU.js.map +1 -0
- package/dist/chunks/timeseries-LRDAZHV0.js +339 -0
- package/dist/chunks/timeseries-LRDAZHV0.js.map +1 -0
- package/dist/chunks/{toolbar-Dw3uxpsE.js → toolbar-nVLFWH2i.js} +3 -3
- package/dist/chunks/{toolbar-Dw3uxpsE.js.map → toolbar-nVLFWH2i.js.map} +1 -1
- package/dist/chunks/{tooltip-DEbCCsru.js → tooltip-S1DmyLVl.js} +4 -4
- package/dist/chunks/{tooltip-DEbCCsru.js.map → tooltip-S1DmyLVl.js.map} +1 -1
- package/dist/chunks/{tooltip-root-DRd4ciUv.js → tooltip-root-vjylFUqw.js} +4 -4
- package/dist/chunks/{tooltip-root-DRd4ciUv.js.map → tooltip-root-vjylFUqw.js.map} +1 -1
- package/dist/chunks/{virtual-rows-BZe49bKi.js → virtual-rows-yAMjeAwj.js} +4 -3
- package/dist/chunks/virtual-rows-yAMjeAwj.js.map +1 -0
- package/dist/chunks/{zh-CN-C7GmVswt.js → zh-CN-CqEA4PCM.js} +37 -5
- package/dist/chunks/zh-CN-CqEA4PCM.js.map +1 -0
- package/dist/components/app-frame.js +2 -2
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +33 -32
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +34 -31
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +2 -2
- package/dist/components/charts/gauge.js +2 -2
- package/dist/components/charts/heatmap.js +1 -1
- package/dist/components/charts/sankey.js +2 -2
- package/dist/components/charts/sparkline.js +1 -1
- package/dist/components/charts/timeseries.js +1 -252
- package/dist/components/charts.js +3 -3
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +2 -2
- package/dist/components/code.js +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +4 -0
- package/dist/components/command-palette.js +120 -171
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +251 -193
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +7 -7
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +7 -9
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +67 -53
- package/dist/components/display-options.js.map +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/filter-chip.js +138 -63
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +2 -2
- package/dist/components/flow.js +2 -2
- package/dist/components/heading.js +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +56 -54
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +88 -79
- package/dist/components/kaeso/conversation.js.map +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +8 -8
- package/dist/components/kaeso/moments.js.map +1 -1
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +6 -6
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +212 -84
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/key-value.js +3 -3
- package/dist/components/label.js +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/loader.js +2 -2
- package/dist/components/logo.js +2 -2
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +2 -2
- package/dist/components/meter.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +654 -381
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/qr-code.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +2 -0
- package/dist/components/scroll-area.js +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/separator.js +1 -1
- package/dist/components/settings.js +3 -3
- package/dist/components/sheet.js +69 -52
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/stat.js +88 -74
- package/dist/components/stat.js.map +1 -1
- package/dist/components/status-dot.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/swap-text.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +48 -49
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +1 -1
- package/dist/components/theme-menu.js +2 -2
- package/dist/components/theme-select.js +1 -1
- package/dist/components/timeline.js +1 -1
- package/dist/components/toast.js +4 -4
- package/dist/components/toc.js +1 -1
- package/dist/components/toolbar.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/visually-hidden.js +1 -1
- package/dist/format.js +132 -79
- package/dist/format.js.map +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +115 -111
- package/dist/kaeso.css +43 -8
- package/dist/styles.css +1 -1
- package/dist/types/components/charts/bar.d.ts +6 -0
- package/dist/types/components/charts/core.d.ts +2 -2
- package/dist/types/components/charts/docs.d.ts +7 -0
- package/dist/types/components/charts/time-axis.d.ts +5 -0
- package/dist/types/components/charts/timeseries.d.ts +9 -0
- package/dist/types/components/code-block/highlighter.d.ts +2 -0
- package/dist/types/components/combobox/combobox.d.ts +2 -0
- package/dist/types/components/combobox/docs.d.ts +2 -4
- package/dist/types/components/command-list/command-list.d.ts +84 -0
- package/dist/types/components/command-list/docs.d.ts +52 -0
- package/dist/types/components/command-list/index.d.ts +3 -0
- package/dist/types/components/command-list/match.d.ts +1 -0
- package/dist/types/components/command-list/picker-popover.d.ts +44 -0
- package/dist/types/components/data-table/data-table.d.ts +3 -2
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/date-picker/docs.d.ts +0 -6
- package/dist/types/components/dialog/dialog.d.ts +24 -0
- package/dist/types/components/dialog/docs.d.ts +4 -0
- package/dist/types/components/display-options/display-options.d.ts +1 -0
- package/dist/types/components/filter-chip/docs.d.ts +4 -0
- package/dist/types/components/filter-chip/filter-chip.d.ts +7 -0
- package/dist/types/components/input/docs.d.ts +2 -12
- package/dist/types/components/input/number-input.d.ts +1 -0
- package/dist/types/components/input/tag-input.d.ts +1 -0
- package/dist/types/components/kaeso/docs.d.ts +34 -0
- package/dist/types/components/kaeso/identity.d.ts +10 -1
- package/dist/types/components/kaeso/index.d.ts +1 -0
- package/dist/types/components/kaeso/provider-marks.d.ts +5 -1
- package/dist/types/components/kaeso/provider-picker.d.ts +42 -0
- package/dist/types/components/list/docs.d.ts +2 -0
- package/dist/types/components/list/list.d.ts +2 -0
- package/dist/types/components/menu/styles.d.ts +1 -1
- package/dist/types/components/playground/docs.d.ts +32 -0
- package/dist/types/components/playground/index.d.ts +1 -0
- package/dist/types/components/playground/model-picker.d.ts +39 -4
- package/dist/types/components/playground/reasoning.d.ts +29 -0
- package/dist/types/components/playground/response-view.d.ts +7 -1
- package/dist/types/components/release-art/docs.d.ts +13 -0
- package/dist/types/components/release-art/drawing.d.ts +48 -0
- package/dist/types/components/release-art/index.d.ts +1 -0
- package/dist/types/components/release-art/release-art.d.ts +37 -0
- package/dist/types/components/select/docs.d.ts +0 -2
- package/dist/types/components/select/option-checkbox.d.ts +1 -0
- package/dist/types/components/sidebar/sidebar.d.ts +1 -0
- package/dist/types/components/stat/docs.d.ts +1 -0
- package/dist/types/components/stat/stat.d.ts +1 -0
- package/dist/types/components/status-dot/docs.d.ts +2 -0
- package/dist/types/components/status-dot/status-dot.d.ts +2 -0
- package/dist/types/format/index.d.ts +8 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/inset.d.ts +5 -0
- package/dist/types/utils/over-sheet.d.ts +1 -0
- package/dist/types/utils/restore-focus.d.ts +1 -1
- package/dist/utils.js +4 -4
- package/foundations/accessibility.md +1 -0
- package/foundations/layout.md +45 -0
- package/foundations/writing.md +1 -0
- package/package.json +2 -2
- package/dist/chunks/app-frame-BXh-06HL.js +0 -214
- package/dist/chunks/app-frame-BXh-06HL.js.map +0 -1
- package/dist/chunks/cn-CidVUKMm.js.map +0 -1
- package/dist/chunks/code-block-DxtladFW.js.map +0 -1
- package/dist/chunks/collapsible-Cw_1aem5.js.map +0 -1
- package/dist/chunks/combobox-D30Wt11R.js +0 -291
- package/dist/chunks/combobox-D30Wt11R.js.map +0 -1
- package/dist/chunks/core-K960A4OT.js.map +0 -1
- package/dist/chunks/de-CTAo4KL7.js.map +0 -1
- package/dist/chunks/dialog-LNKgPEsV.js +0 -319
- package/dist/chunks/dialog-LNKgPEsV.js.map +0 -1
- package/dist/chunks/field-d8V94bvZ.js.map +0 -1
- package/dist/chunks/field-press-DwzBFafd.js +0 -10
- package/dist/chunks/field-press-DwzBFafd.js.map +0 -1
- package/dist/chunks/identity-BtZC_d_Q.js +0 -342
- package/dist/chunks/identity-BtZC_d_Q.js.map +0 -1
- package/dist/chunks/input-group-CYA1MEoZ.js.map +0 -1
- package/dist/chunks/inset-BLMdxX4I.js.map +0 -1
- package/dist/chunks/list-CzaiyNja.js +0 -483
- package/dist/chunks/list-CzaiyNja.js.map +0 -1
- package/dist/chunks/nav-sheet-BIErlV74.js +0 -58
- package/dist/chunks/nav-sheet-BIErlV74.js.map +0 -1
- package/dist/chunks/range-popup-DGOnGGag.js +0 -111
- package/dist/chunks/range-popup-DGOnGGag.js.map +0 -1
- package/dist/chunks/resize-motion-CMaidkwe.js.map +0 -1
- package/dist/chunks/rights-BbiJ0AJB.js.map +0 -1
- package/dist/chunks/select-Bc4kRiSG.js.map +0 -1
- package/dist/chunks/sidebar-5IA18LuP.js.map +0 -1
- package/dist/chunks/status-dot-CBoQpyL4.js +0 -25
- package/dist/chunks/status-dot-CBoQpyL4.js.map +0 -1
- package/dist/chunks/textarea-Cj8iR82R.js.map +0 -1
- package/dist/chunks/virtual-rows-BZe49bKi.js.map +0 -1
- package/dist/chunks/zh-CN-C7GmVswt.js.map +0 -1
- package/dist/components/charts/timeseries.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-sheet-BIErlV74.js","names":["__exportAll","usePortalContainer","useUiText","SidebarSheetContext","SidebarFloatingContext","nav_sheet_exports","NavSheet","leave","useRef","t","useEffect","open","peek","wide","onChange","onOpenChange","Dialog","o","returnFocus"],"sources":["../../src/components/app-frame/nav-sheet.tsx"],"sourcesContent":["import { useEffect, useRef, type ReactNode, type RefObject } from \"react\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { SidebarFloatingContext, SidebarSheetContext } from \"../sidebar/sidebar.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport function NavSheet({\n open,\n onOpenChange,\n peek = false,\n returnFocus,\n children,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n peek?: boolean | undefined;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n children: ReactNode;\n}) {\n const leave = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const t = useUiText();\n useEffect(() => {\n if (!open || peek || typeof window === \"undefined\") return;\n const wide = window.matchMedia(\"(min-width: 1024px)\");\n const onChange = () => wide.matches && onOpenChange(false);\n onChange();\n wide.addEventListener(\"change\", onChange);\n return () => wide.removeEventListener(\"change\", onChange);\n }, [open, peek, onOpenChange]);\n return (\n <Dialog.Root open={open} onOpenChange={(o: boolean) => onOpenChange(o)} modal={!peek}>\n <Dialog.Portal container={usePortalContainer()}>\n <Dialog.Backdrop className=\"fixed inset-0 z-40 bg-overlay opacity-60 backdrop-motion\" />\n <Dialog.Popup\n aria-label={t(\"appFrame.navigation\", \"Navigation\")}\n data-side=\"left\"\n initialFocus={!peek}\n {...(returnFocus ? { finalFocus: returnFocus } : {})}\n className=\"fixed top-0 bottom-0 left-0 z-40 flex overflow-hidden rounded-r-sheet bg-chrome shadow-dialog outline-none safe-area-sheet sheet-motion\"\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"a[href]\")) onOpenChange(false);\n }}\n onPointerEnter={() => clearTimeout(leave.current)}\n onPointerLeave={() => {\n if (!peek) return;\n leave.current = setTimeout(() => onOpenChange(false), 160);\n }}\n >\n <SidebarFloatingContext.Provider value>\n <SidebarSheetContext.Provider value={{ close: () => onOpenChange(false), peek }}>{children}</SidebarSheetContext.Provider>\n </SidebarFloatingContext.Provider>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") NavSheet.displayName = \"NavSheet\";\n"],"mappings":";;;;;;;;;;AAMA,SAAgBM,EAAS,EACvB,SACA,iBACA,UAAO,IACP,gBACA,eAOC;CACD,IAAMC,IAAQC,EAAkD,KAAA,CAAS,GACnEC,IAAIP,EAAU;CASpB,OARAQ,QAAgB;EACd,IAAI,CAACC,KAAQC,KAAQ,OAAO,SAAW,KAAa;EACpD,IAAMC,IAAO,OAAO,WAAW,qBAAqB,GAC9CC,UAAiBD,EAAK,WAAWE,EAAa,EAAK;EAGzD,OAFAD,EAAS,GACTD,EAAK,iBAAiB,UAAUC,CAAQ,SAC3BD,EAAK,oBAAoB,UAAUC,CAAQ;CAC1D,GAAG;EAACH;EAAMC;EAAMG;CAAY,CAAC,GAE3B,kBAACC,EAAO,MAAR;EAAmB;EAAM,eAAe,MAAeD,EAAaE,CAAC;EAAG,OAAO,CAACL;EAC9E,UAAA,kBAACI,EAAO,QAAR;GAAe,WAAWf,EAAmB;GAA7C,UAAA,CACE,kBAACe,EAAO,UAAR,EAAiB,WAAU,2DAA4D,CAAA,GACvF,kBAACA,EAAO,OAAR;IACE,cAAYP,EAAE,uBAAuB,YAAY;IACjD,aAAU;IACV,cAAc,CAACG;IACf,GAAKM,IAAc,EAAE,YAAYA,EAAY,IAAI,CAAC;IAClD,WAAU;IACV,UAAU,MAAM;KACd,AAAK,EAAE,OAAuB,QAAQ,SAAS,KAAGH,EAAa,EAAK;IACtE;IACA,sBAAsB,aAAaR,EAAM,OAAO;IAChD,sBAAsB;KACpB,AAAKK,MACL,EAAM,UAAU,iBAAiBG,EAAa,EAAK,GAAG,GAAG;IAC3D;IAEA,UAAA,kBAACX,EAAuB,UAAxB;KAAiC,OAAA;KAC/B,UAAA,kBAACD,EAAoB,UAArB;MAA8B,OAAO;OAAE,aAAaY,EAAa,EAAK;OAAG;MAAK;MAAI;KAAuC,CAAA;IAC1F,CAAA;GACrB,CAAA,CACD;;CACJ,CAAA;AAEjB;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { i as e } from "./styles-Btvg2DCf.js";
|
|
3
|
-
import { t } from "./cn-CidVUKMm.js";
|
|
4
|
-
import { i as n } from "./context-BELWW79w.js";
|
|
5
|
-
import { n as r } from "./button-DQvoOxVQ.js";
|
|
6
|
-
import { i } from "./popover-BE7VO-a4.js";
|
|
7
|
-
import { t as a } from "./calendar-CN3YJi2k.js";
|
|
8
|
-
import { t as o } from "./iso-field-1qmg7TP8.js";
|
|
9
|
-
import { useState as s, useSyncExternalStore as c } from "react";
|
|
10
|
-
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
11
|
-
//#region src/components/date-picker/range-popup.tsx
|
|
12
|
-
var d = "(max-width: 767px)";
|
|
13
|
-
function f(e) {
|
|
14
|
-
if (typeof window > "u" || !window.matchMedia) return () => {};
|
|
15
|
-
let t = window.matchMedia(d);
|
|
16
|
-
return t.addEventListener("change", e), () => t.removeEventListener("change", e);
|
|
17
|
-
}
|
|
18
|
-
var p = () => typeof window < "u" && !!window.matchMedia?.(d).matches, m = () => !c(f, p, () => !1), h = (e) => new Date(e.getFullYear(), e.getMonth(), 1), g = (e, t) => new Date(e.getFullYear(), e.getMonth() + t, 1), _ = (e, t) => e?.toDateString() === t?.toDateString();
|
|
19
|
-
function v({ range: c, preset: d, presets: f, onPick: p, onClose: v, weekStartsOn: y, disabledDays: b }) {
|
|
20
|
-
let x = m(), S = n(), C = x ? 2 : 1, [w, T] = s(c ?? void 0), [E, D] = s(d === null), [O, k] = s(() => h(c?.to ?? c?.from ?? /* @__PURE__ */ new Date())), A = g(O, 1 - C), j = (e) => e >= A && h(e) <= O, M = E ? null : d, N = (e) => {
|
|
21
|
-
T(e), D(!0);
|
|
22
|
-
}, P = (e, t) => {
|
|
23
|
-
if (b?.(t)) return !1;
|
|
24
|
-
let n = e === "from" ? w?.to : w?.from;
|
|
25
|
-
return N(e === "from" ? {
|
|
26
|
-
from: t,
|
|
27
|
-
to: n && n < t ? t : n
|
|
28
|
-
} : {
|
|
29
|
-
from: n && n > t ? t : n,
|
|
30
|
-
to: t
|
|
31
|
-
}), j(t) || k(e === "to" || C === 1 ? h(t) : g(h(t), C - 1)), !0;
|
|
32
|
-
}, F = _(w?.from, c?.from) && _(w?.to ?? w?.from, c?.to), I = t(e, "cursor-pointer hover:bg-fill-1 focus-ring-inset aria-selected:bg-fill-2", x && "coarse:min-h-40");
|
|
33
|
-
return /* @__PURE__ */ l(i.Content, {
|
|
34
|
-
padding: "none",
|
|
35
|
-
"aria-label": S("datePicker.chooseRange", "Choose a date range"),
|
|
36
|
-
className: t(!x && "w-360 max-w-(--available-width)"),
|
|
37
|
-
children: /* @__PURE__ */ u("div", {
|
|
38
|
-
className: t("flex", !x && "flex-col"),
|
|
39
|
-
children: [/* @__PURE__ */ u("div", {
|
|
40
|
-
className: t("shrink-0 gap-2 p-6", x ? "flex min-w-160 flex-col hairline-r" : "grid grid-cols-2 hairline-b"),
|
|
41
|
-
role: "listbox",
|
|
42
|
-
"aria-label": S("datePicker.presets", "Presets"),
|
|
43
|
-
children: [f.map((e) => {
|
|
44
|
-
let t = e.id ?? e.label;
|
|
45
|
-
return /* @__PURE__ */ l("button", {
|
|
46
|
-
type: "button",
|
|
47
|
-
role: "option",
|
|
48
|
-
"aria-selected": M === t,
|
|
49
|
-
className: I,
|
|
50
|
-
onClick: () => p(e.range(), t),
|
|
51
|
-
children: e.label
|
|
52
|
-
}, t);
|
|
53
|
-
}), /* @__PURE__ */ l("button", {
|
|
54
|
-
type: "button",
|
|
55
|
-
role: "option",
|
|
56
|
-
"aria-selected": M === null,
|
|
57
|
-
className: I,
|
|
58
|
-
onClick: () => D(!0),
|
|
59
|
-
children: S("datePicker.custom", "Custom")
|
|
60
|
-
})]
|
|
61
|
-
}), /* @__PURE__ */ u("div", {
|
|
62
|
-
className: t("flex flex-col p-12", !x && "items-center"),
|
|
63
|
-
children: [/* @__PURE__ */ l(a, {
|
|
64
|
-
mode: "range",
|
|
65
|
-
numberOfMonths: C,
|
|
66
|
-
selected: w,
|
|
67
|
-
month: A,
|
|
68
|
-
onMonthChange: (e) => k(g(e, C - 1)),
|
|
69
|
-
onSelect: (e) => N(e),
|
|
70
|
-
weekStartsOn: y,
|
|
71
|
-
disabled: b
|
|
72
|
-
}), /* @__PURE__ */ u("div", {
|
|
73
|
-
className: "mt-12 flex items-center gap-8 self-stretch",
|
|
74
|
-
children: [
|
|
75
|
-
/* @__PURE__ */ l(o, {
|
|
76
|
-
label: S("datePicker.startDate", "Start date"),
|
|
77
|
-
value: w?.from,
|
|
78
|
-
onCommit: (e) => P("from", e)
|
|
79
|
-
}),
|
|
80
|
-
/* @__PURE__ */ l("span", {
|
|
81
|
-
className: "text-fg-tertiary",
|
|
82
|
-
"aria-hidden": !0,
|
|
83
|
-
children: "–"
|
|
84
|
-
}),
|
|
85
|
-
/* @__PURE__ */ l(o, {
|
|
86
|
-
label: S("datePicker.endDate", "End date"),
|
|
87
|
-
value: w?.to,
|
|
88
|
-
onCommit: (e) => P("to", e)
|
|
89
|
-
}),
|
|
90
|
-
/* @__PURE__ */ l(r, {
|
|
91
|
-
size: "sm",
|
|
92
|
-
variant: "primary",
|
|
93
|
-
disabled: !w?.from,
|
|
94
|
-
onClick: () => {
|
|
95
|
-
w?.from && (F && !E ? v() : p({
|
|
96
|
-
from: w.from,
|
|
97
|
-
to: w.to ?? w.from
|
|
98
|
-
}, null));
|
|
99
|
-
},
|
|
100
|
-
children: S("datePicker.apply", "Apply")
|
|
101
|
-
})
|
|
102
|
-
]
|
|
103
|
-
})]
|
|
104
|
-
})]
|
|
105
|
-
})
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
//#endregion
|
|
109
|
-
export { v as RangePopup };
|
|
110
|
-
|
|
111
|
-
//# sourceMappingURL=range-popup-DGOnGGag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range-popup-DGOnGGag.js","names":["MENU_ITEM","useUiText","Button","Calendar","IsoField","NARROW","subscribeNarrow","q","onChange","isNarrow","useWide","useSyncExternalStore","monthOf","d","addMonths","n","sameDay","a","b","RangePopup","wide","t","months","draft","setDraft","useState","range","custom","setCustom","preset","last","setLast","first","shows","selected","edit","next","typed","disabledDays","other","which","unchanged","item","cn","Popover","presets","id","p","onPick","m","r","onClose"],"sources":["../../src/components/date-picker/range-popup.tsx"],"sourcesContent":["import { useState, useSyncExternalStore } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { Calendar, type CalendarProps } from \"../calendar/calendar.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Button } from \"../button/button.js\";\nimport { MENU_ITEM } from \"../menu/styles.js\";\nimport { IsoField } from \"./iso-field.js\";\nimport type { DateRangePreset } from \"./date-picker.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport interface RangePopupProps {\n range: DateRange | null;\n preset: string | null;\n presets: DateRangePreset[];\n onPick: (range: DateRange, preset: string | null) => void;\n onClose: () => void;\n weekStartsOn: CalendarProps[\"weekStartsOn\"];\n disabledDays: ((date: Date) => boolean) | undefined;\n}\n\nconst NARROW = \"(max-width: 767px)\";\nfunction subscribeNarrow(onChange: () => void) {\n if (typeof window === \"undefined\" || !window.matchMedia) return () => {};\n const q = window.matchMedia(NARROW);\n q.addEventListener(\"change\", onChange);\n return () => q.removeEventListener(\"change\", onChange);\n}\nconst isNarrow = () => typeof window !== \"undefined\" && !!window.matchMedia?.(NARROW).matches;\nconst useWide = () => !useSyncExternalStore(subscribeNarrow, isNarrow, () => false);\n\nconst monthOf = (d: Date) => new Date(d.getFullYear(), d.getMonth(), 1);\nconst addMonths = (d: Date, n: number) => new Date(d.getFullYear(), d.getMonth() + n, 1);\nconst sameDay = (a: Date | undefined, b: Date | undefined) => a?.toDateString() === b?.toDateString();\n\nexport function RangePopup({ range, preset, presets, onPick, onClose, weekStartsOn, disabledDays }: RangePopupProps) {\n const wide = useWide();\n const t = useUiText();\n const months = wide ? 2 : 1;\n const [draft, setDraft] = useState<DateRange | undefined>(range ?? undefined);\n const [custom, setCustom] = useState(preset === null);\n const [last, setLast] = useState(() => monthOf(range?.to ?? range?.from ?? new Date()));\n const first = addMonths(last, 1 - months);\n const shows = (d: Date) => d >= first && monthOf(d) <= last;\n const selected = custom ? null : preset;\n const edit = (next: DateRange | undefined) => {\n setDraft(next);\n setCustom(true);\n };\n const typed = (which: \"from\" | \"to\", d: Date) => {\n if (disabledDays?.(d)) return false;\n const other = which === \"from\" ? draft?.to : draft?.from;\n const next = which === \"from\" ? { from: d, to: other && other < d ? d : other } : { from: other && other > d ? d : other, to: d };\n edit(next);\n if (!shows(d)) setLast(which === \"to\" || months === 1 ? monthOf(d) : addMonths(monthOf(d), months - 1));\n return true;\n };\n const unchanged = sameDay(draft?.from, range?.from) && sameDay(draft?.to ?? draft?.from, range?.to);\n const item = cn(MENU_ITEM, \"cursor-pointer hover:bg-fill-1 focus-ring-inset aria-selected:bg-fill-2\", wide && \"coarse:min-h-40\");\n\n return (\n <Popover.Content padding=\"none\" aria-label={t(\"datePicker.chooseRange\", \"Choose a date range\")} className={cn(!wide && \"w-360 max-w-(--available-width)\")}>\n <div className={cn(\"flex\", !wide && \"flex-col\")}>\n <div\n className={cn(\"shrink-0 gap-2 p-6\", wide ? \"flex min-w-160 flex-col hairline-r\" : \"grid grid-cols-2 hairline-b\")}\n role=\"listbox\"\n aria-label={t(\"datePicker.presets\", \"Presets\")}\n >\n {presets.map((p) => {\n const id = p.id ?? p.label;\n return (\n <button key={id} type=\"button\" role=\"option\" aria-selected={selected === id} className={item} onClick={() => onPick(p.range(), id)}>\n {p.label}\n </button>\n );\n })}\n <button type=\"button\" role=\"option\" aria-selected={selected === null} className={item} onClick={() => setCustom(true)}>\n {t(\"datePicker.custom\", \"Custom\")}\n </button>\n </div>\n <div className={cn(\"flex flex-col p-12\", !wide && \"items-center\")}>\n <Calendar\n mode=\"range\"\n numberOfMonths={months}\n selected={draft}\n month={first}\n onMonthChange={(m) => setLast(addMonths(m, months - 1))}\n onSelect={(r) => edit(r as DateRange | undefined)}\n weekStartsOn={weekStartsOn}\n disabled={disabledDays}\n />\n <div className=\"mt-12 flex items-center gap-8 self-stretch\">\n <IsoField label={t(\"datePicker.startDate\", \"Start date\")} value={draft?.from} onCommit={(d) => typed(\"from\", d)} />\n <span className=\"text-fg-tertiary\" aria-hidden>\n –\n </span>\n <IsoField label={t(\"datePicker.endDate\", \"End date\")} value={draft?.to} onCommit={(d) => typed(\"to\", d)} />\n <Button\n size=\"sm\"\n variant=\"primary\"\n disabled={!draft?.from}\n onClick={() => {\n if (!draft?.from) return;\n if (unchanged && !custom) onClose();\n else onPick({ from: draft.from, to: draft.to ?? draft.from }, null);\n }}\n >\n {t(\"datePicker.apply\", \"Apply\")}\n </Button>\n </div>\n </div>\n </div>\n </Popover.Content>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resize-motion-CMaidkwe.js","names":["focused","a","useRestoreFocus","opener","useRef","wasOpen","open","first","DialogScopeContext","useScopedDialog","scope","use","id","useId","useEffect","settled","useOpenSession","seen","setSeen","useState","px","v","ms","sizeOf","s","box","near","b","viewport","reducedMotion","anchoredList","p","isBody","el","resizeSources","kids","only","c","useResizeMotion","onSettle","sync","useLayoutEffect","size","view","motion","origin","watched","stop","body","play","run","from","to","at","change","running","style","duration","easing","resized","observer","now","gone"],"sources":["../../src/utils/restore-focus.ts","../../src/utils/dialog-scope.ts","../../src/utils/resize-motion.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","import { createContext, use, useEffect, useId, useState } from \"react\";\n\nexport interface DialogScopeTracker {\n showing: (id: string) => void;\n hidden: (id: string) => void;\n}\n\nexport const DialogScopeContext = /* @__PURE__ */ createContext<DialogScopeTracker | null>(null);\n\nexport function useScopedDialog(open: boolean | undefined): (open: boolean) => void {\n const scope = use(DialogScopeContext);\n const id = useId();\n useEffect(() => {\n if (open) scope?.showing(id);\n }, [scope, id, open]);\n useEffect(() => () => scope?.hidden(id), [scope, id]);\n return (settled: boolean) => {\n if (!settled) scope?.hidden(id);\n };\n}\n\nexport function useOpenSession(open: boolean): number {\n const [seen, setSeen] = useState({ open, session: 0 });\n if (seen.open !== open) setSeen({ open, session: open ? seen.session + 1 : seen.session });\n return seen.session;\n}\n","import { useLayoutEffect, useRef } from \"react\";\n\ninterface Size {\n w: number;\n h: number;\n}\n\nconst px = (v: string) => parseFloat(v) || 0;\nconst ms = (v: string) => px(v) * (/\\ds\\s*$/.test(v) ? 1000 : 1);\nconst sizeOf = (box: HTMLElement): Size => {\n const s = getComputedStyle(box);\n return { w: px(s.width), h: px(s.height) };\n};\nconst near = (a: Size, b: Size) => Math.abs(a.h - b.h) < 0.5 && Math.abs(a.w - b.w) < 0.5;\nconst viewport = () => `${window.innerWidth}x${window.innerHeight}`;\nconst reducedMotion = () => !!window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\nconst anchoredList = (box: HTMLElement) =>\n [...document.querySelectorAll(\"[data-side][data-align]\")].some(\n (p) => !box.contains(p) && p.getClientRects().length > 0 && p.querySelector(\"[role=listbox], [role=menu]\"),\n );\nconst isBody = (el: Element) => el.hasAttribute(\"data-dialog-body\");\n\nexport function resizeSources(box: Element): Element[] {\n const kids = [...box.children];\n const only = kids.length === 1 ? kids[0] : undefined;\n if (only && !isBody(only)) return resizeSources(only);\n return kids.flatMap((c) => (isBody(c) ? [...c.children] : [c]));\n}\n\nexport function useResizeMotion(box: HTMLElement | null, onSettle?: (() => void) | undefined) {\n const settled = useRef(onSettle);\n const sync = useRef<(() => void) | null>(null);\n useLayoutEffect(() => {\n settled.current = onSettle;\n sync.current?.();\n });\n useLayoutEffect(() => {\n if (!box || typeof ResizeObserver === \"undefined\") return;\n let size: Size | null = null;\n let view = viewport();\n let motion: Animation | null = null;\n let origin: Size | null = null;\n const watched = new Set<Element>();\n const stop = () => {\n motion?.cancel();\n motion = null;\n box.removeAttribute(\"data-resizing\");\n for (const body of box.querySelectorAll(\"[data-resize-clip]\")) body.removeAttribute(\"data-resize-clip\");\n };\n const play = (from: Size, to: Size, duration: number, easing: string, at: number) => {\n for (const body of box.querySelectorAll<HTMLElement>(\"[data-dialog-body]\"))\n if (body.scrollHeight <= body.clientHeight) body.setAttribute(\"data-resize-clip\", \"\");\n box.setAttribute(\"data-resizing\", \"\");\n const run = box.animate(\n [\n { width: `${from.w}px`, height: `${from.h}px` },\n { width: `${to.w}px`, height: `${to.h}px` },\n ],\n { duration, easing },\n );\n run.currentTime = at;\n motion = run;\n origin = from;\n run.onfinish = () => {\n if (motion !== run) return;\n stop();\n settled.current?.();\n };\n };\n const change = () => {\n const running = motion;\n const at = Number(running?.currentTime ?? 0);\n const from = running ? sizeOf(box) : size;\n stop();\n const to = sizeOf(box);\n const style = getComputedStyle(box);\n const duration = ms(style.getPropertyValue(\"--k-duration-dialog\"));\n const easing = style.getPropertyValue(\"--k-ease-standard\").trim() || \"ease-out\";\n if (running && origin && size && near(to, size)) return play(origin, to, duration, easing, at);\n size = to;\n const resized = view !== (view = viewport());\n if (\n !from ||\n near(from, to) ||\n resized ||\n !duration ||\n reducedMotion() ||\n anchoredList(box) ||\n typeof box.animate !== \"function\" ||\n box.matches(\"[data-ending-style], [data-closed]\")\n ) {\n settled.current?.();\n return;\n }\n play(from, to, duration, easing, 0);\n };\n const observer = new ResizeObserver(change);\n sync.current = () => {\n const now = new Set(resizeSources(box));\n let gone = false;\n for (const el of watched) {\n if (now.has(el)) continue;\n observer.unobserve(el);\n watched.delete(el);\n gone = true;\n }\n for (const el of now) {\n if (watched.has(el)) continue;\n observer.observe(el);\n watched.add(el);\n }\n if (gone || (!motion && size && !near(sizeOf(box), size))) change();\n };\n sync.current();\n return () => {\n sync.current = null;\n observer.disconnect();\n stop();\n };\n }, [box]);\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;;;ACVA,IAAaK,IAAqC,kBAAyC,IAAI;AAE/F,SAAgBC,EAAgB,GAAoD;CAClF,IAAMC,IAAQC,EAAIH,CAAkB,GAC9BI,IAAKC,EAAM;CAKjB,OAJAC,QAAgB;EACd,AAAIR,KAAMI,GAAO,QAAQE,CAAE;CAC7B,GAAG;EAACF;EAAOE;EAAIN;CAAI,CAAC,GACpBQ,cAAsBJ,GAAO,OAAOE,CAAE,GAAG,CAACF,GAAOE,CAAE,CAAC,IAC5C,MAAqB;EAC3B,AAAKG,KAASL,GAAO,OAAOE,CAAE;CAChC;AACF;AAEA,SAAgBI,EAAe,GAAuB;CACpD,IAAM,CAACC,GAAMC,KAAWC,EAAS;EAAE;EAAM,SAAS;CAAE,CAAC;CAErD,OADIF,EAAK,SAASX,KAAMY,EAAQ;EAAE;EAAM,SAASZ,IAAOW,EAAK,UAAU,IAAIA,EAAK;CAAQ,CAAC,GAClFA,EAAK;AACd;;;AClBA,IAAMG,KAAM,MAAc,WAAWC,CAAC,KAAK,GACrCC,KAAM,MAAcF,EAAGC,CAAC,KAAK,UAAU,KAAKA,CAAC,IAAI,MAAO,IACxDE,KAAU,MAA2B;CACzC,IAAMC,IAAI,iBAAiBC,CAAG;CAC9B,OAAO;EAAE,GAAGL,EAAGI,EAAE,KAAK;EAAG,GAAGJ,EAAGI,EAAE,MAAM;CAAE;AAC3C,GACME,KAAQ,GAAS,MAAY,KAAK,IAAIzB,EAAE,IAAI0B,EAAE,CAAC,IAAI,MAAO,KAAK,IAAI1B,EAAE,IAAI0B,EAAE,CAAC,IAAI,IAChFC,UAAiB,GAAG,OAAO,WAAW,GAAG,OAAO,eAChDC,UAAsB,CAAC,CAAC,OAAO,aAAa,kCAAkC,CAAC,CAAC,SAChFC,KAAgB,MACpB,CAAC,GAAG,SAAS,iBAAiB,yBAAyB,CAAC,CAAC,CAAC,MACvD,MAAM,CAACL,EAAI,SAASM,CAAC,KAAKA,EAAE,eAAe,CAAC,CAAC,SAAS,KAAKA,EAAE,cAAc,6BAA6B,CAC3G,GACIC,KAAU,MAAgBC,EAAG,aAAa,kBAAkB;AAElE,SAAgBC,EAAc,GAAyB;CACrD,IAAMC,IAAO,CAAC,GAAGV,EAAI,QAAQ,GACvBW,IAAOD,EAAK,WAAW,IAAIA,EAAK,KAAK,KAAA;CAE3C,OADIC,KAAQ,CAACJ,EAAOI,CAAI,IAAUF,EAAcE,CAAI,IAC7CD,EAAK,SAAS,MAAOH,EAAOK,CAAC,IAAI,CAAC,GAAGA,EAAE,QAAQ,IAAI,CAACA,CAAC,CAAE;AAChE;AAEA,SAAgBC,EAAgB,GAAyB,GAAqC;CAC5F,IAAMvB,IAAUX,EAAOmC,CAAQ,GACzBC,IAAOpC,EAA4B,IAAI;CAK7C,AAJAqC,QAAsB;EAEpB,AADA,EAAQ,UAAUF,GAClBC,EAAK,UAAU;CACjB,CAAC,GACDC,QAAsB;EACpB,IAAI,CAAChB,KAAO,OAAO,iBAAmB,KAAa;EACnD,IAAIiB,IAAoB,MACpBC,IAAOf,EAAS,GAChBgB,IAA2B,MAC3BC,IAAsB,MACpBC,oBAAU,IAAI,IAAa,GAC3BC,UAAa;GAGjB,AAFAH,GAAQ,OAAO,GACf,IAAS,MACTnB,EAAI,gBAAgB,eAAe;GACnC,KAAK,IAAMuB,KAAQvB,EAAI,iBAAiB,oBAAoB,GAAG,EAAK,gBAAgB,kBAAkB;EACxG,GACMwB,KAAQ,GAAY,GAAU,GAAkB,GAAgB,MAAe;GACnF,KAAK,IAAMD,KAAQvB,EAAI,iBAA8B,oBAAoB,GACvE,AAAIuB,EAAK,gBAAgBA,EAAK,gBAAcA,EAAK,aAAa,oBAAoB,EAAE;GACtF,EAAI,aAAa,iBAAiB,EAAE;GACpC,IAAME,IAAMzB,EAAI,QACd,CACE;IAAE,OAAO,GAAG0B,EAAK,EAAE;IAAK,QAAQ,GAAGA,EAAK,EAAE;GAAI,GAC9C;IAAE,OAAO,GAAGC,EAAG,EAAE;IAAK,QAAQ,GAAGA,EAAG,EAAE;GAAI,CAC5C,GACA;IAAE;IAAU;GAAO,CACrB;GAIA,AAHA,EAAI,cAAcC,GAClB,IAASH,GACT,IAASC,GACT,EAAI,iBAAiB;IACnB,AAAIP,MAAWM,MACfH,EAAK,GACLhC,EAAQ,UAAU;GACpB;EACF,GACMuC,UAAe;GACnB,IAAMC,IAAUX,GACVS,IAAK,OAAOE,GAAS,eAAe,CAAC,GACrCJ,IAAOI,IAAUhC,EAAOE,CAAG,IAAIiB;GACrC,EAAK;GACL,IAAMU,IAAK7B,EAAOE,CAAG,GACf+B,IAAQ,iBAAiB/B,CAAG,GAC5BgC,IAAWnC,EAAGkC,EAAM,iBAAiB,qBAAqB,CAAC,GAC3DE,IAASF,EAAM,iBAAiB,mBAAmB,CAAC,CAAC,KAAK,KAAK;GACrE,IAAID,KAAWV,KAAUH,KAAQhB,EAAK0B,GAAIV,CAAI,GAAG,OAAOO,EAAKJ,GAAQO,GAAIK,GAAUC,GAAQL,CAAE;GAC7F,IAAOD;GACP,IAAMO,IAAUhB,OAAU,IAAOf,EAAS;GAC1C,AACE,CAACuB,KACDzB,EAAKyB,GAAMC,CAAE,KACbO,KACA,CAACF,KACD5B,EAAc,KACdC,EAAaL,CAAG,KAChB,OAAOA,EAAI,WAAY,cACvBA,EAAI,QAAQ,oCAAoC,IAEhDV,EAAQ,UAAU,IAGpBkC,EAAKE,GAAMC,GAAIK,GAAUC,GAAQ,CAAC;EACpC,GACME,IAAW,IAAI,eAAeN,CAAM;EAkB1C,OAjBA,EAAK,gBAAgB;GACnB,IAAMO,IAAM,IAAI,IAAI3B,EAAcT,CAAG,CAAC,GAClCqC,IAAO;GACX,KAAK,IAAM7B,KAAMa,GACf,AAAIe,EAAI,IAAI5B,CAAE,MACd2B,EAAS,UAAU3B,CAAE,GACrBa,EAAQ,OAAOb,CAAE,GACjB,IAAO;GAET,KAAK,IAAMA,KAAM4B,GACf,AAAIf,EAAQ,IAAIb,CAAE,MAClB2B,EAAS,QAAQ3B,CAAE,GACnBa,EAAQ,IAAIb,CAAE;GAEhB,CAAI6B,KAAS,CAAClB,KAAUF,KAAQ,CAAChB,EAAKH,EAAOE,CAAG,GAAGiB,CAAI,MAAIY,EAAO;EACpE,GACAd,EAAK,QAAQ,SACA;GAGX,AAFA,EAAK,UAAU,MACfoB,EAAS,WAAW,GACpBb,EAAK;EACP;CACF,GAAG,CAACtB,CAAG,CAAC;AACV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rights-BbiJ0AJB.js","names":["__icon_Alert02Icon","__icon_Tick02Icon","__icon_MinusSignIcon","cn","useUiText","Icon","CheckboxBox","Highlight","Empty","Badge","rightsCascade","byCode","rights","r","dependents","req","out","seen","code","queue","next","linked","granted","c","groupCascade","state","all","group","current","n","g","KAESO_RIGHTS_MATRIX_VARIANTS","KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS","originTexts","t","matches","texts","q","RightsMatrix","ariaLabel","query","setQuery","useState","announcement","setAnnouncement","flashed","setFlashed","flashTimer","useRef","root","baseId","useId","useMemo","groups","names","universal","required","hasOrigins","originText","originLabels","shown","apply","changes","onRightsChange","onChange","first","rest","also","el","ref","target","boxes","i","className","searchable","SearchInput","headingId","gi","grantedCount","changeable","allOn","someOn","readOnly","RightRow","descId","nameId","name","needs","text","Tooltip","Alert02Icon","hasOrigin","s","Tick02Icon","MinusSignIcon","row","onToggle"],"sources":["../../src/components/kaeso/rights-logic.ts","../../src/components/kaeso/rights.tsx"],"sourcesContent":["export interface RightChange {\n code: string;\n granted: boolean;\n}\n\ninterface Node {\n code: string;\n granted: boolean;\n requires?: string[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport function rightsCascade(rights: readonly Node[], code: string, granted: boolean): RightChange[] {\n const byCode = new Map(rights.map((r) => [r.code, r]));\n const dependents = new Map<string, string[]>();\n for (const r of rights) for (const req of r.requires ?? []) dependents.set(req, [...(dependents.get(req) ?? []), r.code]);\n const out: RightChange[] = [{ code, granted }];\n const seen = new Set([code]);\n const queue = [code];\n while (queue.length) {\n const next = queue.shift() as string;\n const linked = granted ? (byCode.get(next)?.requires ?? []) : (dependents.get(next) ?? []);\n for (const c of linked) {\n if (seen.has(c)) continue;\n seen.add(c);\n const r = byCode.get(c);\n if (!r || r.disabled) continue;\n queue.push(c);\n if (r.granted !== granted) out.push({ code: c, granted });\n }\n }\n return out;\n}\n\nexport function groupCascade(all: readonly Node[], group: readonly Node[], granted: boolean): RightChange[] {\n const state = new Map(all.map((r) => [r.code, r.granted]));\n const out = new Map<string, boolean>();\n for (const r of group) {\n if (r.disabled || state.get(r.code) === granted) continue;\n const current = all.map((n) => ({ ...n, granted: out.get(n.code) ?? n.granted }));\n for (const c of rightsCascade(current, r.code, granted)) {\n out.set(c.code, c.granted);\n state.set(c.code, c.granted);\n }\n }\n return [...out].map(([code, g]) => ({ code, granted: g }));\n}\n","import { forwardRef, useEffect, useId, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Alert02Icon as __icon_Alert02Icon, Tick02Icon as __icon_Tick02Icon, MinusSignIcon as __icon_MinusSignIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CheckboxBox } from \"../checkbox/checkbox.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { SearchInput } from \"../input/input.js\";\nimport { Empty } from \"../empty/empty.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Highlight } from \"../combobox/combobox.js\";\nimport { groupCascade, rightsCascade, type RightChange } from \"./rights-logic.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_RIGHTS_MATRIX_VARIANTS = {\n origin: {\n preset: { classes: \"text-fg-tertiary\" },\n added: { classes: \"text-success-text\" },\n removed: { classes: \"text-danger-text\" },\n none: { classes: \"\" },\n },\n mode: {\n edit: { classes: \"\" },\n readOnly: { classes: \"\" },\n },\n} as const;\nexport const KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS = { origin: \"none\", mode: \"edit\" } as const;\n\ntype Origin = keyof typeof KAESO_RIGHTS_MATRIX_VARIANTS.origin;\n\nexport interface RightSource {\n label: string;\n detail?: string | undefined;\n}\n\nexport interface Right {\n code: string;\n label?: string | undefined;\n description: string;\n granted: boolean;\n origin?: Origin | undefined;\n sensitive?: boolean | undefined;\n requires?: string[] | undefined;\n sources?: RightSource[] | undefined;\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n}\n\nexport interface RightsGroup {\n label: string;\n description?: string | undefined;\n rights: Right[];\n}\n\nexport interface RightsMatrixProps {\n groups: RightsGroup[];\n onChange?: ((code: string, granted: boolean) => void) | undefined;\n onRightsChange?: ((changes: RightChange[]) => void) | undefined;\n readOnly?: boolean | undefined;\n searchable?: boolean | undefined;\n originLabels?: Partial<Record<Origin, string>> | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nfunction originTexts(t: UiText): Record<Origin, string> {\n return { preset: t(\"rightsMatrix.fromRole\", \"From role\"), added: t(\"rightsMatrix.added\", \"Added\"), removed: t(\"rightsMatrix.removed\", \"Removed\"), none: \"\" };\n}\n\nconst matches = (q: string, ...texts: (string | undefined)[]) => texts.some((t) => t?.toLowerCase().includes(q));\n\nexport const RightsMatrix = /* @__PURE__ */ forwardRef<HTMLDivElement, RightsMatrixProps>(function RightsMatrix(\n { groups, onChange, onRightsChange, readOnly, searchable, originLabels, \"aria-label\": ariaLabel, className },\n ref,\n) {\n const t = useUiText();\n const [query, setQuery] = useState(\"\");\n const [announcement, setAnnouncement] = useState(\"\");\n const [flashed, setFlashed] = useState<ReadonlySet<string>>(() => new Set());\n const flashTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(flashTimer.current), []);\n const root = useRef<HTMLDivElement | null>(null);\n const baseId = useId();\n const all = useMemo(() => groups.flatMap((g) => g.rights), [groups]);\n const names = useMemo(() => new Map(all.map((r) => [r.code, r.label ?? r.code])), [all]);\n const universal = useMemo(() => {\n if (all.length < 3) return new Set<string>();\n const required = new Set(all.flatMap((r) => r.requires ?? []));\n return new Set([...required].filter((c) => all.every((r) => r.code === c || r.requires?.includes(c))));\n }, [all]);\n const hasOrigins = all.some((r) => r.origin !== undefined);\n const originText = { ...originTexts(t), ...originLabels };\n const q = query.trim().toLowerCase();\n const shown = groups\n .map((g) => (!q || matches(q, g.label) ? g : { ...g, rights: g.rights.filter((r) => matches(q, r.label, r.code, r.description)) }))\n .filter((g) => g.rights.length > 0);\n\n const apply = (changes: RightChange[]) => {\n if (!changes.length) return;\n if (onRightsChange) onRightsChange(changes);\n else if (onChange) for (const c of changes) onChange(c.code, c.granted);\n const [first, ...rest] = changes;\n const also = rest.map((c) => names.get(c.code) ?? c.code);\n setAnnouncement(\n also.length && first\n ? first.granted\n ? t(\"rightsMatrix.alsoGranted\", \"Also granted {rights}\", { rights: also.join(t(\"rightsMatrix.listSeparator\", \", \")) })\n : t(\"rightsMatrix.alsoRemoved\", \"Also removed {rights}\", { rights: also.join(t(\"rightsMatrix.listSeparator\", \", \")) })\n : \"\",\n );\n clearTimeout(flashTimer.current);\n setFlashed(new Set(rest.map((c) => c.code)));\n if (rest.length) flashTimer.current = setTimeout(() => setFlashed(new Set()), 1200);\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (target.getAttribute(\"role\") !== \"checkbox\" || !root.current) return;\n const boxes = [...root.current.querySelectorAll<HTMLElement>('[role=\"checkbox\"]')];\n const i = boxes.indexOf(target);\n const next =\n e.key === \"ArrowDown\"\n ? boxes[i + 1]\n : e.key === \"ArrowUp\"\n ? boxes[i - 1]\n : e.key === \"Home\"\n ? boxes[0]\n : e.key === \"End\"\n ? boxes[boxes.length - 1]\n : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n };\n\n return (\n <div\n ref={(el) => {\n root.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n role=\"group\"\n aria-label={ariaLabel ?? t(\"rightsMatrix.rights\", \"Rights\")}\n onKeyDown={onKeyDown}\n className={cn(\"@container flex min-w-0 flex-col gap-24\", className)}\n >\n {searchable && (\n <SearchInput\n className=\"w-full\"\n aria-label={t(\"rightsMatrix.searchRights\", \"Search rights\")}\n placeholder={t(\"rightsMatrix.searchRights\", \"Search rights\")}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onClear={() => setQuery(\"\")}\n />\n )}\n {shown.length === 0 && (\n <Empty\n size=\"compact\"\n title={t(\"rightsMatrix.noMatch\", \"No rights match\")}\n description={t(\"rightsMatrix.noMatchHint\", \"Try a right's name, its code, or a word from its description.\")}\n />\n )}\n {shown.map((g, gi) => {\n const headingId = `${baseId}-g${gi}`;\n const grantedCount = g.rights.filter((r) => r.granted).length;\n const changeable = g.rights.filter((r) => !r.disabled);\n const allOn = changeable.length > 0 && changeable.every((r) => r.granted);\n const someOn = changeable.some((r) => r.granted);\n return (\n <section key={g.label} aria-labelledby={headingId} className=\"flex min-w-0 flex-col\">\n <div className=\"flex items-start gap-12 pb-4\">\n {!readOnly && (\n <span className=\"flex h-20 items-center\">\n <CheckboxBox\n aria-label={\n q\n ? t(\"rightsMatrix.everyRightShownIn\", \"Every right shown in {group}\", { group: g.label })\n : t(\"rightsMatrix.everyRightIn\", \"Every right in {group}\", { group: g.label })\n }\n checked={allOn}\n indeterminate={someOn && !allOn}\n disabled={changeable.length === 0}\n onCheckedChange={() => apply(groupCascade(all, g.rights, !allOn))}\n />\n </span>\n )}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"flex items-baseline justify-between gap-12\">\n <span id={headingId} className=\"min-w-0 wrap-break-word text-body font-semibold text-fg\">\n {g.label}\n </span>\n <span className=\"shrink-0 text-small text-fg-tertiary tabular\">\n {t(\"rightsMatrix.grantedOfTotal\", \"{granted} of {total}\", { granted: grantedCount, total: g.rights.length })}\n </span>\n </span>\n {g.description && <span className=\"text-small text-fg-secondary text-pretty\">{g.description}</span>}\n </span>\n </div>\n {g.rights.map((r) => (\n <RightRow\n key={r.code}\n right={r}\n readOnly={!!readOnly}\n query={q}\n hasOrigin={hasOrigins}\n originText={originText}\n names={names}\n universal={universal}\n flashed={flashed.has(r.code)}\n onToggle={(granted) => apply(rightsCascade(all, r.code, granted))}\n />\n ))}\n </section>\n );\n })}\n <span aria-live=\"polite\" className=\"sr-only\">\n {announcement}\n </span>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RightsMatrix.displayName = \"RightsMatrix\";\n\nfunction RightRow({\n right: r,\n readOnly,\n query,\n hasOrigin,\n originText,\n names,\n universal,\n flashed,\n onToggle,\n}: {\n right: Right;\n readOnly: boolean;\n query: string;\n hasOrigin: boolean;\n originText: Record<Origin, string>;\n names: Map<string, string>;\n universal: ReadonlySet<string>;\n flashed: boolean;\n onToggle: (granted: boolean) => void;\n}) {\n const t = useUiText();\n const descId = useId();\n const nameId = useId();\n const name = r.label ?? r.code;\n const needs = readOnly ? [] : (r.requires ?? []).filter((c) => !universal.has(c)).map((c) => names.get(c) ?? c);\n const text: ReactNode = (\n <span className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <span className=\"flex min-w-0 items-start gap-8\">\n <span\n id={nameId}\n className={cn(\n \"min-w-0 wrap-break-word\",\n r.label ? \"text-body font-medium\" : \"mono text-small\",\n readOnly && !r.granted ? \"text-fg-tertiary\" : \"text-fg\",\n )}\n >\n <Highlight text={name} query={query} />\n </span>\n {r.label && (\n <span className=\"hidden h-20 min-w-0 items-center @auth:flex\">\n <span className=\"min-w-0 truncate mono text-caption text-fg-tertiary\">{r.code}</span>\n </span>\n )}\n {r.sensitive && (\n <span className={cn(\"flex shrink-0 items-center\", r.label ? \"h-20\" : \"h-18\")}>\n <Tooltip content={t(\"rightsMatrix.sensitiveHint\", \"Sensitive: exposes data or is hard to undo\")}>\n <span tabIndex={0} className=\"inline-flex shrink-0 rounded-pill text-warning-text focus-ring\">\n <Icon icon={__icon_Alert02Icon} size=\"sm\" label={t(\"rightsMatrix.sensitive\", \"Sensitive\")} />\n </span>\n </Tooltip>\n </span>\n )}\n {hasOrigin && !readOnly && (\n <span\n className={cn(\n \"ml-auto flex w-80 shrink-0 items-center justify-end text-right text-small\",\n r.label ? \"h-20\" : \"h-18\",\n KAESO_RIGHTS_MATRIX_VARIANTS.origin[r.origin ?? \"none\"].classes,\n )}\n >\n {originText[r.origin ?? \"none\"]}\n </span>\n )}\n </span>\n <span id={descId} className={cn(\"text-small text-pretty\", readOnly && !r.granted ? \"text-fg-tertiary\" : \"text-fg-secondary\")}>\n {r.description}\n </span>\n {needs.length > 0 && (\n <span className=\"text-caption text-fg-tertiary\">\n {t(\"rightsMatrix.needs\", \"Needs {rights}\", { rights: needs.join(t(\"rightsMatrix.listSeparator\", \", \")) })}\n </span>\n )}\n {readOnly && r.granted && !!r.sources?.length && (\n <span className=\"flex flex-wrap gap-4 pt-4\">\n {r.sources.map((s) =>\n s.detail ? (\n <Tooltip key={s.label} content={s.detail}>\n <Badge tabIndex={0} className=\"focus-ring\">\n {s.label}\n </Badge>\n </Tooltip>\n ) : (\n <Badge key={s.label}>{s.label}</Badge>\n ),\n )}\n </span>\n )}\n </span>\n );\n\n if (readOnly) {\n return (\n <div className=\"-mx-8 flex min-h-52 items-start gap-12 px-8 py-8\">\n <span className=\"flex h-20 w-18 shrink-0 items-center justify-center\">\n <Icon\n icon={r.granted ? __icon_Tick02Icon : __icon_MinusSignIcon}\n size=\"sm\"\n className={r.granted ? \"text-fg\" : \"text-fg-disabled\"}\n label={r.granted ? t(\"rightsMatrix.granted\", \"Granted\") : t(\"rightsMatrix.notGranted\", \"Not granted\")}\n />\n </span>\n {text}\n </div>\n );\n }\n\n const row = (\n <label\n className={cn(\n \"-mx-8 flex min-h-52 cursor-pointer items-start gap-12 rounded-item px-8 py-8 transition-control hover:bg-fill-1\",\n flashed && \"bg-fill-2 hover:bg-fill-2\",\n r.disabled && \"cursor-not-allowed\",\n )}\n >\n <span className=\"flex h-20 items-center\">\n <CheckboxBox checked={r.granted} disabled={r.disabled} onCheckedChange={onToggle} aria-labelledby={nameId} aria-describedby={descId} />\n </span>\n {text}\n </label>\n );\n return r.disabled && r.disabledReason ? <Tooltip content={r.disabledReason}>{row}</Tooltip> : row;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-Bc4kRiSG.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","CSPProvider","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 { CSPProvider } from \"@base-ui/react/csp-provider\";\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 <CSPProvider disableStyleElements>\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 </CSPProvider>\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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-5IA18LuP.js","names":["_Fragment","__icon_UnfoldMoreIcon","__icon_ArrowLeft01Icon","__icon_SidebarLeftIcon","cn","useLinkComponent","useUiText","Icon","HandedTrigger","useLazyModule","Tooltip","lazyModule","observeResize","NavWordmark","Skeleton","whenIdle","Fragment$1","listeners","memory","read","raw","key","subscribe","set","onChange","onStorage","e","noSubscription","nothing","useStoredState","k","own","setOwn","useState","initial","sub","useCallback","snapshot","useSyncExternalStore","stored","useMemo","v","json","notify","strong","text","i","part","KAESO_SIDEBAR_VARIANTS","KAESO_SIDEBAR_DEFAULT_VARIANTS","Ctx","useSidebar","useContext","SidebarFloatingContext","SidebarSheetContext","Provider","rail","setRail","storageKey","defaultRail","storedWidth","setWidth","width","clampWidth","collapsed","setCollapsedState","peeking","setPeeking","setCollapsed","leaving","shortcut","onKey","value","SIDEBAR_MIN","SIDEBAR_MAX","Root","ariaLabel","props","t","hint","setHint","dragging","setDragging","endDrag","useRef","onPointerDown","handle","startX","startW","moved","move","ev","end","up","floating","hidden","nav","className","style","resizable","Header","Brand","BrandWordmark","children","LinkComp","href","label","sidebarMenu","LazyMenu","open","setOpen","wanted","setWanted","mod","store","triggerPropsStore","button","pending","useEffect","doc","onKeyDown","want","waiting","o","trigger","Switcher","force","captionId","useId","hasCaption","caption","avatar","captionTone","trailing","UnfoldMoreIcon","Place","classes","inner","PlaceName","common","el","ref","cut","setCut","useLayoutEffect","box","measure","Content","Footer","Group","id","defaultOpen","collapsible","Collapsible","DEPTH","Item","active","depth","leading","icon","count","onClick","BackLink","ArrowLeft01Icon","Loading","rows","CollapseToggle","sheet","SidebarLeftIcon","RailToggle","Sidebar"],"sources":["../../src/hooks/use-stored-state.ts","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import { useCallback, useMemo, useState, useSyncExternalStore } from \"react\";\n\nlet listeners: Map<string, Set<() => void>> | undefined;\nlet memory: Map<string, string> | undefined;\n\nfunction read(key: string): string | null {\n try {\n const raw = localStorage.getItem(key);\n if (raw !== null) return raw;\n } catch {}\n return memory?.get(key) ?? null;\n}\n\nfunction subscribe(key: string, onChange: () => void): () => void {\n listeners ??= new Map();\n let set = listeners.get(key);\n if (!set) listeners.set(key, (set = new Set()));\n set.add(onChange);\n const onStorage = (e: StorageEvent) => {\n if (e.key === key) onChange();\n };\n window.addEventListener(\"storage\", onStorage);\n return () => {\n set.delete(onChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\nconst noSubscription = () => () => undefined;\nconst nothing = () => null;\n\nexport function useStoredState<T>(key: string | undefined, initial: T): [T, (v: T) => void] {\n const k = key ? `kaeso:${key}` : undefined;\n const [own, setOwn] = useState<T>(initial);\n const sub = useCallback((onChange: () => void) => (k ? subscribe(k, onChange) : () => undefined), [k]);\n const snapshot = useCallback(() => (k ? read(k) : null), [k]);\n const raw = useSyncExternalStore(k ? sub : noSubscription, snapshot, nothing);\n const stored = useMemo(() => {\n if (raw === null) return undefined;\n try {\n return { value: JSON.parse(raw) as T };\n } catch {\n return undefined;\n }\n }, [raw]);\n const set = useCallback(\n (v: T) => {\n if (!k) {\n setOwn(v);\n return;\n }\n const json = JSON.stringify(v);\n try {\n localStorage.setItem(k, json);\n } catch {\n (memory ??= new Map()).set(k, json);\n }\n listeners?.get(k)?.forEach((notify) => notify());\n },\n [k],\n );\n return [k ? (stored ? stored.value : initial) : own, set];\n}\n","import type * as React from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useLinkComponent } from \"../../utils/link-provider.js\";\nimport { useStoredState } from \"../../hooks/use-stored-state.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { UnfoldMoreIcon as __icon_UnfoldMoreIcon, ArrowLeft01Icon as __icon_ArrowLeft01Icon, SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { HandedTrigger, triggerPropsStore } from \"../tooltip/trigger-props.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst strong = (text: string) =>\n text.split(\"**\").map((part, i) =>\n i % 2 ? (\n <span key={i} className=\"font-semibold text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n );\n\nexport const KAESO_SIDEBAR_VARIANTS = {\n mode: {\n expanded: { classes: \"w-(--k-sidebar-width)\" },\n rail: { classes: \"w-60\" },\n },\n item: {\n default: { classes: \"text-fg hover:bg-fill-2 active:bg-fill-3\" },\n active: { classes: \"bg-fill-3 text-fg\" },\n },\n caption: {\n secondary: { classes: \"text-fg-secondary\" },\n danger: { classes: \"text-danger-text\" },\n },\n} as const;\nexport const KAESO_SIDEBAR_DEFAULT_VARIANTS = { mode: \"expanded\", item: \"default\", caption: \"secondary\" } as const;\n\ninterface SidebarCtx {\n rail: boolean;\n setRail: (v: boolean) => void;\n collapsed: boolean;\n setCollapsed: (v: boolean) => void;\n peeking: boolean;\n setPeeking: (v: boolean) => void;\n width: number;\n setWidth: (v: number) => void;\n storageKey: string | undefined;\n}\nconst Ctx = /* @__PURE__ */ createContext<SidebarCtx>({\n rail: false,\n setRail: () => undefined,\n collapsed: false,\n setCollapsed: () => undefined,\n peeking: false,\n setPeeking: () => undefined,\n width: 248,\n setWidth: () => undefined,\n storageKey: undefined,\n});\nexport const useSidebar = () => useContext(Ctx);\n\nexport const SidebarFloatingContext = /* @__PURE__ */ createContext(false);\nexport const SidebarSheetContext = /* @__PURE__ */ createContext<{ close: () => void; peek: boolean } | null>(null);\n\nexport interface SidebarProviderProps {\n children: ReactNode;\n storageKey?: string | undefined;\n defaultRail?: boolean | undefined;\n shortcut?: boolean | undefined;\n}\n\nfunction Provider({ children, storageKey, defaultRail = false, shortcut = true }: SidebarProviderProps) {\n const [rail, setRail] = useStoredState(storageKey ? `${storageKey}:rail` : undefined, defaultRail);\n const [storedWidth, setWidth] = useStoredState(storageKey ? `${storageKey}:width` : undefined, 248);\n const width = clampWidth(storedWidth);\n const [collapsed, setCollapsedState] = useStoredState(storageKey ? `${storageKey}:collapsed` : undefined, false);\n const [peeking, setPeeking] = useState(false);\n const setCollapsed = useCallback(\n (v: boolean) => {\n const leaving = v && !!document.activeElement?.closest(\"[data-sidebar-root]\");\n setCollapsedState(v);\n setPeeking(false);\n if (leaving) requestAnimationFrame(() => document.querySelector<HTMLElement>(\"[data-sidebar-expand]\")?.focus());\n },\n [setCollapsedState],\n );\n useEffect(() => {\n if (!shortcut) return;\n const onKey = (e: KeyboardEvent) => {\n const t = e.target;\n if (e.key !== \"[\" || e.metaKey || e.ctrlKey || e.altKey || (t instanceof Element && t.closest(\"input, textarea, select, [contenteditable=true]\"))) return;\n setCollapsed(!collapsed);\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [collapsed, setCollapsed, shortcut]);\n const value = useMemo(\n () => ({ rail, setRail, collapsed, setCollapsed, peeking, setPeeking, width, setWidth, storageKey }),\n [rail, setRail, collapsed, setCollapsed, peeking, width, setWidth, storageKey],\n );\n return <Ctx.Provider value={value}>{children}</Ctx.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") Provider.displayName = \"Sidebar.Provider\";\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n resizable?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n}\n\nexport const SIDEBAR_MIN = 232;\nexport const SIDEBAR_MAX = 280;\n\nconst clampWidth = (v: number) => Math.round(Math.min(SIDEBAR_MAX, Math.max(SIDEBAR_MIN, Number.isFinite(v) ? v : 248)));\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLElement, SidebarProps>(function Sidebar({ resizable = true, className, children, style, \"aria-label\": ariaLabel, ...props }, ref) {\n const { rail, width, setWidth, collapsed, setCollapsed } = useSidebar();\n const t = useUiText();\n const [hint, setHint] = useState<number | null>(null);\n const [dragging, setDragging] = useState(false);\n const endDrag = useRef<(() => void) | null>(null);\n useEffect(() => () => endDrag.current?.(), []);\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n e.preventDefault();\n endDrag.current?.();\n const handle = e.currentTarget;\n const startX = e.clientX;\n const startW = width;\n let moved = false;\n const move = (ev: PointerEvent) => {\n if (Math.abs(ev.clientX - startX) > 3) {\n moved = true;\n setDragging(true);\n }\n if (moved) setWidth(clampWidth(startW + ev.clientX - startX));\n };\n const end = () => {\n handle.removeEventListener(\"pointermove\", move);\n handle.removeEventListener(\"pointerup\", up);\n handle.removeEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n endDrag.current = null;\n setDragging(false);\n };\n const up = () => {\n end();\n if (!moved) setCollapsed(true);\n };\n handle.setPointerCapture(e.pointerId);\n handle.addEventListener(\"pointermove\", move);\n handle.addEventListener(\"pointerup\", up);\n handle.addEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n endDrag.current = end;\n },\n [width, setWidth, setCollapsed],\n );\n const floating = useContext(SidebarFloatingContext);\n const hidden = collapsed && !floating;\n const nav = (\n <nav\n ref={ref}\n aria-label={ariaLabel ?? t(\"sidebar.main\", \"Main\")}\n data-rail={rail || undefined}\n data-sidebar-root=\"\"\n className={cn(\n \"group/sidebar relative flex h-full shrink-0 flex-col bg-chrome text-fg\",\n rail ? KAESO_SIDEBAR_VARIANTS.mode.rail.classes : KAESO_SIDEBAR_VARIANTS.mode.expanded.classes,\n className,\n )}\n style={{ [\"--k-sidebar-width\" as string]: `${width}px`, ...style }}\n {...props}\n >\n {children}\n </nav>\n );\n if (floating) return nav;\n return (\n <div className=\"relative flex h-full shrink-0\">\n <div\n className=\"sidebar-motion relative h-full shrink-0\"\n style={{ width: hidden ? 8 : rail ? 60 : width }}\n {...(hidden ? { \"data-collapsed\": \"\", inert: true, \"aria-hidden\": true } : {})}\n >\n <div className=\"sidebar-content-motion h-full\" style={{ width: rail ? 60 : width }}>\n {nav}\n </div>\n </div>\n {resizable && !rail && !hidden && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"sidebar.resizeOrCollapse\", \"Resize sidebar; click to collapse\")}\n aria-valuemin={SIDEBAR_MIN}\n aria-valuemax={SIDEBAR_MAX}\n aria-valuenow={width}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onPointerMove={(e) => setHint(Math.round(e.clientY - e.currentTarget.getBoundingClientRect().top))}\n onPointerLeave={() => setHint(null)}\n onKeyDown={(e) => {\n if (e.key === \"ArrowLeft\") setWidth(clampWidth(width - 8));\n if (e.key === \"ArrowRight\") setWidth(clampWidth(width + 8));\n if (e.key === \"Enter\" || e.key === \" \") setCollapsed(true);\n }}\n className=\"absolute top-0 right-0 z-10 h-full w-8 cursor-col-resize rounded-pill focus-ring-inset\"\n >\n {hint !== null && !dragging && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute left-16 flex w-max flex-col gap-2 rounded-tooltip bg-tooltip px-12 py-8 text-small text-fg-secondary shadow-raised\"\n style={{ top: Math.max(8, (hint ?? 0) - 24) }}\n >\n <span>{strong(t(\"sidebar.dragToResize\", \"**Drag** to resize\"))}</span>\n <span>{strong(t(\"sidebar.clickToCollapse\", \"**Click** to collapse\"))}</span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Sidebar\";\n\nconst Header = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarHeader({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"mt-8 flex h-52 shrink-0 items-center gap-4 px-8\", className)} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Header.displayName = \"Sidebar.Header\";\n\nexport interface SidebarBrandProps {\n href?: string | undefined;\n label?: string | undefined;\n children?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Brand = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarBrandProps>(function SidebarBrand({ href, label = \"Kaeso\", children, className }, ref) {\n const { rail } = useSidebar();\n if (rail) {\n return (\n <Header ref={ref} className={cn(\"justify-center px-0\", className)}>\n {children}\n </Header>\n );\n }\n return (\n <Header ref={ref} className={cn(\"justify-between pr-8 pl-28\", className)}>\n <BrandWordmark href={href} label={label} />\n {children && <span className=\"flex items-center\">{children}</span>}\n </Header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Brand.displayName = \"Sidebar.Brand\";\n\nexport function BrandWordmark({ href, label = \"Kaeso\" }: { href?: string | undefined; label?: string | undefined }) {\n const LinkComp = useLinkComponent();\n return href ? (\n <LinkComp href={href} aria-label={label} className=\"-mx-4 flex h-32 items-center rounded-code px-4 text-fg focus-ring\">\n <NavWordmark decorative />\n </LinkComp>\n ) : (\n <NavWordmark title={label} className=\"text-fg\" />\n );\n}\nif (process.env.NODE_ENV !== \"production\") BrandWordmark.displayName = \"Sidebar.BrandWordmark\";\n\nconst sidebarMenu = /* @__PURE__ */ lazyModule(() => import(\"./sidebar-menu.js\"), { base: () => import.meta.url });\n\nfunction LazyMenu({\n trigger,\n side,\n header,\n footer,\n children,\n}: {\n trigger: ReactElement;\n side: \"top\" | \"bottom\";\n header: ReactNode;\n footer: ReactNode;\n children: ReactNode;\n}) {\n const [open, setOpen] = useState(false);\n const [wanted, setWanted] = useState(false);\n const mod = useLazyModule(sidebarMenu, wanted || open, () => {\n setWanted(false);\n setOpen(false);\n });\n const [store] = useState(triggerPropsStore);\n const button = useRef<HTMLElement | null>(null);\n const pending = open && !mod;\n useEffect(() => whenIdle(() => setWanted(true)), []);\n useEffect(() => {\n if (!pending) return;\n const doc = button.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n setOpen(false);\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!button.current?.contains(e.target as Node)) setOpen(false);\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending]);\n const want = () => setWanted(true);\n const waiting = mod\n ? { ref: button }\n : {\n ref: button,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n ...(open ? { \"data-popup-open\": \"\" } : {}),\n onPointerEnter: want,\n onFocus: want,\n onClick: () => setOpen((o) => !o),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key !== \"ArrowDown\" && e.key !== \"ArrowUp\") return;\n e.preventDefault();\n setOpen(true);\n },\n onBlur: (e: React.FocusEvent) => {\n if (open && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget)) setOpen(false);\n },\n };\n return (\n <>\n <HandedTrigger store={store} merge={mod?.mergeTriggerProps} extra={waiting}>\n {trigger}\n </HandedTrigger>\n {mod && (\n <mod.SidebarMenuRoot open={open} onOpenChange={setOpen} triggerProps={store} side={side} header={header} footer={footer}>\n {children}\n </mod.SidebarMenuRoot>\n )}\n </>\n );\n}\nif (process.env.NODE_ENV !== \"production\") LazyMenu.displayName = \"Sidebar.Menu\";\n\nexport interface SidebarSwitcherProps {\n avatar: ReactNode;\n label: ReactNode;\n trailing?: ReactNode | undefined;\n caption?: ReactNode | undefined;\n captionTone?: keyof typeof KAESO_SIDEBAR_VARIANTS.caption | undefined;\n children: ReactNode;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nfunction Switcher({\n avatar,\n label,\n trailing,\n caption,\n captionTone = \"secondary\",\n children,\n header,\n footer,\n \"aria-label\": ariaLabel,\n className,\n \"data-force\": force,\n}: SidebarSwitcherProps) {\n const { rail } = useSidebar();\n const t = useUiText();\n const captionId = useId();\n const hasCaption = caption !== undefined && caption !== null && caption !== false && caption !== \"\";\n return (\n <LazyMenu\n side=\"top\"\n header={header}\n footer={footer}\n trigger={\n <button\n type=\"button\"\n aria-label={ariaLabel ?? (typeof label === \"string\" ? t(\"sidebar.switchOrOpenSettings\", \"{label}: switch or open settings\", { label }) : undefined)}\n {...(hasCaption ? { \"aria-describedby\": captionId } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/sw flex h-36 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium text-fg transition-control hover:bg-fill-2 open:bg-fill-3 focus-ring-inset\",\n rail && \"justify-center px-0\",\n className,\n )}\n >\n {avatar}\n {!rail &&\n (hasCaption ? (\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{label}</span>\n <span id={captionId} className={cn(\"truncate text-caption font-regular\", KAESO_SIDEBAR_VARIANTS.caption[captionTone].classes)}>\n {caption}\n </span>\n </span>\n ) : (\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n ))}\n {rail && hasCaption && (\n <span id={captionId} className=\"sr-only\">\n {caption}\n </span>\n )}\n {!rail && trailing}\n {!rail && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/sw:text-fg-secondary\" />}\n </button>\n }\n >\n {children}\n </LazyMenu>\n );\n}\nif (process.env.NODE_ENV !== \"production\") Switcher.displayName = \"Sidebar.Switcher\";\n\nexport interface SidebarPlaceProps {\n avatar: ReactNode;\n label: string;\n children?: ReactNode | undefined;\n href?: string | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nfunction Place({ avatar, label, children, href, header, footer, \"aria-label\": ariaLabel, className, \"data-force\": force }: SidebarPlaceProps) {\n const { rail } = useSidebar();\n const t = useUiText();\n const LinkComp = useLinkComponent();\n const classes = cn(\n \"group/place flex h-36 w-full min-w-0 items-center gap-8 rounded-pill px-12 text-left text-body font-semibold text-fg\",\n (children || href) && \"cursor-pointer transition-control hover:bg-fill-2 open:bg-fill-3 focus-ring-inset\",\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{avatar}</span>\n {rail ? <span className=\"sr-only\">{label}</span> : <PlaceName label={label} />}\n {!rail && children && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/place:text-fg-secondary\" />}\n </>\n );\n const common = { className: classes, ...(force ? { \"data-force\": force } : {}) };\n if (children) {\n return (\n <LazyMenu\n side=\"bottom\"\n header={header}\n footer={footer}\n trigger={\n <button type=\"button\" aria-label={ariaLabel ?? t(\"sidebar.switchPlace\", \"{label}: switch\", { label })} {...common}>\n {inner}\n </button>\n }\n >\n {children}\n </LazyMenu>\n );\n }\n const el = href ? (\n <LinkComp href={href} {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})} {...common}>\n {inner}\n </LinkComp>\n ) : (\n <div {...common}>{inner}</div>\n );\n return rail ? (\n <Tooltip content={label} side=\"right\">\n {el}\n </Tooltip>\n ) : (\n el\n );\n}\nif (process.env.NODE_ENV !== \"production\") Place.displayName = \"Sidebar.Place\";\n\nfunction PlaceName({ label }: { label: string }) {\n const ref = useRef<HTMLSpanElement>(null);\n const [cut, setCut] = useState(false);\n useLayoutEffect(() => {\n const box = ref.current;\n if (!box || typeof ResizeObserver === \"undefined\") return;\n const measure = () => setCut(box.scrollWidth > box.clientWidth);\n measure();\n return observeResize([box], measure);\n }, [label]);\n return (\n <Tooltip content={label} side=\"right\" disabled={!cut}>\n <span ref={ref} className=\"min-w-0 flex-1 truncate\">\n {label}\n </span>\n </Tooltip>\n );\n}\n\nconst Content = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarContent({ className, ...props }, ref) {\n const { rail } = useSidebar();\n return (\n <div\n ref={ref}\n className={cn(\"flex min-h-0 flex-1 flex-col gap-16 overflow-y-auto overscroll-contain pt-8 pb-16 scrollbar-quiet\", rail ? \"px-8\" : \"px-16\", className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Content.displayName = \"Sidebar.Content\";\n\nconst Footer = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarFooter({ className, ...props }, ref) {\n const { rail } = useSidebar();\n return <div ref={ref} className={cn(\"flex shrink-0 items-center gap-4 pt-8 pb-12\", rail ? \"px-8\" : \"px-16\", className)} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Footer.displayName = \"Sidebar.Footer\";\n\nexport interface SidebarGroupProps {\n label?: ReactNode | undefined;\n id?: string | undefined;\n defaultOpen?: boolean | undefined;\n collapsible?: boolean | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nconst Group = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarGroupProps>(function SidebarGroup(\n { label, id, defaultOpen = true, collapsible = true, children, className },\n ref,\n) {\n const { storageKey, rail } = useSidebar();\n const [open, setOpen] = useStoredState(storageKey && id ? `${storageKey}:group:${id}` : undefined, defaultOpen);\n if (!label || !collapsible || rail) {\n return (\n <div ref={ref} role=\"group\" className={cn(\"flex flex-col\", className)}>\n {label && !rail && <div className=\"flex h-28 items-center px-12 text-caption font-medium text-fg-secondary\">{label}</div>}\n <ul className=\"flex flex-col gap-2\">{children}</ul>\n </div>\n );\n }\n return (\n <Collapsible.Root ref={ref} open={open} onOpenChange={(o: boolean) => setOpen(o)} className={cn(\"flex flex-col\", className)}>\n <Collapsible.Trigger className=\"group/gl relative -mx-0 flex h-28 w-full cursor-pointer items-center gap-4 rounded-pill px-12 text-left text-caption font-medium text-fg-secondary transition-control hover:text-fg focus-ring tap-target\">\n <span>{label}</span>\n <svg viewBox=\"0 0 8 8\" className=\"size-8 text-fg-tertiary transition-transform duration-180 group-data-panel-open/gl:rotate-90\" aria-hidden>\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </Collapsible.Trigger>\n <Collapsible.Panel className=\"collapse-motion\">\n <ul className=\"flex flex-col gap-2 pt-2\">{children}</ul>\n </Collapsible.Panel>\n </Collapsible.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Group.displayName = \"Sidebar.Group\";\n\nexport interface SidebarItemProps {\n children: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n href?: string | undefined;\n onClick?: ((e: MouseEvent<HTMLElement>) => void) | undefined;\n active?: boolean | undefined;\n count?: number | undefined;\n trailing?: ReactNode | undefined;\n depth?: 0 | 1 | 2 | undefined;\n shortcut?: string[] | string[][] | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst DEPTH = [\"\", \"pl-32\", \"pl-52\"] as const;\n\nconst Item = /* @__PURE__ */ forwardRef<HTMLElement, SidebarItemProps>(function SidebarItem(\n { children, icon, leading, href, onClick, active, count, trailing, depth = 0, shortcut, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const LinkComp = useLinkComponent();\n const classes = cn(\n \"group/si flex h-32 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium transition-control focus-ring-inset\",\n active ? KAESO_SIDEBAR_VARIANTS.item.active.classes : KAESO_SIDEBAR_VARIANTS.item.default.classes,\n !rail && DEPTH[depth],\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n {leading ? (\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{leading}</span>\n ) : (\n icon && <Icon icon={icon} size=\"md\" className={cn(\"text-fg-secondary transition-control group-hover/si:text-fg\", active && \"text-fg\")} />\n )}\n {!rail && <span className=\"min-w-0 flex-1 truncate\">{children}</span>}\n {!rail && count !== undefined && <span className={cn(\"text-caption font-medium tabular\", active ? \"text-fg\" : \"text-fg-tertiary\")}>{count}</span>}\n {!rail && trailing}\n </>\n );\n const common = {\n className: classes,\n ...(active ? { \"aria-current\": \"page\" as const } : {}),\n ...(force ? { \"data-force\": force } : {}),\n ...(rail && typeof children === \"string\" ? { \"aria-label\": children } : {}),\n };\n const el = href ? (\n <LinkComp ref={ref as React.Ref<HTMLAnchorElement>} href={href} {...common} {...(onClick ? { onClick } : {})}>\n {inner}\n </LinkComp>\n ) : (\n <button ref={ref as React.Ref<HTMLButtonElement>} type=\"button\" {...common} {...(onClick ? { onClick } : {})}>\n {inner}\n </button>\n );\n return (\n <li className=\"flex\">\n {rail ? (\n <Tooltip content={children} side=\"right\" {...(shortcut ? { shortcut } : {})}>\n {el}\n </Tooltip>\n ) : (\n el\n )}\n </li>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Item.displayName = \"Sidebar.Item\";\n\nconst BackLink = /* @__PURE__ */ forwardRef<HTMLAnchorElement, { href: string; children?: ReactNode | undefined; className?: string | undefined }>(function SidebarBackLink(\n { href, children, className },\n ref,\n) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"flex h-32 items-center gap-8 rounded-pill px-12 text-body font-medium text-fg-secondary transition-control hover:bg-fill-2 hover:text-fg focus-ring-inset\",\n className,\n )}\n >\n <Icon icon={__icon_ArrowLeft01Icon} size=\"md\" />\n {children ?? t(\"sidebar.backToApp\", \"Back to app\")}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") BackLink.displayName = \"Sidebar.BackLink\";\n\nfunction Loading({ rows = 5 }: { rows?: number | undefined }) {\n return (\n <div className=\"flex flex-col gap-2\" aria-busy>\n {Array.from({ length: rows }, (_, i) => (\n <div key={i} className=\"flex h-32 items-center gap-8 px-12\">\n <Skeleton className=\"size-18 rounded-pill\" />\n <Skeleton className=\"h-12 rounded-pill\" style={{ width: `${48 + ((i * 37) % 40)}%` }} />\n </div>\n ))}\n </div>\n );\n}\nif (process.env.NODE_ENV !== \"production\") Loading.displayName = \"Sidebar.Loading\";\n\nfunction CollapseToggle({ className }: { className?: string | undefined }) {\n const { collapsed, setCollapsed } = useSidebar();\n const sheet = useContext(SidebarSheetContext);\n const t = useUiText();\n const label = sheet\n ? sheet.peek\n ? t(\"sidebar.keepOpen\", \"Keep sidebar open\")\n : t(\"sidebar.closeNavigation\", \"Close navigation\")\n : collapsed\n ? t(\"sidebar.expand\", \"Expand sidebar\")\n : t(\"sidebar.collapse\", \"Collapse sidebar\");\n const onClick = () => {\n if (sheet?.peek) setCollapsed(false);\n else if (sheet) sheet.close();\n else setCollapsed(!collapsed);\n };\n return (\n <Tooltip content={label} {...(sheet && !sheet.peek ? {} : { shortcut: [\"[\"] })}>\n <button\n type=\"button\"\n aria-label={label}\n {...(sheet ? {} : { \"aria-expanded\": !collapsed })}\n onClick={onClick}\n className={cn(\n \"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-2 hover:text-fg focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n}\nif (process.env.NODE_ENV !== \"production\") CollapseToggle.displayName = \"Sidebar.CollapseToggle\";\n\nfunction RailToggle({ className }: { className?: string | undefined }) {\n const { rail, setRail } = useSidebar();\n const t = useUiText();\n const label = rail ? t(\"sidebar.expand\", \"Expand sidebar\") : t(\"sidebar.collapse\", \"Collapse sidebar\");\n return (\n <Tooltip content={label} side=\"right\">\n <button\n type=\"button\"\n aria-label={label}\n aria-pressed={rail}\n onClick={() => setRail(!rail)}\n className={cn(\n \"inline-flex size-32 items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-2 hover:text-fg focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n}\nif (process.env.NODE_ENV !== \"production\") RailToggle.displayName = \"Sidebar.RailToggle\";\n\nexport const Sidebar = /* @__PURE__ */ Object.assign(Root, {\n Provider,\n Header,\n Brand,\n Switcher,\n Place,\n Content,\n Footer,\n Group,\n Item,\n BackLink,\n Loading,\n RailToggle,\n CollapseToggle,\n});\n"],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { t as e } from "./cn-CidVUKMm.js";
|
|
3
|
-
import { t } from "./dev-CR1p7gCm.js";
|
|
4
|
-
import { forwardRef as n } from "react";
|
|
5
|
-
import { jsx as r } from "react/jsx-runtime";
|
|
6
|
-
//#region src/components/status-dot/status-dot.tsx
|
|
7
|
-
var i = { tone: {
|
|
8
|
-
success: { classes: "text-success-text" },
|
|
9
|
-
warning: { classes: "text-warning-text" },
|
|
10
|
-
danger: { classes: "text-danger-text" },
|
|
11
|
-
info: { classes: "text-info-text" },
|
|
12
|
-
neutral: { classes: "text-fg-secondary" }
|
|
13
|
-
} }, a = { tone: "neutral" }, o = /* @__PURE__ */ n(function({ tone: n = "neutral", children: a, size: o = "md", className: s }, c) {
|
|
14
|
-
return (a == null || a === "") && t("StatusDot: a status is a word in its color; pass the word as children (it renders nothing without one)."), /* @__PURE__ */ r("span", {
|
|
15
|
-
ref: c,
|
|
16
|
-
className: e("inline-flex items-center font-medium", o === "md" ? "text-body" : "text-small", i.tone[n].classes, s),
|
|
17
|
-
children: a
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
process.env.NODE_ENV !== "production" && (o.displayName = "StatusDot");
|
|
21
|
-
var s = o;
|
|
22
|
-
//#endregion
|
|
23
|
-
export { o as i, i as n, s as r, a as t };
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=status-dot-CBoQpyL4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status-dot-CBoQpyL4.js","names":["cn","KAESO_STATUS_DOT_VARIANTS","KAESO_STATUS_DOT_DEFAULT_VARIANTS","StatusDot","children","devWarn","size","tone","className","Status"],"sources":["../../src/components/status-dot/status-dot.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { devWarn } from \"../../utils/dev.js\";\n\nexport const KAESO_STATUS_DOT_VARIANTS = {\n tone: {\n success: { classes: \"text-success-text\" },\n warning: { classes: \"text-warning-text\" },\n danger: { classes: \"text-danger-text\" },\n info: { classes: \"text-info-text\" },\n neutral: { classes: \"text-fg-secondary\" },\n },\n} as const;\nexport const KAESO_STATUS_DOT_DEFAULT_VARIANTS = { tone: \"neutral\" } as const;\n\nexport interface StatusDotProps {\n tone?: keyof typeof KAESO_STATUS_DOT_VARIANTS.tone | undefined;\n children?: ReactNode | undefined;\n size?: \"sm\" | \"md\" | undefined;\n className?: string | undefined;\n}\n\nexport const StatusDot = /* @__PURE__ */ forwardRef<HTMLSpanElement, StatusDotProps>(function StatusDot({ tone = \"neutral\", children, size = \"md\", className }, ref) {\n if (children === undefined || children === null || children === \"\")\n devWarn(\"StatusDot: a status is a word in its color; pass the word as children (it renders nothing without one).\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-medium\",\n size === \"md\" ? \"text-body\" : \"text-small\",\n KAESO_STATUS_DOT_VARIANTS.tone[tone].classes,\n className,\n )}\n >\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") StatusDot.displayName = \"StatusDot\";\n\nexport const Status = StatusDot;\n"],"mappings":";;;;;;AAIA,IAAaC,IAA4B,EACvC,MAAM;CACJ,SAAS,EAAE,SAAS,oBAAoB;CACxC,SAAS,EAAE,SAAS,oBAAoB;CACxC,QAAQ,EAAE,SAAS,mBAAmB;CACtC,MAAM,EAAE,SAAS,iBAAiB;CAClC,SAAS,EAAE,SAAS,oBAAoB;AAC1C,EACF,GACaC,IAAoC,EAAE,MAAM,UAAU,GAStDC,IAA4B,kBAA4C,SAAmB,EAAE,UAAO,WAAW,aAAU,UAAO,MAAM,gBAAa,GAAK;CAGnK,QAFIC,KAAuC,QAAQA,MAAa,OAC9DC,EAAQ,yGAAyG,GAEjH,kBAAC,QAAD;EACO;EACL,WAAWL,EACT,wCACAM,MAAS,OAAO,cAAc,cAC9BL,EAA0B,KAAKM,EAAK,CAAC,SACrCC,CACF;EAEC;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AAEnE,IAAaC,IAASN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-Cj8iR82R.js","names":["__icon_MinusSignIcon","__icon_Add01Icon","cn","warnStylingClassName","useUiText","useField","useFieldControl","withField","InputGroup","Input","split","m","v","isDecimal","addDecimal","x","a","y","b","scale","toBig","p","sum","neg","digits","int","frac","compareDecimal","d","ENGLISH","decimalSeparators","locale","parts","groupDecimal","seps","localizeDecimal","ungroup","out","KAESO_NUMBER_INPUT_VARIANTS","KAESO_NUMBER_INPUT_DEFAULT_VARIANTS","NumberInput","props","t","useLocale","useMemo","inner","setInner","useState","defaultValue","focused","setFocused","controlled","value","raw","set","onValueChange","clamp","min","max","stepBy","dir","step","display","live","disabled","readOnly","stepper","hideStepper","MinusSignIcon","Add01Icon","className","unit","onFocus","onBlur","onKeyDown","KAESO_TEXTAREA_VARIANTS","KAESO_TEXTAREA_DEFAULT_VARIANTS","LINE","PAD","Textarea","rest","field","fc","useRef","grow","useCallback","el","resize","maxRows","control","ref","onChange","mono","label","description","error","id","invalid"],"sources":["../../src/components/input/decimal.ts","../../src/components/input/number-input.tsx","../../src/components/input/textarea.tsx"],"sourcesContent":["function split(v: string): { neg: boolean; int: string; frac: string } {\n const m = /^(-)?(\\d*)(?:\\.(\\d*))?$/.exec(v.trim());\n if (!m) return { neg: false, int: \"0\", frac: \"\" };\n return { neg: m[1] === \"-\", int: (m[2] || \"0\").replace(/^0+(?=\\d)/, \"\"), frac: m[3] ?? \"\" };\n}\n\nexport function isDecimal(v: string): boolean {\n return /^-?\\d*(?:\\.\\d*)?$/.test(v.trim());\n}\n\nexport function addDecimal(a: string, b: string): string {\n const x = split(a || \"0\");\n const y = split(b || \"0\");\n const scale = Math.max(x.frac.length, y.frac.length);\n const toBig = (p: { neg: boolean; int: string; frac: string }) => BigInt((p.neg ? \"-\" : \"\") + p.int + p.frac.padEnd(scale, \"0\"));\n const sum = toBig(x) + toBig(y);\n const neg = sum < 0n;\n const digits = (neg ? -sum : sum).toString().padStart(scale + 1, \"0\");\n const int = digits.slice(0, digits.length - scale) || \"0\";\n const frac = scale ? digits.slice(-scale) : \"\";\n return `${neg ? \"-\" : \"\"}${int}${frac ? `.${frac}` : \"\"}`;\n}\n\nexport function compareDecimal(a: string, b: string): number {\n const d = addDecimal(a, b.startsWith(\"-\") ? b.slice(1) : `-${b}`);\n if (d.startsWith(\"-\") && /[1-9]/.test(d)) return -1;\n return /[1-9]/.test(d) ? 1 : 0;\n}\n\nexport interface DecimalSeparators {\n group: string;\n decimal: string;\n}\n\nconst ENGLISH: DecimalSeparators = { group: \",\", decimal: \".\" };\n\nexport function decimalSeparators(locale: string): DecimalSeparators {\n if (locale === \"en\") return ENGLISH;\n const parts = new Intl.NumberFormat(locale).formatToParts(1234.5);\n return { group: parts.find((p) => p.type === \"group\")?.value ?? \",\", decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\" };\n}\n\nexport function groupDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n const p = split(v);\n if (!isDecimal(v) || v.trim() === \"\") return v;\n return `${p.neg ? \"-\" : \"\"}${p.int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, seps.group)}${v.includes(\".\") ? `${seps.decimal}${p.frac}` : \"\"}`;\n}\n\nexport function localizeDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n return seps.decimal === \".\" ? v : v.replace(\".\", seps.decimal);\n}\n\nexport function ungroup(v: string, seps: DecimalSeparators = ENGLISH): string {\n const out = seps.group === \".\" ? v : v.split(seps.group).join(\"\");\n return seps.decimal === \".\" ? out : out.split(seps.decimal).join(\".\");\n}\n","import { forwardRef, useMemo, useState, type ChangeEvent, type FocusEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Input, type InputProps } from \"./input.js\";\nimport { InputGroup } from \"./input-group.js\";\nimport { MinusSignIcon as __icon_MinusSignIcon, Add01Icon as __icon_Add01Icon } from \"@hugeicons/core-free-icons\";\nimport { addDecimal, compareDecimal, decimalSeparators, groupDecimal, isDecimal, localizeDecimal, ungroup } from \"./decimal.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_NUMBER_INPUT_VARIANTS = {\n align: {\n end: { classes: \"text-right\" },\n start: { classes: \"text-left\" },\n },\n} as const;\nexport const KAESO_NUMBER_INPUT_DEFAULT_VARIANTS = { align: \"end\" } as const;\n\nexport interface NumberInputProps extends Omit<InputProps, \"type\" | \"value\" | \"defaultValue\" | \"onChange\" | \"min\" | \"max\" | \"step\"> {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n unit?: string | undefined;\n step?: string | undefined;\n min?: string | undefined;\n max?: string | undefined;\n hideStepper?: boolean | undefined;\n align?: keyof typeof KAESO_NUMBER_INPUT_VARIANTS.align | undefined;\n}\n\nexport const NumberInput = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value,\n defaultValue = \"\",\n onValueChange,\n unit,\n step = \"1\",\n min,\n max,\n hideStepper,\n align = \"end\",\n onBlur,\n onFocus,\n onKeyDown,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const seps = useMemo(() => decimalSeparators(locale), [locale]);\n const [inner, setInner] = useState(defaultValue);\n const [focused, setFocused] = useState(false);\n const controlled = value !== undefined;\n const raw = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n const clamp = (v: string) => {\n if (v === \"\" || v === \"-\") return v;\n if (min !== undefined && compareDecimal(v, min) < 0) return min;\n if (max !== undefined && compareDecimal(v, max) > 0) return max;\n return v;\n };\n const stepBy = (dir: 1 | -1) => set(clamp(addDecimal(raw || \"0\", dir === 1 ? step : `-${step}`)));\n const display = focused ? localizeDecimal(raw, seps) : groupDecimal(raw, seps);\n const live = !disabled && !readOnly;\n const stepper = !hideStepper && (\n <span\n className={cn(\n \"flex shrink-0 items-center opacity-0 transition-control\",\n live ? \"group-hover/num:opacity-100 coarse:opacity-100 group-focus-within/num:opacity-100\" : \"invisible\",\n )}\n {...(live ? {} : { \"aria-hidden\": true })}\n >\n <InputGroup.Button icon={__icon_MinusSignIcon} aria-label={t(\"numberInput.decrease\", \"Decrease\")} onClick={() => stepBy(-1)} disabled={!live} />\n <InputGroup.Button icon={__icon_Add01Icon} aria-label={t(\"numberInput.increase\", \"Increase\")} onClick={() => stepBy(1)} disabled={!live} />\n </span>\n );\n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n spellCheck={false}\n value={display}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(\"group/num\", className)}\n suffix={unit}\n trailing={stepper || undefined}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const v = ungroup(e.target.value, seps);\n if (isDecimal(v)) set(v);\n }}\n onFocus={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (raw !== clamp(raw)) set(clamp(raw));\n onBlur?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepBy(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepBy(-1);\n }\n onKeyDown?.(e);\n }}\n align={align}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") NumberInput.displayName = \"NumberInput\";\n","import { forwardRef, useCallback, useLayoutEffect, useRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\n\nexport const KAESO_TEXTAREA_VARIANTS = {\n resize: {\n auto: { classes: \"resize-none\" },\n vertical: { classes: \"resize-y\" },\n },\n} as const;\nexport const KAESO_TEXTAREA_DEFAULT_VARIANTS = { resize: \"auto\" } as const;\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FieldWrapProps {\n resize?: keyof typeof KAESO_TEXTAREA_VARIANTS.resize | undefined;\n maxRows?: number | undefined;\n invalid?: boolean | undefined;\n mono?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst LINE = 20;\nconst PAD = 20;\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(props, ref) {\n const {\n resize = \"auto\",\n maxRows = 8,\n rows = 3,\n invalid,\n mono,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n id,\n disabled,\n onChange,\n ...rest\n } = props;\n warnStylingClassName(\"Textarea\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = useRef<HTMLTextAreaElement | null>(null);\n const grow = useCallback(() => {\n const el = inner.current;\n if (!el || resize !== \"auto\") return;\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxRows * LINE + PAD)}px`;\n }, [maxRows, resize]);\n useLayoutEffect(grow, [grow, rest.value]);\n const control = (\n <textarea\n ref={(el) => {\n inner.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n rows={rows}\n disabled={disabled}\n required={required}\n onChange={(e) => {\n grow();\n onChange?.(e);\n }}\n className={cn(\n \"block w-full min-w-0 rounded-textarea px-16 py-10 text-body text-fg material-field transition-control outline-none placeholder:text-fg-tertiary scrollbar-quiet\",\n \"disabled:cursor-not-allowed\",\n mono && \"mono text-small\",\n KAESO_TEXTAREA_VARIANTS.resize[resize].classes,\n !(label || description || error) && className,\n )}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\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\") Textarea.displayName = \"Textarea\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-rows-BZe49bKi.js","names":["useScrollMargin","VirtualRows","body","useRef","scrollMargin","getScrollElement","count","virtualizer","useVirtualizer","useLayoutEffect","index","scrollTo","measure","v","row"],"sources":["../../src/components/list/virtual-rows.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, type ReactNode, type RefObject } from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { useScrollMargin } from \"../../hooks/use-scroll-margin.js\";\n\nexport interface VirtualRowsProps {\n count: number;\n estimateSize: (index: number) => number;\n getScrollElement: () => HTMLElement | null;\n scrollTo: RefObject<((index: number) => void) | null>;\n row: (index: number) => ReactNode;\n measure?: boolean | undefined;\n}\n\nexport function VirtualRows({ count, estimateSize, getScrollElement, scrollTo, row, measure }: VirtualRowsProps) {\n const body = useRef<HTMLDivElement | null>(null);\n const scrollMargin = useScrollMargin(body, getScrollElement, count);\n const virtualizer = useVirtualizer({ count, getScrollElement, estimateSize, overscan: 12, scrollMargin });\n useLayoutEffect(() => {\n scrollTo.current = (index) => virtualizer.scrollToIndex(index, { align: \"auto\" });\n return () => {\n scrollTo.current = null;\n };\n }, [virtualizer, scrollTo]);\n return (\n <div ref={body} role=\"presentation\" className=\"relative w-full\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((v) => (\n <div\n key={v.key}\n {...(measure ? { ref: virtualizer.measureElement, \"data-index\": v.index } : {})}\n role=\"presentation\"\n className=\"absolute top-0 left-0 w-full\"\n style={{ transform: `translateY(${Math.round(v.start - scrollMargin)}px)` }}\n >\n {row(v.index)}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgBC,EAAY,EAAE,UAAO,iBAAc,qBAAkB,aAAU,QAAK,cAA6B;CAC/G,IAAMC,IAAOC,EAA8B,IAAI,GACzCC,IAAeJ,EAAgBE,GAAMG,GAAkBC,CAAK,GAC5DC,IAAcC,EAAe;EAAE;EAAO;EAAkB;EAAc,UAAU;EAAI;CAAa,CAAC;CAOxG,OANAC,SACE,EAAS,WAAW,MAAUF,EAAY,cAAcG,GAAO,EAAE,OAAO,OAAO,CAAC,SACnE;EACX,EAAS,UAAU;CACrB,IACC,CAACH,GAAaI,CAAQ,CAAC,GAExB,kBAAC,OAAD;EAAK,KAAKT;EAAM,MAAK;EAAe,WAAU;EAAkB,OAAO,EAAE,QAAQK,EAAY,aAAa,EAAE;EACzG,UAAAA,EAAY,gBAAgB,CAAC,CAAC,KAAK,MAClC,kBAAC,OAAD;GAEE,GAAKK,IAAU;IAAE,KAAKL,EAAY;IAAgB,cAAcM,EAAE;GAAM,IAAI,CAAC;GAC7E,MAAK;GACL,WAAU;GACV,OAAO,EAAE,WAAW,cAAc,KAAK,MAAMA,EAAE,QAAQT,CAAY,EAAE,KAAK;GAEzE,UAAAU,EAAID,EAAE,KAAK;EACT,GAPEA,EAAE,GAOJ,CACN;CACE,CAAA;AAET"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zh-CN-C7GmVswt.js","names":["zhCN"],"sources":["../../src/i18n/locales/zh-CN.ts"],"sourcesContent":["const zhCN: Readonly<Record<string, string>> = {\n \"alertDialog.cancel\": \"取消\",\n \"alertDialog.typeToConfirm\": \"输入 {text} 以确认\",\n \"appFrame.expandSidebar\": \"展开侧边栏\",\n \"appFrame.navigation\": \"导航\",\n \"appFrame.openNavigation\": \"打开导航\",\n \"appFrame.skipToContent\": \"跳到主要内容\",\n \"avatarGroup.listSeparator\": \"、\",\n \"banner.dismiss\": \"关闭\",\n \"barChart.category\": \"类别\",\n \"calendar.navigation\": \"导航栏\",\n \"calendar.nextMonth\": \"转到下个月\",\n \"calendar.previousMonth\": \"转到上个月\",\n \"calendar.selected\": \"{date},已选择\",\n \"calendar.today\": \"今天,{date}\",\n \"chart.listSeparator\": \",\",\n \"chart.liveLine\": \"{heading}:{values}\",\n \"chart.liveValue\": \"{label} {value}\",\n \"chartFrame.loadFailed\": \"无法加载此图表\",\n \"chartFrame.noData\": \"此时间段无数据\",\n \"chartFrame.tryAgain\": \"重试\",\n \"chartFrame.viewAsChart\": \"以图表查看\",\n \"chartFrame.viewAsTable\": \"以表格查看\",\n \"chartLegend.label\": \"图例\",\n \"codeBlock.code\": \"代码\",\n \"codeBlock.copy\": \"复制代码\",\n \"codeBlock.language\": \"语言\",\n \"codeBlock.showAllLines\": \"显示全部 {count} 行\",\n \"codeBlock.showLess\": \"收起\",\n \"codeBlock.titledCode\": \"代码:{title}\",\n \"combobox.create\": \"创建“{label}”\",\n \"combobox.loading\": \"加载中…\",\n \"combobox.loadingResults\": \"正在加载结果\",\n \"combobox.noResults\": \"无结果\",\n \"combobox.remove\": \"移除 {label}\",\n \"combobox.showOptions\": \"显示选项\",\n \"commandPalette.label\": \"命令面板\",\n \"commandPalette.noResults\": \"无结果\",\n \"commandPalette.placeholder\": \"搜索或运行命令\",\n \"commandPalette.results\": \"结果\",\n \"commandPalette.toClose\": \"关闭\",\n \"commandPalette.toGoBack\": \"返回\",\n \"commandPalette.toNavigate\": \"导航\",\n \"commandPalette.toOpen\": \"打开\",\n \"compareGrid.addModel\": \"添加模型\",\n \"compareGrid.columnName\": \"{label},\",\n \"compareGrid.compareUpTo\": \"最多同时比较 {max} 个\",\n \"compareGrid.nextColumn\": \"下一列\",\n \"compareGrid.position\": \"{index}/{count}\",\n \"compareGrid.previousColumn\": \"上一列\",\n \"compareGrid.remove\": \"移除 {label}\",\n \"compareGrid.thread\": \"{label} 对话\",\n \"composer.placeholder\": \"输入提示词\",\n \"composer.prompt\": \"提示词\",\n \"composer.send\": \"发送\",\n \"composer.stop\": \"停止\",\n \"conversationView.assistant\": \"助手\",\n \"conversationView.called\": \"调用了 **{name}**\",\n \"conversationView.developer\": \"开发者\",\n \"conversationView.document\": \"文档\",\n \"conversationView.encrypted\": \"服务商以加密形式返回了此推理。\",\n \"conversationView.error\": \"错误\",\n \"conversationView.image\": \"图片\",\n \"conversationView.imageInput\": \"图片输入\",\n \"conversationView.reasoning\": \"推理\",\n \"conversationView.redacted\": \"已被服务商隐去\",\n \"conversationView.refused\": \"模型拒绝了请求。\",\n \"conversationView.result\": \"结果\",\n \"conversationView.system\": \"系统\",\n \"conversationView.tool\": \"工具\",\n \"conversationView.user\": \"用户\",\n \"copyButton.copied\": \"已复制\",\n \"copyButton.copy\": \"复制\",\n \"dataTable.loadFailed\": \"无法加载这些行\",\n \"dataTable.noMatches\": \"没有符合这些筛选条件的结果。\",\n \"dataTable.noRows\": \"暂无数据\",\n \"dataTable.resizeColumn\": \"调整列宽\",\n \"dataTable.selectAllRows\": \"选择所有行\",\n \"dataTable.selectRow\": \"选择行\",\n \"dataTable.tokenCount\": \"{count} 个 Token\",\n \"dataTable.tryAgain\": \"重试\",\n \"datePicker.apply\": \"应用\",\n \"datePicker.chooseDate\": \"选择日期\",\n \"datePicker.chooseRange\": \"选择日期范围\",\n \"datePicker.custom\": \"自定义\",\n \"datePicker.date\": \"日期\",\n \"datePicker.endDate\": \"结束日期\",\n \"datePicker.isoPlaceholder\": \"YYYY-MM-DD\",\n \"datePicker.last24Hours\": \"最近 24 小时\",\n \"datePicker.last30Days\": \"最近 30 天\",\n \"datePicker.last7Days\": \"最近 7 天\",\n \"datePicker.lastMonth\": \"上个月\",\n \"datePicker.pickDate\": \"选择日期\",\n \"datePicker.pickRange\": \"选择时间范围\",\n \"datePicker.presets\": \"预设\",\n \"datePicker.startDate\": \"开始日期\",\n \"datePicker.thisMonth\": \"本月\",\n \"deleteResource.confirm\": \"{verb}{kind}\",\n \"deleteResource.deleteConfirm\": \"删除{kind}\",\n \"deleteResource.deleteTitle\": \"删除此{kind}?\",\n \"deleteResource.title\": \"{verb}此{kind}?\",\n \"dialog.back\": \"返回\",\n \"dialog.close\": \"关闭\",\n \"displayOptions.displayOptions\": \"显示选项\",\n \"displayOptions.properties\": \"显示属性\",\n \"displayOptions.view\": \"视图\",\n \"donut.legend\": \"图例\",\n \"donut.other\": \"其他\",\n \"donut.share\": \"占比\",\n \"donut.slice\": \"扇区\",\n \"donut.total\": \"总计\",\n \"donut.underOnePercent\": \"<1%\",\n \"donut.value\": \"数值\",\n \"effectiveAccess.access\": \"访问权限\",\n \"effectiveAccess.everyRight\": \"全部权限\",\n \"effectiveAccess.from\": \"来自\",\n \"effectiveAccess.grantedOfTotal\": \"{granted}/{total}\",\n \"effectiveAccess.listSeparator\": \"、\",\n \"effectiveAccess.noRights\": \"无权限\",\n \"effectiveAccess.noneIn\": \"以下无权限\",\n \"environmentSnippet.apiKey\": \"API 密钥\",\n \"environmentSnippet.baseUrl\": \"基础 URL\",\n \"environmentSnippet.copyBaseUrl\": \"复制基础 URL\",\n \"environmentSnippet.copyVariableName\": \"复制变量名\",\n \"field.optional\": \"可选\",\n \"filterChip.filter\": \"筛选\",\n \"filterChip.filterNamed\": \"筛选:{property}\",\n \"filterChip.noMatches\": \"没有匹配的值\",\n \"filterChip.remove\": \"移除筛选\",\n \"filterChip.removeNamed\": \"移除{property}筛选\",\n \"filterChip.search\": \"搜索\",\n \"filterChip.searchNamedValues\": \"搜索{property}的值\",\n \"filterChip.searchValues\": \"搜索值\",\n \"filterRow.filters\": \"筛选\",\n \"flow.connection\": \"从 {from} 到 {to}\",\n \"flow.label\": \"流程图\",\n \"format.daysAgo\": \"{count} 天前\",\n \"format.hoursAgo\": \"{count} 小时前\",\n \"format.hoursMinutes\": \"{h} 小时 {min} 分\",\n \"format.inDays\": \"{count} 天后\",\n \"format.inHours\": \"{count} 小时后\",\n \"format.inMinutes\": \"{count} 分钟后\",\n \"format.justNow\": \"刚刚\",\n \"format.milliseconds\": \"{ms} ms\",\n \"format.minutes\": \"{min} 分钟\",\n \"format.minutesAgo\": \"{count} 分钟前\",\n \"format.minutesSeconds\": \"{min} 分 {s} 秒\",\n \"format.seconds\": \"{s} 秒\",\n \"format.yesterday\": \"昨天\",\n \"heatmap.cell\": \"{row} {column}:{value}\",\n \"heatmap.less\": \"少\",\n \"heatmap.more\": \"多\",\n \"jsonView.collapse\": \"收起\",\n \"jsonView.collapsePath\": \"收起 {path}\",\n \"jsonView.copyPath\": \"复制路径:{path}\",\n \"jsonView.expand\": \"展开\",\n \"jsonView.expandPath\": \"展开 {path}\",\n \"jsonView.items\": \"{count, plural, other {{n} 项}}\",\n \"jsonView.keys\": \"{count, plural, other {{n} 个键}}\",\n \"jsonView.pathCopied\": \"已复制路径\",\n \"kbd.backspace\": \"Backspace\",\n \"kbd.backspaceName\": \"退格键\",\n \"kbd.commandName\": \"Command 键\",\n \"kbd.controlName\": \"Control 键\",\n \"kbd.ctrl\": \"Ctrl\",\n \"kbd.downName\": \"下箭头\",\n \"kbd.enterName\": \"回车键\",\n \"kbd.escapeName\": \"Esc 键\",\n \"kbd.leftName\": \"左箭头\",\n \"kbd.optionName\": \"Option 键\",\n \"kbd.rightName\": \"右箭头\",\n \"kbd.shift\": \"Shift\",\n \"kbd.shiftName\": \"Shift 键\",\n \"kbd.tabName\": \"Tab 键\",\n \"kbd.then\": \"然后\",\n \"kbd.upName\": \"上箭头\",\n \"keyDisplay.active\": \"有效\",\n \"keyDisplay.archived\": \"已归档\",\n \"keyDisplay.copyRedactedKey\": \"复制脱敏密钥\",\n \"keyDisplay.disabled\": \"已停用\",\n \"keyDisplay.expired\": \"已过期\",\n \"keyDisplay.inference\": \"模型调用\",\n \"keyDisplay.inferenceAndPlatform\": \"模型调用 + 平台\",\n \"keyDisplay.platform\": \"平台\",\n \"label.optional\": \"可选\",\n \"limitMeter.hard\": \"硬性\",\n \"limitMeter.label\": \"{kind, select, requests {请求限额} tokens {Token 限额} other {支出限额}}\",\n \"limitMeter.soft\": \"软性\",\n \"link.opensInNewTab\": \"(在新标签页中打开)\",\n \"list.add\": \"添加\",\n \"list.clearSelection\": \"清除选择\",\n \"list.selectItem\": \"选择 {name}\",\n \"list.selected\": \"已选择 {count} 项\",\n \"list.selection\": \"所选项\",\n \"loader.loading\": \"加载中\",\n \"markdown.showAllCharacters\": \"显示全部 {count} 个字符\",\n \"modelLabel.capabilities\": \"能力:{list}\",\n \"modelLabel.imageInput\": \"图片输入\",\n \"modelLabel.listSeparator\": \"、\",\n \"modelLabel.pdfInput\": \"PDF 输入\",\n \"modelLabel.reasoning\": \"推理\",\n \"modelLabel.structuredOutput\": \"结构化输出\",\n \"modelLabel.toolCalling\": \"工具调用\",\n \"modelPicker.choose\": \"选择模型\",\n \"modelPicker.model\": \"模型\",\n \"numberInput.decrease\": \"减少\",\n \"numberInput.increase\": \"增加\",\n \"otpInput.label\": \"验证码\",\n \"pagination.label\": \"分页\",\n \"pagination.loadMore\": \"加载更多\",\n \"pagination.next\": \"下一页\",\n \"pagination.previous\": \"上一页\",\n \"parameterPanel.effortExtraHigh\": \"极高\",\n \"parameterPanel.effortHigh\": \"高\",\n \"parameterPanel.effortLow\": \"低\",\n \"parameterPanel.effortMax\": \"最大\",\n \"parameterPanel.effortMedium\": \"中\",\n \"parameterPanel.effortMinimal\": \"最低\",\n \"parameterPanel.effortNone\": \"无\",\n \"parameterPanel.instructionsPlaceholder\": \"你是一个乐于助人的助手。\",\n \"parameterPanel.maxOutputTokens\": \"最大输出 Token 数\",\n \"parameterPanel.modelDefault\": \"模型默认值\",\n \"parameterPanel.reasoningEffort\": \"推理强度\",\n \"parameterPanel.reasoningSummary\": \"推理摘要\",\n \"parameterPanel.resetToDefaults\": \"恢复默认值\",\n \"parameterPanel.summaryAuto\": \"自动\",\n \"parameterPanel.summaryConcise\": \"简洁\",\n \"parameterPanel.summaryDetailed\": \"详细\",\n \"parameterPanel.summaryOff\": \"关闭\",\n \"parameterPanel.systemInstructions\": \"系统指令\",\n \"parameterPanel.temperature\": \"温度\",\n \"parameterPanel.topP\": \"Top P\",\n \"parameterPanel.valueDefault\": \"{value}(默认)\",\n \"parameterPopover.parameters\": \"参数\",\n \"promptSuggestions.examplePrompts\": \"示例提示词\",\n \"providerCard.connected\": \"已连接\",\n \"providerCard.notConnected\": \"未连接\",\n \"requestTimeline.label\": \"首字节时间 {ttfb},共 {total}\",\n \"requestTimeline.firstByte\": \"首字节\",\n \"requestTimeline.totalTime\": \"总计\",\n \"resourceList.filters\": \"筛选\",\n \"resourceList.noMatches\": \"无匹配结果\",\n \"resourceList.nothingHereYet\": \"暂无内容\",\n \"resourceList.search\": \"搜索\",\n \"resourceList.tryShorterSearch\": \"请尝试更短的搜索词。\",\n \"responseMetrics.cost\": \"费用\",\n \"responseMetrics.firstToken\": \"首个 Token\",\n \"responseMetrics.metrics\": \"指标\",\n \"responseMetrics.notYetKnown\": \"尚未确定\",\n \"responseMetrics.reasoning\": \"推理\",\n \"responseMetrics.tokens\": \"Token\",\n \"responseMetrics.tokensInOut\": \"输入 {input},输出 {output}\",\n \"responseMetrics.total\": \"总计\",\n \"responseMetrics.unknown\": \"未知\",\n \"responseView.noResponse\": \"无响应\",\n \"responseView.noText\": \"模型未返回文本\",\n \"responseView.responding\": \"正在响应\",\n \"responseView.response\": \"响应\",\n \"responseView.retry\": \"重试\",\n \"responseView.stopped\": \"已停止\",\n \"responseView.stoppedBeforeResponse\": \"在响应前已停止\",\n \"responseView.stoppedEarly\": \"响应提前中断\",\n \"responseView.thinking\": \"思考中\",\n \"responseView.thoughtFor\": \"思考了 {duration}\",\n \"responseView.waiting\": \"等待响应\",\n \"rightsMatrix.added\": \"已添加\",\n \"rightsMatrix.alsoGranted\": \"同时授予:{rights}\",\n \"rightsMatrix.alsoRemoved\": \"同时移除:{rights}\",\n \"rightsMatrix.everyRightIn\": \"{group}中的全部权限\",\n \"rightsMatrix.everyRightShownIn\": \"{group}中显示的全部权限\",\n \"rightsMatrix.fromRole\": \"来自角色\",\n \"rightsMatrix.granted\": \"已授予\",\n \"rightsMatrix.grantedOfTotal\": \"{granted}/{total}\",\n \"rightsMatrix.listSeparator\": \"、\",\n \"rightsMatrix.needs\": \"需要{rights}\",\n \"rightsMatrix.noMatch\": \"没有匹配的权限\",\n \"rightsMatrix.noMatchHint\": \"请尝试权限的名称、代码或描述中的词。\",\n \"rightsMatrix.notGranted\": \"未授予\",\n \"rightsMatrix.removed\": \"已移除\",\n \"rightsMatrix.rights\": \"权限\",\n \"rightsMatrix.searchRights\": \"搜索权限\",\n \"rightsMatrix.sensitive\": \"敏感\",\n \"rightsMatrix.sensitiveHint\": \"敏感:会暴露数据或难以撤销\",\n \"rolePicker.builtInRoles\": \"内置角色\",\n \"rolePicker.customRoles\": \"自定义角色\",\n \"rolePicker.role\": \"角色\",\n \"sankey.from\": \"来源\",\n \"sankey.link\": \"{source} → {target}:{value}\",\n \"sankey.requests\": \"请求\",\n \"sankey.to\": \"目标\",\n \"searchInput.clear\": \"清除搜索\",\n \"searchInput.placeholder\": \"搜索\",\n \"secretReveal.copied\": \"已复制\",\n \"secretReveal.copyKey\": \"复制密钥\",\n \"secretReveal.secret\": \"密钥\",\n \"secretReveal.secretFor\": \"{name} 的密钥\",\n \"secretReveal.shownOnce\": \"仅显示一次,请立即保存。\",\n \"select.firstAndMore\": \"{first} +{count}\",\n \"select.placeholder\": \"请选择\",\n \"sensitiveInput.capsLock\": \"大写锁定已开启。\",\n \"sensitiveInput.hide\": \"隐藏\",\n \"sensitiveInput.show\": \"显示\",\n \"shareBar.listSeparator\": \",\",\n \"shareBar.segment\": \"{label}:{value}\",\n \"shareBar.share\": \"{label} {share}\",\n \"shareBar.summary\": \"{label}:{shares}\",\n \"sheet.close\": \"关闭\",\n \"sidebar.backToApp\": \"返回应用\",\n \"sidebar.clickToCollapse\": \"**点击**收起\",\n \"sidebar.closeNavigation\": \"关闭导航\",\n \"sidebar.collapse\": \"收起侧边栏\",\n \"sidebar.dragToResize\": \"**拖动**调整宽度\",\n \"sidebar.expand\": \"展开侧边栏\",\n \"sidebar.keepOpen\": \"保持侧边栏展开\",\n \"sidebar.main\": \"主菜单\",\n \"sidebar.resizeOrCollapse\": \"调整侧边栏宽度;点击收起\",\n \"sidebar.switchOrOpenSettings\": \"{label}:切换或打开设置\",\n \"sidebar.switchPlace\": \"{label}:切换\",\n \"slider.rangeEnd\": \"范围终点:{value}\",\n \"slider.rangeStart\": \"范围起点:{value}\",\n \"statTile.percent\": \"{value}%\",\n \"statTile.trend\": \"趋势\",\n \"statTile.trendPerDay\": \"每日{label}\",\n \"statusCode.badGateway\": \"网关错误\",\n \"statusCode.badRequest\": \"错误请求\",\n \"statusCode.clientClosed\": \"客户端已关闭\",\n \"statusCode.conflict\": \"冲突\",\n \"statusCode.created\": \"已创建\",\n \"statusCode.forbidden\": \"禁止访问\",\n \"statusCode.gatewayTimeout\": \"网关超时\",\n \"statusCode.noContent\": \"无内容\",\n \"statusCode.notFound\": \"未找到\",\n \"statusCode.ok\": \"成功\",\n \"statusCode.overloaded\": \"过载\",\n \"statusCode.rateLimited\": \"触发速率限制\",\n \"statusCode.serverError\": \"服务器错误\",\n \"statusCode.timeout\": \"超时\",\n \"statusCode.tooLarge\": \"内容过大\",\n \"statusCode.tooltip\": \"{code} {text}\",\n \"statusCode.unauthorized\": \"未授权\",\n \"statusCode.unavailable\": \"不可用\",\n \"statusCode.unprocessable\": \"无法处理\",\n \"stepDialog.back\": \"上一步\",\n \"stepDialog.cancel\": \"取消\",\n \"stepDialog.continue\": \"继续\",\n \"stepDialog.stepAnnouncement\": \"第 {current} 步,共 {total} 步:{title}\",\n \"stepDialog.stepOf\": \"第 {current} 步,共 {total} 步\",\n \"tableOfContents.title\": \"本页内容\",\n \"tag.remove\": \"移除\",\n \"tag.removeNamed\": \"移除 {label}\",\n \"tagInput.remove\": \"移除 {tag}\",\n \"themeMenu.dark\": \"深色\",\n \"themeMenu.light\": \"浅色\",\n \"themeMenu.system\": \"跟随系统\",\n \"themeMenu.theme\": \"主题\",\n \"timeInput.hours\": \"小时\",\n \"timeInput.minutes\": \"分钟\",\n \"timeInput.time\": \"时间\",\n \"timeseriesChart.time\": \"时间\",\n \"toast.dismiss\": \"关闭\",\n \"toast.notifications\": \"通知\",\n \"tokenKind.cacheRead\": \"缓存读取\",\n \"tokenKind.cacheWrite\": \"缓存写入\",\n \"tokenKind.input\": \"输入\",\n \"tokenKind.output\": \"输出\",\n \"tokenKind.reasoning\": \"推理\",\n \"usageBreakdown.cacheRead\": \"缓存读取\",\n \"usageBreakdown.cacheWrite\": \"缓存写入\",\n \"usageBreakdown.input\": \"输入\",\n \"usageBreakdown.kindCount\": \"{kind} {count}\",\n \"usageBreakdown.listSeparator\": \",\",\n \"usageBreakdown.output\": \"输出\",\n \"usageBreakdown.reasoning\": \"推理\",\n \"usageBreakdown.tokenCount\": \"{count} 个 Token\",\n \"usageBreakdown.tokens\": \"Token:{list}\",\n \"userMessage.prompt\": \"提示词\",\n \"userMessage.showAll\": \"显示全部\",\n \"userMessage.showLess\": \"收起\",\n};\nexport default zhCN;\n"],"mappings":"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"}
|