@logicplanes/kaeso-ui 0.4.3 → 0.4.5
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/ai/component-guides.md +279 -98
- package/ai/component-registry.json +352 -236
- package/ai/component-registry.md +241 -219
- package/ai/icons.md +2 -2
- package/ai/tokens.md +18 -14
- package/dist/blocks/delete-resource.js +3 -3
- package/dist/blocks/delete-resource.js.map +1 -1
- package/dist/blocks/pages.js +47 -42
- package/dist/blocks/pages.js.map +1 -1
- package/dist/blocks/resource-list.js +68 -55
- package/dist/blocks/resource-list.js.map +1 -1
- package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
- package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
- package/dist/chunks/app-frame-DysOel2X.js +232 -0
- package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
- package/dist/chunks/avatar-CYNMK7uY.js +110 -0
- package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
- package/dist/chunks/badge-C0GC3B9X.js +27 -0
- package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
- package/dist/chunks/banner-B3DGLTBu.js +88 -0
- package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
- package/dist/chunks/button-IblhXUyZ.js +202 -0
- package/dist/chunks/button-IblhXUyZ.js.map +1 -0
- package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
- package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
- package/dist/chunks/checkbox-9tbimmF3.js +141 -0
- package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
- package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
- package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
- package/dist/chunks/code-block-64e-Cy1S.js +346 -0
- package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
- package/dist/chunks/code-block-KIvuE8jg.js +352 -0
- package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
- package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
- package/dist/chunks/code-xqjww4Pv.js.map +1 -0
- package/dist/chunks/combobox-DkcjkWc6.js +352 -0
- package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
- package/dist/chunks/command-list-CypqsC4T.js +456 -0
- package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
- package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
- package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
- package/dist/chunks/core-CmK-8ObW.js +505 -0
- package/dist/chunks/core-CmK-8ObW.js.map +1 -0
- package/dist/chunks/data-table-CqY8_6IS.js +581 -0
- package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
- package/dist/chunks/date-popup-DAnjptFt.js +58 -0
- package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
- package/dist/chunks/{de-CPXJh9cq.js → de-CqC4aSIV.js} +81 -40
- package/dist/chunks/de-CqC4aSIV.js.map +1 -0
- package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
- package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
- package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
- package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
- package/dist/chunks/domain-obd_w9xk.js +28 -0
- package/dist/chunks/domain-obd_w9xk.js.map +1 -0
- package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
- package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
- package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
- package/dist/chunks/field-D7m-yl-D.js.map +1 -0
- package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
- package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
- package/dist/chunks/icon-CPJWE2N-.js +95 -0
- package/dist/chunks/{icon-DVooQfk4.js.map → icon-CPJWE2N-.js.map} +1 -1
- package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
- package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
- package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
- package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
- package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
- package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
- package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
- package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
- package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
- package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
- package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
- package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
- package/dist/chunks/label-DW24Aj0Z.js +26 -0
- package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
- package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
- package/dist/chunks/link-CMjkcLQK.js.map +1 -0
- package/dist/chunks/list-B4G-sWwV.js +540 -0
- package/dist/chunks/list-B4G-sWwV.js.map +1 -0
- package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
- package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
- package/dist/chunks/markdown-C565aBR7.js +338 -0
- package/dist/chunks/markdown-C565aBR7.js.map +1 -0
- package/dist/chunks/menu-Clvv6ftq.js +485 -0
- package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
- package/dist/chunks/meter-CASMHlxl.js +100 -0
- package/dist/chunks/meter-CASMHlxl.js.map +1 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
- package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
- package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
- package/dist/chunks/page-header-kS5tdmvb.js +45 -0
- package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
- package/dist/chunks/pagination-D7fAm8qg.js +147 -0
- package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
- package/dist/chunks/popover-Bl5QYqnh.js +51 -0
- package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
- package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
- package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
- package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
- package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
- package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
- package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
- package/dist/chunks/release-art-ChiT4T2S.js +582 -0
- package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
- package/dist/chunks/rights-B68ocZuq.js +312 -0
- package/dist/chunks/rights-B68ocZuq.js.map +1 -0
- package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
- package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
- package/dist/chunks/section-CFBYhsUi.js +77 -0
- package/dist/chunks/section-CFBYhsUi.js.map +1 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
- package/dist/chunks/segmented-D9i1avik.js +119 -0
- package/dist/chunks/segmented-D9i1avik.js.map +1 -0
- package/dist/chunks/select-BqjmQOqx.js +222 -0
- package/dist/chunks/select-BqjmQOqx.js.map +1 -0
- package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
- package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
- package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
- package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
- package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
- package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
- package/dist/chunks/slider-CcE8GtuV.js +58 -0
- package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
- package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
- package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
- package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
- package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
- package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
- package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
- package/dist/chunks/switch-ngywMQdl.js +76 -0
- package/dist/chunks/switch-ngywMQdl.js.map +1 -0
- package/dist/chunks/table-CTK5E0J7.js +102 -0
- package/dist/chunks/table-CTK5E0J7.js.map +1 -0
- package/dist/chunks/tag-BGr6lTSV.js +100 -0
- package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
- package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
- package/dist/chunks/text-DkKdTVUf.js.map +1 -0
- package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
- package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
- package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
- package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
- package/dist/chunks/truncated-d1afmUJT.js +33 -0
- package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
- package/dist/chunks/{zh-CN-29X4CDLE.js → zh-CN-BlpsT6d_.js} +80 -39
- package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
- package/dist/components/agent-avatar.js +1 -1
- 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 +22 -22
- 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 +235 -160
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +144 -99
- package/dist/components/charts/donut.js.map +1 -1
- package/dist/components/charts/gauge.js +61 -49
- package/dist/components/charts/gauge.js.map +1 -1
- package/dist/components/charts/heatmap.js +179 -70
- package/dist/components/charts/heatmap.js.map +1 -1
- package/dist/components/charts/sankey.js +144 -77
- package/dist/components/charts/sankey.js.map +1 -1
- package/dist/components/charts/sparkline.js +54 -38
- package/dist/components/charts/sparkline.js.map +1 -1
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +4 -3
- package/dist/components/code.js +1 -1
- package/dist/components/collapsible.js +77 -1
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +89 -66
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +1 -459
- package/dist/components/date-picker.js +162 -151
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +74 -63
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +76 -64
- 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/figure.js +2 -2
- package/dist/components/filter-chip.js +36 -27
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +4 -4
- package/dist/components/filter-row.js.map +1 -1
- package/dist/components/flow.js +94 -63
- package/dist/components/flow.js.map +1 -1
- package/dist/components/heading.js +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/input.js +176 -98
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +51 -46
- package/dist/components/kaeso/conversation.js.map +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +23 -20
- package/dist/components/kaeso/moments.js.map +1 -1
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +90 -74
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +200 -187
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/key-value.js +32 -47
- package/dist/components/key-value.js.map +1 -1
- package/dist/components/label.js +1 -25
- package/dist/components/layout.js +2 -2
- package/dist/components/layout.js.map +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/loader.js +11 -10
- package/dist/components/loader.js.map +1 -1
- 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 +644 -529
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +4 -4
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal.js +1 -1
- package/dist/components/qr-code.js +2 -2
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +1 -1
- 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 +39 -46
- package/dist/components/settings.js.map +1 -1
- package/dist/components/sheet.js +10 -9
- 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 +98 -84
- 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 +73 -55
- 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 +5 -2
- package/dist/components/theme-menu.js.map +1 -1
- package/dist/components/theme-select.js +1 -1
- package/dist/components/thumbnail.js +35 -24
- package/dist/components/thumbnail.js.map +1 -1
- package/dist/components/timeline.js +51 -35
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/toast.js +76 -66
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toc.js +14 -8
- package/dist/components/toc.js.map +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/i18n-provider.js +1 -1
- package/dist/index.js +101 -101
- package/dist/kaeso.css +605 -67
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
- package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
- package/dist/types/components/badge/badge.d.ts +3 -3
- package/dist/types/components/banner/banner.d.ts +3 -3
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button-group/button-group.d.ts +1 -1
- package/dist/types/components/charts/domain.d.ts +11 -0
- package/dist/types/components/charts/marks.d.ts +1 -0
- package/dist/types/components/code/code.d.ts +3 -3
- package/dist/types/components/code-block/diff-view.d.ts +30 -0
- package/dist/types/components/code-block/diff.d.ts +26 -0
- package/dist/types/components/code-block/docs.d.ts +14 -0
- package/dist/types/components/code-block/index.d.ts +1 -0
- package/dist/types/components/code-block/json-view.d.ts +2 -1
- package/dist/types/components/code-block/numbers.d.ts +1 -0
- package/dist/types/components/collapsible/collapsible.d.ts +2 -2
- package/dist/types/components/collapsible/disclosure.d.ts +2 -0
- package/dist/types/components/data-table/data-table.d.ts +6 -5
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/data-table/time-columns.d.ts +1 -0
- package/dist/types/components/date-picker/focus-day.d.ts +1 -0
- package/dist/types/components/date-picker/iso-field.d.ts +8 -1
- package/dist/types/components/dialog/dialog.d.ts +7 -7
- package/dist/types/components/field/field.d.ts +1 -1
- package/dist/types/components/flow/flow.d.ts +1 -1
- package/dist/types/components/icon-button/icon-button.d.ts +1 -1
- package/dist/types/components/input/input-group.d.ts +2 -0
- package/dist/types/components/input/number-input.d.ts +4 -4
- package/dist/types/components/input/otp-input.d.ts +3 -3
- package/dist/types/components/kaeso/client-button.d.ts +2 -1
- package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
- package/dist/types/components/kaeso/rights.d.ts +1 -1
- package/dist/types/components/kaeso/role-picker.d.ts +1 -0
- package/dist/types/components/key-value/key-value.d.ts +2 -2
- package/dist/types/components/layout/layout.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +4 -4
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -1
- package/dist/types/components/menu/styles.d.ts +3 -3
- package/dist/types/components/meter/meter.d.ts +3 -3
- package/dist/types/components/page-header/page-header.d.ts +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
- package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
- package/dist/types/components/playground/reasoning.d.ts +1 -0
- package/dist/types/components/popover/popover.d.ts +1 -1
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/section/section-header.d.ts +6 -0
- package/dist/types/components/segmented/segmented.d.ts +1 -0
- package/dist/types/components/select/select.d.ts +1 -1
- package/dist/types/components/sheet/sheet.d.ts +3 -3
- package/dist/types/components/sidebar/sidebar.d.ts +1 -0
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +6 -4
- package/dist/types/components/text/truncated.d.ts +7 -0
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/toc/toc.d.ts +1 -1
- package/dist/types/components/toolbar/toolbar.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
- package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
- package/dist/types/hooks/use-hydrating.d.ts +1 -0
- package/dist/types/icons/groups.d.ts +1 -1
- package/dist/types/icons/vocabulary.d.ts +5 -0
- package/dist/types/utils/arrow-focus.d.ts +4 -1
- package/dist/types/utils/cn.d.ts +33 -0
- package/dist/types/utils/portal-context.d.ts +7 -1
- package/dist/utils.js +2 -2
- package/foundations/accessibility.md +3 -2
- package/foundations/color.md +5 -1
- package/foundations/elevation.md +1 -0
- package/foundations/motion.md +1 -1
- package/foundations/shape.md +2 -2
- package/foundations/typography.md +12 -12
- package/package.json +2 -2
- package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
- package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
- package/dist/chunks/app-frame-DogGRmsu.js +0 -221
- package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
- package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
- package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
- package/dist/chunks/avatar-CWbdwbJv.js +0 -83
- package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
- package/dist/chunks/badge-C2KtxCLB.js +0 -26
- package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
- package/dist/chunks/banner-BA2ALw9M.js +0 -85
- package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
- package/dist/chunks/button-CzuxqawA.js +0 -164
- package/dist/chunks/button-CzuxqawA.js.map +0 -1
- package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
- package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
- package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
- package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
- package/dist/chunks/code-block-D5A-CGXG.js +0 -330
- package/dist/chunks/code-block-D5A-CGXG.js.map +0 -1
- package/dist/chunks/code-tqj0uhBL.js.map +0 -1
- package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
- package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
- package/dist/chunks/combobox-DjDI7SUC.js +0 -319
- package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
- package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
- package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
- package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
- package/dist/chunks/core-BYns5ytV.js +0 -472
- package/dist/chunks/core-BYns5ytV.js.map +0 -1
- package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
- package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
- package/dist/chunks/de-CPXJh9cq.js.map +0 -1
- package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
- package/dist/chunks/field-TviMvYa2.js.map +0 -1
- package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
- package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
- package/dist/chunks/icon-DVooQfk4.js +0 -94
- package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
- package/dist/chunks/input-2VJuj_M4.js.map +0 -1
- package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
- package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
- package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
- package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
- package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
- package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
- package/dist/chunks/link-KWI7PevW.js.map +0 -1
- package/dist/chunks/list-M1csq-d4.js +0 -494
- package/dist/chunks/list-M1csq-d4.js.map +0 -1
- package/dist/chunks/markdown-DULktoTK.js +0 -313
- package/dist/chunks/markdown-DULktoTK.js.map +0 -1
- package/dist/chunks/menu-DEmBfdPm.js +0 -450
- package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
- package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
- package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
- package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
- package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
- package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
- package/dist/chunks/page-header-DL2y2iZp.js +0 -41
- package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
- package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
- package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
- package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
- package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
- package/dist/chunks/popover-DNN4S47w.js +0 -50
- package/dist/chunks/popover-DNN4S47w.js.map +0 -1
- package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
- package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
- package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
- package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
- package/dist/chunks/release-art-ZwfFQImt.js +0 -561
- package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
- package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
- package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
- package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
- package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
- package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
- package/dist/chunks/section-Ce1efbsP.js +0 -87
- package/dist/chunks/section-Ce1efbsP.js.map +0 -1
- package/dist/chunks/segmented-CErcoxwi.js +0 -114
- package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
- package/dist/chunks/select-x4XVsdCI.js +0 -210
- package/dist/chunks/select-x4XVsdCI.js.map +0 -1
- package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
- package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
- package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
- package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
- package/dist/chunks/slider-Ci83PGtj.js +0 -57
- package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
- package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
- package/dist/chunks/switch-BNMq_kGt.js +0 -59
- package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
- package/dist/chunks/table-BeOSKl_3.js +0 -84
- package/dist/chunks/table-BeOSKl_3.js.map +0 -1
- package/dist/chunks/tag-D_M1s2qS.js +0 -87
- package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
- package/dist/chunks/text-CIXH8rmT.js.map +0 -1
- package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
- package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
- package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
- package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
- package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
- package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
- package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
- package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
- package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
- package/dist/chunks/zh-CN-29X4CDLE.js.map +0 -1
- package/dist/components/data-table.js.map +0 -1
- package/dist/components/label.js.map +0 -1
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
|
+
import { n as t } from "./use-layout-width-CbSDbRb0.js";
|
|
4
|
+
import { createElement as n, forwardRef as r, useId as i, useLayoutEffect as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
import { art as d, font as f } from "@logicplanes/kaeso-tokens";
|
|
7
|
+
//#region src/components/release-art/drawing.ts
|
|
8
|
+
var p = [
|
|
9
|
+
"bauhaus",
|
|
10
|
+
"albers",
|
|
11
|
+
"stripes",
|
|
12
|
+
"waves",
|
|
13
|
+
"truchet",
|
|
14
|
+
"arcs",
|
|
15
|
+
"phyllotaxis",
|
|
16
|
+
"spiro"
|
|
17
|
+
], m = {
|
|
18
|
+
banner: {
|
|
19
|
+
w: 640,
|
|
20
|
+
h: 360
|
|
21
|
+
},
|
|
22
|
+
wide: {
|
|
23
|
+
w: 840,
|
|
24
|
+
h: 360
|
|
25
|
+
}
|
|
26
|
+
}, h = 40, g = {
|
|
27
|
+
rx: h * 7.5,
|
|
28
|
+
ry: h * 7.5
|
|
29
|
+
};
|
|
30
|
+
function _(e) {
|
|
31
|
+
let t = 2166136261;
|
|
32
|
+
for (let n = 0; n < e.length; n++) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
|
|
33
|
+
return t >>> 0;
|
|
34
|
+
}
|
|
35
|
+
function v(e) {
|
|
36
|
+
let t = e >>> 0;
|
|
37
|
+
return () => {
|
|
38
|
+
t = t + 1831565813 >>> 0;
|
|
39
|
+
let e = t;
|
|
40
|
+
return e = Math.imul(e ^ e >>> 15, e | 1), e ^= e + Math.imul(e ^ e >>> 7, e | 61), ((e ^ e >>> 14) >>> 0) / 4294967296;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function y(e) {
|
|
44
|
+
if (typeof e != "object" || !e) return !1;
|
|
45
|
+
let t = e;
|
|
46
|
+
return t.version === 1 && typeof t.seed == "number" && Number.isInteger(t.seed) && t.seed >= 0 && t.seed <= 4294967295 && typeof t.style == "string" && p.includes(t.style) && typeof t.palette == "number" && Number.isInteger(t.palette) && t.palette >= 0 && t.palette < d.palettes.length;
|
|
47
|
+
}
|
|
48
|
+
function b(e = Math.random) {
|
|
49
|
+
let t = (t) => Math.min(t - 1, Math.floor(e() * t));
|
|
50
|
+
return {
|
|
51
|
+
version: 1,
|
|
52
|
+
seed: Math.min(4294967295, Math.floor(e() * 4294967296)),
|
|
53
|
+
style: p[t(p.length)] ?? "bauhaus",
|
|
54
|
+
palette: t(d.palettes.length)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function x(e, t = Math.random) {
|
|
58
|
+
let n = e.slice(-3), r = p.filter((e) => !n.some((t) => t.style === e)), i = d.palettes.map((e, t) => t).filter((t) => !e.slice(-4).some((e) => e.palette === t)), a = new Set(e.map((e) => e.seed)), o = (e) => e[Math.min(e.length - 1, Math.floor(t() * e.length))], s = Math.min(4294967295, Math.floor(t() * 4294967296));
|
|
59
|
+
for (; a.has(s);) s = s + 1 >>> 0;
|
|
60
|
+
return {
|
|
61
|
+
version: 1,
|
|
62
|
+
seed: s,
|
|
63
|
+
style: o(r) ?? "bauhaus",
|
|
64
|
+
palette: o(i) ?? 0
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function S(e) {
|
|
68
|
+
let t = _(e);
|
|
69
|
+
return {
|
|
70
|
+
version: 1,
|
|
71
|
+
seed: t,
|
|
72
|
+
style: p[t % p.length] ?? "bauhaus",
|
|
73
|
+
palette: (t >>> 8) % d.palettes.length
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
var C = (e) => Math.round(e * 100) / 100, w = (e, t, n) => n ? {
|
|
77
|
+
tag: e,
|
|
78
|
+
attrs: t,
|
|
79
|
+
children: n
|
|
80
|
+
} : {
|
|
81
|
+
tag: e,
|
|
82
|
+
attrs: t
|
|
83
|
+
}, T = (e, t, n) => (t / g.rx) ** 2 + ((e.h - n) / g.ry) ** 2 < 1, E = (e, t) => {
|
|
84
|
+
let n = (e.h - t) / g.ry;
|
|
85
|
+
return n >= 1 ? 0 : g.rx * Math.sqrt(1 - n * n);
|
|
86
|
+
}, D = (e, t) => w("g", { mask: `url(#${e.id("clear")})` }, t);
|
|
87
|
+
function O(e, t, n, r, i, a) {
|
|
88
|
+
let o = [], s = e.int(0, 7), c = `rotate(${e.int(0, 3) * 90} ${C(t + r / 2)} ${C(n + r / 2)})`;
|
|
89
|
+
e.chance(.55) && o.push(w("rect", {
|
|
90
|
+
x: t,
|
|
91
|
+
y: n,
|
|
92
|
+
width: r,
|
|
93
|
+
height: r,
|
|
94
|
+
fill: i
|
|
95
|
+
}));
|
|
96
|
+
let l = o.length ? a : i;
|
|
97
|
+
switch (s) {
|
|
98
|
+
case 0:
|
|
99
|
+
o.push(w("path", {
|
|
100
|
+
d: `M${t} ${n}L${t + r} ${n}A${r} ${r} 0 0 1 ${t} ${n + r}Z`,
|
|
101
|
+
fill: l,
|
|
102
|
+
transform: c
|
|
103
|
+
}));
|
|
104
|
+
break;
|
|
105
|
+
case 1:
|
|
106
|
+
o.push(w("path", {
|
|
107
|
+
d: `M${t} ${n + r}A${r / 2} ${r / 2} 0 0 1 ${t + r} ${n + r}Z`,
|
|
108
|
+
fill: l,
|
|
109
|
+
transform: c
|
|
110
|
+
}));
|
|
111
|
+
break;
|
|
112
|
+
case 2:
|
|
113
|
+
o.push(w("circle", {
|
|
114
|
+
cx: t + r / 2,
|
|
115
|
+
cy: n + r / 2,
|
|
116
|
+
r: r / 2,
|
|
117
|
+
fill: l
|
|
118
|
+
}));
|
|
119
|
+
break;
|
|
120
|
+
case 3:
|
|
121
|
+
o.push(w("path", {
|
|
122
|
+
d: `M${t} ${n}L${t + r} ${n + r}L${t} ${n + r}Z`,
|
|
123
|
+
fill: l,
|
|
124
|
+
transform: c
|
|
125
|
+
}));
|
|
126
|
+
break;
|
|
127
|
+
case 4:
|
|
128
|
+
o.push(w("circle", {
|
|
129
|
+
cx: t + r / 2,
|
|
130
|
+
cy: n + r / 2,
|
|
131
|
+
r: r / 4,
|
|
132
|
+
fill: l
|
|
133
|
+
}));
|
|
134
|
+
break;
|
|
135
|
+
case 5:
|
|
136
|
+
for (let e = 0; e < 3; e++) o.push(w("rect", {
|
|
137
|
+
x: t + e * r / 3,
|
|
138
|
+
y: n,
|
|
139
|
+
width: r / 6,
|
|
140
|
+
height: r,
|
|
141
|
+
fill: l,
|
|
142
|
+
transform: c
|
|
143
|
+
}));
|
|
144
|
+
break;
|
|
145
|
+
case 6:
|
|
146
|
+
o.push(w("path", {
|
|
147
|
+
d: `M${t} ${n}L${t + r} ${n}L${t + r / 2} ${n + r / 2}Z`,
|
|
148
|
+
fill: l,
|
|
149
|
+
transform: c
|
|
150
|
+
})), o.push(w("path", {
|
|
151
|
+
d: `M${t} ${n + r}L${t + r} ${n + r}L${t + r / 2} ${n + r / 2}Z`,
|
|
152
|
+
fill: l,
|
|
153
|
+
transform: c
|
|
154
|
+
}));
|
|
155
|
+
break;
|
|
156
|
+
default: o.push(w("path", {
|
|
157
|
+
d: `M${t} ${n}A${r} ${r} 0 0 1 ${t + r} ${n + r}L${t} ${n + r}Z`,
|
|
158
|
+
fill: l,
|
|
159
|
+
transform: c
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
return o;
|
|
163
|
+
}
|
|
164
|
+
function k(e) {
|
|
165
|
+
let t = /* @__PURE__ */ new Set(), n = (e, t) => `${e},${t}`, r = (t, n) => T(e, t * h, (n + 1) * h), i = [], a = e.int(2, 4);
|
|
166
|
+
for (let o = 0; o < a; o++) {
|
|
167
|
+
let a = e.int(2, 3);
|
|
168
|
+
for (let o = 0; o < 20; o++) {
|
|
169
|
+
let o = e.int(0, e.cols - a), s = e.int(0, e.rows - a), c = !0;
|
|
170
|
+
for (let e = 0; e < a && c; e++) for (let i = 0; i < a && c; i++) c = !t.has(n(o + e, s + i)) && !r(o + e, s + i);
|
|
171
|
+
if (!c) continue;
|
|
172
|
+
for (let e = 0; e < a; e++) for (let r = 0; r < a; r++) t.add(n(o + e, s + r));
|
|
173
|
+
let l = e.int(0, 3);
|
|
174
|
+
i.push(...O(e, o * h, s * h, a * h, e.color(l), e.color(l + e.int(1, 3))));
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
let o = e.between(.55, .85);
|
|
179
|
+
for (let a = 0; a < e.cols; a++) for (let s = 0; s < e.rows; s++) {
|
|
180
|
+
if (t.has(n(a, s)) || r(a, s) || !e.chance(o)) continue;
|
|
181
|
+
let c = e.int(0, 3);
|
|
182
|
+
i.push(...O(e, a * h, s * h, h, e.color(c), e.color(c + e.int(1, 3))));
|
|
183
|
+
}
|
|
184
|
+
return i;
|
|
185
|
+
}
|
|
186
|
+
function A(e) {
|
|
187
|
+
let t = (e.h - 240) / 2, n = g.rx - h / 2, r = e.w - t - 240, i = n + Math.round(e.next() * Math.max(0, r - n) / (h / 2)) * (h / 2), a = e.int(3, 4), o = [
|
|
188
|
+
0,
|
|
189
|
+
1,
|
|
190
|
+
2,
|
|
191
|
+
3
|
|
192
|
+
];
|
|
193
|
+
for (let t = o.length - 1; t > 0; t--) {
|
|
194
|
+
let n = Math.floor(e.next() * (t + 1));
|
|
195
|
+
[o[t], o[n]] = [o[n] ?? n, o[t] ?? t];
|
|
196
|
+
}
|
|
197
|
+
return Array.from({ length: a }, (n, r) => w("rect", {
|
|
198
|
+
x: i + 24 * r,
|
|
199
|
+
y: t + 36 * r,
|
|
200
|
+
width: 240 - 48 * r,
|
|
201
|
+
height: 240 - 48 * r,
|
|
202
|
+
fill: e.color(o[r] ?? r)
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
function j(e, t, n, r) {
|
|
206
|
+
let i = Math.hypot(e.w, e.h), a = [], o = -i, s = 0;
|
|
207
|
+
for (; o < i;) {
|
|
208
|
+
let t = n[s % n.length] ?? h;
|
|
209
|
+
a.push(w("rect", {
|
|
210
|
+
x: C(o),
|
|
211
|
+
y: C(-i),
|
|
212
|
+
width: t,
|
|
213
|
+
height: C(i * 2),
|
|
214
|
+
fill: e.color(s + r)
|
|
215
|
+
})), o += t, s += 1;
|
|
216
|
+
}
|
|
217
|
+
return w("g", { transform: `translate(${e.w / 2} ${e.h / 2}) rotate(${t})` }, a);
|
|
218
|
+
}
|
|
219
|
+
function M(e) {
|
|
220
|
+
let t = [
|
|
221
|
+
0,
|
|
222
|
+
90,
|
|
223
|
+
45,
|
|
224
|
+
-45,
|
|
225
|
+
30,
|
|
226
|
+
-60
|
|
227
|
+
][e.int(0, 5)] ?? 0, n = Array.from({ length: e.int(5, 9) }, () => h / 2 * e.int(1, 5)), r = e.id("disc"), i = h * e.int(2, 3) + h / 2, a = h * e.int(Math.ceil((g.rx + i) / h), e.cols - 2), o = h * e.int(3, e.rows - 3);
|
|
228
|
+
return [
|
|
229
|
+
w("defs", {}, [w("clipPath", { id: r }, [w("circle", {
|
|
230
|
+
cx: a,
|
|
231
|
+
cy: o,
|
|
232
|
+
r: i
|
|
233
|
+
})])]),
|
|
234
|
+
D(e, [j(e, t, n, 0)]),
|
|
235
|
+
w("g", { clipPath: `url(#${r})` }, [w("rect", {
|
|
236
|
+
width: e.w,
|
|
237
|
+
height: e.h,
|
|
238
|
+
fill: e.ground
|
|
239
|
+
}), j(e, t + 90, n, 1)])
|
|
240
|
+
];
|
|
241
|
+
}
|
|
242
|
+
function N(e) {
|
|
243
|
+
let t = [], n = e.int(14, 18), r = h * 2.5, i = (e.h - h - r) / (n - 1), a = e.w * e.between(.58, .74), o = e.w * e.between(.09, .14), s = e.chance(.6) ? e.int(2, n - 3) : -1;
|
|
244
|
+
for (let c = 0; c < n; c++) {
|
|
245
|
+
let n = r + c * i, l = Array.from({ length: e.int(3, 5) }, () => ({
|
|
246
|
+
x: a + e.between(-1.2, 1.2) * o,
|
|
247
|
+
h: e.between(.3, 1),
|
|
248
|
+
s: e.between(9, 22)
|
|
249
|
+
})), u = [e.between(0, 6.28), e.between(0, 6.28)], d = Math.max(h, Math.ceil((E(e, n) + h / 2) / 4) * 4), f = [];
|
|
250
|
+
for (let t = d; t <= e.w - h; t += 4) {
|
|
251
|
+
let e = Math.exp(-((t - a) ** 2) / (2 * o * o)), n = 0;
|
|
252
|
+
for (let e of l) n += e.h * Math.exp(-((t - e.x) ** 2) / (2 * e.s * e.s));
|
|
253
|
+
let r = Math.sin(t * .21 + (u[0] ?? 0)) * .6 + Math.sin(t * .53 + (u[1] ?? 0)) * .4;
|
|
254
|
+
f.push([t, n * e + r * .04 * (.15 + e)]);
|
|
255
|
+
}
|
|
256
|
+
let p = Math.max(...f.map(([, e]) => e), .001), m = Math.min(i * e.between(2.4, 4.4), n - h), g = `M${f.map(([e, t]) => `${e} ${C(n - t / p * m)}`).join("L")}`;
|
|
257
|
+
t.push(w("path", {
|
|
258
|
+
d: `${g}L${e.w - h} ${C(n + i)}L${d} ${C(n + i)}Z`,
|
|
259
|
+
fill: e.ground
|
|
260
|
+
})), t.push(w("path", {
|
|
261
|
+
d: g,
|
|
262
|
+
fill: "none",
|
|
263
|
+
stroke: c === s ? e.color(1) : e.color(0),
|
|
264
|
+
strokeWidth: 2,
|
|
265
|
+
strokeLinejoin: "round",
|
|
266
|
+
strokeLinecap: "round"
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
return t;
|
|
270
|
+
}
|
|
271
|
+
function P(e) {
|
|
272
|
+
let t = C(80 * e.between(.2, .3)), n = e.chance(.5), r = [], i = Math.ceil(e.w / 80), a = Math.ceil(e.h / 80);
|
|
273
|
+
for (let t = 0; t < i; t++) for (let n = 0; n < a; n++) {
|
|
274
|
+
let i = t * 80, a = e.h - (n + 1) * 80;
|
|
275
|
+
if (T(e, i, a + 80)) continue;
|
|
276
|
+
let o = e.chance(.5) ? `M${i + 40} ${a}A40 40 0 0 1 ${i} ${a + 40}M${i + 80} ${a + 40}A40 40 0 0 0 ${i + 40} ${a + 80}` : `M${i + 40} ${a}A40 40 0 0 0 ${i + 80} ${a + 40}M${i} ${a + 40}A40 40 0 0 1 ${i + 40} ${a + 80}`;
|
|
277
|
+
r.push(w("path", { d: o }));
|
|
278
|
+
}
|
|
279
|
+
let o = [w("g", {
|
|
280
|
+
fill: "none",
|
|
281
|
+
stroke: e.color(0),
|
|
282
|
+
strokeWidth: t
|
|
283
|
+
}, r)];
|
|
284
|
+
return n && o.push(w("g", {
|
|
285
|
+
fill: "none",
|
|
286
|
+
stroke: e.color(1),
|
|
287
|
+
strokeWidth: C(t * .34)
|
|
288
|
+
}, r)), o;
|
|
289
|
+
}
|
|
290
|
+
function F(e, t, n) {
|
|
291
|
+
let r = Infinity;
|
|
292
|
+
for (let i = 0; i <= 90; i++) {
|
|
293
|
+
let a = i / 90 * (Math.PI / 2);
|
|
294
|
+
r = Math.min(r, Math.hypot(t - g.rx * Math.cos(a), n - (e.h - g.ry * Math.sin(a))));
|
|
295
|
+
}
|
|
296
|
+
return T(e, t, n) ? 0 : r;
|
|
297
|
+
}
|
|
298
|
+
function I(e) {
|
|
299
|
+
let t = [], n = e.int(2, 3), r = [
|
|
300
|
+
[h * e.int(4, e.cols - 2), 0],
|
|
301
|
+
[h * e.int(11, e.cols - 1), e.h],
|
|
302
|
+
[e.w, h * e.int(2, e.rows - 2)],
|
|
303
|
+
[e.w, 0],
|
|
304
|
+
[e.w, e.h],
|
|
305
|
+
[0, 0]
|
|
306
|
+
];
|
|
307
|
+
for (let t = r.length - 1; t > 0; t--) {
|
|
308
|
+
let n = Math.floor(e.next() * (t + 1));
|
|
309
|
+
[r[t], r[n]] = [r[n] ?? [e.w, 0], r[t] ?? [e.w, 0]];
|
|
310
|
+
}
|
|
311
|
+
let i = 0;
|
|
312
|
+
for (let [a, o] of r) {
|
|
313
|
+
if (i === n) break;
|
|
314
|
+
let r = h / 2 * e.int(1, 2), s = Math.floor((F(e, a, o) - h / 2) / r), c = Math.min(s, e.int(4, 10));
|
|
315
|
+
if (c < 3) continue;
|
|
316
|
+
let l = e.int(0, 3), u = e.chance(.4);
|
|
317
|
+
for (let n = c; n >= 1; n--) t.push(w("circle", {
|
|
318
|
+
cx: a,
|
|
319
|
+
cy: o,
|
|
320
|
+
r: n * r,
|
|
321
|
+
fill: n === 1 && u ? e.ground : e.color(n + l)
|
|
322
|
+
}));
|
|
323
|
+
i += 1;
|
|
324
|
+
}
|
|
325
|
+
return t;
|
|
326
|
+
}
|
|
327
|
+
var L = 2.399963229728653;
|
|
328
|
+
function R(e) {
|
|
329
|
+
let t = [], n = e.w - e.h / 2 - h * e.int(0, 2), r = e.h / 2 + h * e.int(-1, 1), i = e.between(11, 14), a = [
|
|
330
|
+
8,
|
|
331
|
+
13,
|
|
332
|
+
21
|
|
333
|
+
][e.int(0, 2)] ?? 13, o = e.chance(.35), s = Math.hypot(e.w, e.h);
|
|
334
|
+
for (let c = 1;; c++) {
|
|
335
|
+
let l = i * Math.sqrt(c);
|
|
336
|
+
if (l > s) break;
|
|
337
|
+
let u = n + l * Math.cos(c * L), d = r + l * Math.sin(c * L), f = i * (.3 + .12 * Math.min(1, l / (e.h / 2)));
|
|
338
|
+
if (u < -f || u > e.w + f || d < -f || d > e.h + f || T(e, u, d) || F(e, u, d) < f + h / 4) continue;
|
|
339
|
+
let p = o ? Math.floor(l / (h * 1.5)) % 4 : Math.floor(c % a / a * 4);
|
|
340
|
+
t.push(w("circle", {
|
|
341
|
+
cx: C(u),
|
|
342
|
+
cy: C(d),
|
|
343
|
+
r: C(f),
|
|
344
|
+
fill: e.color(p)
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
return t;
|
|
348
|
+
}
|
|
349
|
+
function z(e, t) {
|
|
350
|
+
return t ? z(t, e % t) : e;
|
|
351
|
+
}
|
|
352
|
+
function B(e) {
|
|
353
|
+
let t = [], n = e.w - e.h / 2, r = e.h / 2, i = e.h / 2 - h, a = e.int(7, 13), o = e.int(2, a - 2);
|
|
354
|
+
for (; z(a, o) !== 1;) o = e.int(2, a - 2);
|
|
355
|
+
let s = e.chance(.5) ? 2 : 1;
|
|
356
|
+
for (let c = 0; c < s; c++) {
|
|
357
|
+
let s = o * e.between(.75, 1.05), l = (a - o) / o, u = a - o + s, d = o / z(a, o), f = d * 360, p = [], m = i * (c === 0 ? 1 : e.between(.4, .55)) / u;
|
|
358
|
+
for (let e = 0; e <= f; e++) {
|
|
359
|
+
let t = e / f * d * Math.PI * 2, i = (a - o) * Math.cos(t) + s * Math.cos(l * t), c = (a - o) * Math.sin(t) - s * Math.sin(l * t);
|
|
360
|
+
p.push(`${C(n + i * m)} ${C(r + c * m)}`);
|
|
361
|
+
}
|
|
362
|
+
let h = `M${p.join("L")}Z`;
|
|
363
|
+
t.push(w("path", {
|
|
364
|
+
d: h,
|
|
365
|
+
fill: e.color(c),
|
|
366
|
+
fillRule: "evenodd"
|
|
367
|
+
}));
|
|
368
|
+
}
|
|
369
|
+
return t;
|
|
370
|
+
}
|
|
371
|
+
var V = {
|
|
372
|
+
bauhaus: k,
|
|
373
|
+
albers: A,
|
|
374
|
+
stripes: M,
|
|
375
|
+
waves: N,
|
|
376
|
+
truchet: P,
|
|
377
|
+
arcs: I,
|
|
378
|
+
phyllotaxis: R,
|
|
379
|
+
spiro: B
|
|
380
|
+
}, H = (e) => d.palettes[e.palette % d.palettes.length] ?? d.palettes[0];
|
|
381
|
+
function U(e) {
|
|
382
|
+
return {
|
|
383
|
+
color: d.grounds[H(e).ground].text,
|
|
384
|
+
eyebrow: {
|
|
385
|
+
x: h,
|
|
386
|
+
bottom: 96
|
|
387
|
+
},
|
|
388
|
+
title: {
|
|
389
|
+
x: 38,
|
|
390
|
+
bottom: h
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
function W(e, t = {}) {
|
|
395
|
+
let { w: n, h: r } = m[t.shape ?? "banner"], i = v(e.seed), a = (e, t) => e + i() * (t - e), o = (e, t) => Math.min(t, e + Math.floor(i() * (t - e + 1))), s = H(e), c = U(e), l = d.grounds[s.ground], u = [...s.colors];
|
|
396
|
+
for (let e = u.length - 1; e > 0; e--) {
|
|
397
|
+
let t = Math.floor(i() * (e + 1));
|
|
398
|
+
[u[e], u[t]] = [u[t] ?? l.text, u[e] ?? l.text];
|
|
399
|
+
}
|
|
400
|
+
let p = t.idPrefix ?? "art", _ = {
|
|
401
|
+
w: n,
|
|
402
|
+
h: r,
|
|
403
|
+
cols: n / h,
|
|
404
|
+
rows: r / h,
|
|
405
|
+
next: i,
|
|
406
|
+
between: a,
|
|
407
|
+
int: o,
|
|
408
|
+
chance: (e) => i() < e,
|
|
409
|
+
ground: l.fill,
|
|
410
|
+
color: (e) => u[(e % u.length + u.length) % u.length] ?? l.text,
|
|
411
|
+
id: (e) => `${p}-${e}`
|
|
412
|
+
}, y = _.id("clear"), b = V[e.style](_), x = [];
|
|
413
|
+
return t.eyebrow && x.push({
|
|
414
|
+
tag: "text",
|
|
415
|
+
attrs: {
|
|
416
|
+
x: c.eyebrow.x,
|
|
417
|
+
y: r - c.eyebrow.bottom,
|
|
418
|
+
fill: c.color,
|
|
419
|
+
fillOpacity: .7,
|
|
420
|
+
fontSize: 16,
|
|
421
|
+
fontWeight: 500,
|
|
422
|
+
letterSpacing: .1,
|
|
423
|
+
fontFamily: f.sans
|
|
424
|
+
},
|
|
425
|
+
text: t.eyebrow
|
|
426
|
+
}), t.title && x.push({
|
|
427
|
+
tag: "text",
|
|
428
|
+
attrs: {
|
|
429
|
+
x: c.title.x,
|
|
430
|
+
y: r - c.title.bottom,
|
|
431
|
+
fill: c.color,
|
|
432
|
+
fontSize: 52,
|
|
433
|
+
fontWeight: 600,
|
|
434
|
+
letterSpacing: -1.5,
|
|
435
|
+
fontFamily: f.sans
|
|
436
|
+
},
|
|
437
|
+
text: t.title
|
|
438
|
+
}), w("svg", {
|
|
439
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
440
|
+
viewBox: `0 0 ${n} ${r}`
|
|
441
|
+
}, [
|
|
442
|
+
w("defs", {}, [w("mask", {
|
|
443
|
+
id: y,
|
|
444
|
+
maskUnits: "userSpaceOnUse",
|
|
445
|
+
x: 0,
|
|
446
|
+
y: 0,
|
|
447
|
+
width: n,
|
|
448
|
+
height: r
|
|
449
|
+
}, [w("rect", {
|
|
450
|
+
width: n,
|
|
451
|
+
height: r,
|
|
452
|
+
fill: "white"
|
|
453
|
+
}), w("ellipse", {
|
|
454
|
+
cx: 0,
|
|
455
|
+
cy: r,
|
|
456
|
+
rx: g.rx,
|
|
457
|
+
ry: g.ry,
|
|
458
|
+
fill: "black"
|
|
459
|
+
})])]),
|
|
460
|
+
w("rect", {
|
|
461
|
+
width: n,
|
|
462
|
+
height: r,
|
|
463
|
+
fill: l.fill
|
|
464
|
+
}),
|
|
465
|
+
...b,
|
|
466
|
+
...x
|
|
467
|
+
]);
|
|
468
|
+
}
|
|
469
|
+
var G = /* @__PURE__ */ new Set(["viewBox", "maskUnits"]), K = (e) => G.has(e) ? e : e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), q = (e) => e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
470
|
+
function J(e) {
|
|
471
|
+
let t = Object.entries(e.attrs).map(([e, t]) => ` ${K(e)}="${q(String(t))}"`).join(""), n = e.text === void 0 ? (e.children ?? []).map(J).join("") : q(e.text);
|
|
472
|
+
return n ? `<${e.tag}${t}>${n}</${e.tag}>` : `<${e.tag}${t}/>`;
|
|
473
|
+
}
|
|
474
|
+
//#endregion
|
|
475
|
+
//#region src/components/release-art/release-art.tsx
|
|
476
|
+
var Y = { shape: {
|
|
477
|
+
banner: { classes: "aspect-video" },
|
|
478
|
+
wide: { classes: "aspect-21/9" }
|
|
479
|
+
} }, X = { shape: "banner" };
|
|
480
|
+
function Z(e, t) {
|
|
481
|
+
return n(e.tag, {
|
|
482
|
+
...e.attrs,
|
|
483
|
+
key: t
|
|
484
|
+
}, e.text ?? e.children?.map(Z));
|
|
485
|
+
}
|
|
486
|
+
var Q = [
|
|
487
|
+
"text-display",
|
|
488
|
+
"text-title-lg",
|
|
489
|
+
"text-title",
|
|
490
|
+
"text-title-sm"
|
|
491
|
+
], ee = "text-title-sm";
|
|
492
|
+
function te(e, t, n) {
|
|
493
|
+
let r = t === null ? null : t >= 512 ? 0 : t >= 320 ? 1 : t >= 208 ? 2 : 3, [i, o] = c(null), s = `${r}|${n}`, l = r === null ? null : i?.key === s ? i.at : r;
|
|
494
|
+
return a(() => {
|
|
495
|
+
let t = e.current;
|
|
496
|
+
!t || l === null || l >= Q.length - 1 || t.scrollWidth > t.clientWidth + 1 && o({
|
|
497
|
+
key: s,
|
|
498
|
+
at: l + 1
|
|
499
|
+
});
|
|
500
|
+
}, [
|
|
501
|
+
l,
|
|
502
|
+
s,
|
|
503
|
+
e
|
|
504
|
+
]), l === null ? null : Q[l];
|
|
505
|
+
}
|
|
506
|
+
var $ = /* @__PURE__ */ r(function({ seed: n, label: r, art: a, src: d, title: f, eyebrow: p, shape: h = "banner", className: g }, _) {
|
|
507
|
+
let { w: v, h: y } = m[h], [b, x] = c(null), C = `art${i().replace(/[^a-zA-Z0-9]/g, "")}`, w = a ?? S(n), T = o(() => W(w, {
|
|
508
|
+
shape: h,
|
|
509
|
+
idPrefix: C
|
|
510
|
+
}), [
|
|
511
|
+
w,
|
|
512
|
+
h,
|
|
513
|
+
C
|
|
514
|
+
]), E = U(w), D = s(null), O = s(null), k = te(O, t(D), typeof f == "string" ? f : "");
|
|
515
|
+
return /* @__PURE__ */ u("span", {
|
|
516
|
+
ref: D,
|
|
517
|
+
className: e("@container relative block w-full", g),
|
|
518
|
+
children: [
|
|
519
|
+
/* @__PURE__ */ l("svg", {
|
|
520
|
+
ref: _,
|
|
521
|
+
viewBox: `0 0 ${v} ${y}`,
|
|
522
|
+
role: "img",
|
|
523
|
+
"aria-label": r,
|
|
524
|
+
preserveAspectRatio: "xMidYMid slice",
|
|
525
|
+
className: e("block w-full overflow-hidden rounded-well", Y.shape[h].classes),
|
|
526
|
+
children: d && b !== d ? /* @__PURE__ */ l("image", {
|
|
527
|
+
href: d,
|
|
528
|
+
width: v,
|
|
529
|
+
height: y,
|
|
530
|
+
preserveAspectRatio: "xMidYMid slice",
|
|
531
|
+
onError: () => x(d)
|
|
532
|
+
}) : T.children?.map(Z)
|
|
533
|
+
}),
|
|
534
|
+
(p || f) && /* @__PURE__ */ u("span", {
|
|
535
|
+
"aria-hidden": !0,
|
|
536
|
+
className: "pointer-events-none absolute flex flex-col items-start gap-4 text-balance",
|
|
537
|
+
style: {
|
|
538
|
+
left: `${E.eyebrow.x / v * 100}cqw`,
|
|
539
|
+
bottom: `${E.title.bottom / v * 100}cqw`,
|
|
540
|
+
maxWidth: `${236 / v * 100}cqw`,
|
|
541
|
+
hyphens: "auto",
|
|
542
|
+
color: E.color
|
|
543
|
+
},
|
|
544
|
+
children: [p && /* @__PURE__ */ l("span", {
|
|
545
|
+
className: "text-caption font-medium opacity-70 @cell-lg:text-body-lg",
|
|
546
|
+
children: p
|
|
547
|
+
}), f && /* @__PURE__ */ l("span", {
|
|
548
|
+
ref: O,
|
|
549
|
+
className: e("max-w-full font-semibold", k ?? "text-title-sm @cell-sm:text-title @cell-md:text-title-lg @cell-lg:text-display", k && k !== ee && "whitespace-nowrap"),
|
|
550
|
+
children: f
|
|
551
|
+
})]
|
|
552
|
+
}),
|
|
553
|
+
/* @__PURE__ */ l("span", {
|
|
554
|
+
"aria-hidden": !0,
|
|
555
|
+
className: "pointer-events-none absolute inset-0 rounded-well shadow-ring"
|
|
556
|
+
})
|
|
557
|
+
]
|
|
558
|
+
});
|
|
559
|
+
});
|
|
560
|
+
process.env.NODE_ENV !== "production" && ($.displayName = "ReleaseArt");
|
|
561
|
+
function ne({ seed: e, label: t, art: n, title: r, eyebrow: i, shape: a = "banner" }) {
|
|
562
|
+
let { w: o, h: s } = m[a], c = W(n ?? S(e), {
|
|
563
|
+
shape: a,
|
|
564
|
+
title: r,
|
|
565
|
+
eyebrow: i,
|
|
566
|
+
idPrefix: "art"
|
|
567
|
+
});
|
|
568
|
+
return J({
|
|
569
|
+
...c,
|
|
570
|
+
attrs: {
|
|
571
|
+
...c.attrs,
|
|
572
|
+
width: o * 2,
|
|
573
|
+
height: s * 2,
|
|
574
|
+
role: "img",
|
|
575
|
+
ariaLabel: t
|
|
576
|
+
}
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
//#endregion
|
|
580
|
+
export { p as a, b as c, ne as i, S as l, Y as n, y as o, $ as r, x as s, X as t };
|
|
581
|
+
|
|
582
|
+
//# sourceMappingURL=release-art-ChiT4T2S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-art-ChiT4T2S.js","names":["cn","useLayoutWidth","RELEASE_ART_STYLES","RELEASE_ART_VIEW","U","CLEAR","hash","h","i","text","random","a","seed","t","isReleaseArtSpec","value","v","art","randomReleaseArt","pick","n","next","nextReleaseArt","recent","previous","styles","p","s","palettes","seeds","list","releaseArtFor","round","node","children","open","x","c","y","clearEdge","dy","masked","primitive","out","kind","ink","accent","fill","bauhaus","taken","key","col","row","blocked","bigs","b","size","attempt","free","j","density","albers","margin","lo","hi","x0","levels","order","l","bands","diag","rects","w","widths","offset","angle","stripes","clip","r","cx","cy","waves","lines","top","gapY","peak","spread","base","bumps","ripple","start","raw","env","fine","max","lift","line","truchet","stroke","inner","paths","cols","rows","d","clearance","best","arcs","anchors","spots","placed","band","room","count","hollow","GOLDEN","phyllotaxis","step","arms","banded","reach","tone","gcd","spiro","radius","big","small","layers","pen","k","extent","turns","steps","points","scale","STYLE","paletteOf","spec","releaseArtText","drawReleaseArt","options","between","int","palette","place","ground","colors","prefix","canvas","name","mask","drawn","font","KEEP_CAMEL","attrName","m","escapeXml","serializeArt","attrs","KAESO_RELEASE_ART_VARIANTS","KAESO_RELEASE_ART_DEFAULT_VARIANTS","toElement","createElement","TITLE_SIZES","WRAP","useTitleFit","width","setStep","useState","title","at","useLayoutEffect","el","ref","ReleaseArt","shape","failed","setFailed","useId","useMemo","frame","useRef","heading","fit","className","label","src","eyebrow","releaseArtSvg"],"sources":["../../src/components/release-art/drawing.ts","../../src/components/release-art/release-art.tsx"],"sourcesContent":["import { art, font } from \"@logicplanes/kaeso-tokens\";\n\nexport const RELEASE_ART_STYLES = [\"bauhaus\", \"albers\", \"stripes\", \"waves\", \"truchet\", \"arcs\", \"phyllotaxis\", \"spiro\"] as const;\nexport type ReleaseArtStyle = (typeof RELEASE_ART_STYLES)[number];\n\nexport interface ReleaseArtSpec {\n version: 1;\n seed: number;\n style: ReleaseArtStyle;\n palette: number;\n}\n\nexport interface ArtNode {\n tag: string;\n attrs: Record<string, string | number>;\n children?: ArtNode[] | undefined;\n text?: string | undefined;\n}\n\nexport const RELEASE_ART_VIEW = { banner: { w: 640, h: 360 }, wide: { w: 840, h: 360 } } as const;\nexport type ReleaseArtShape = keyof typeof RELEASE_ART_VIEW;\n\nconst U = 40;\nconst CLEAR = { rx: U * 7.5, ry: U * 7.5 };\n\nfunction hash(text: string): number {\n let h = 2166136261;\n for (let i = 0; i < text.length; i++) {\n h ^= text.charCodeAt(i);\n h = Math.imul(h, 16777619);\n }\n return h >>> 0;\n}\n\nfunction random(seed: number): () => number {\n let a = seed >>> 0;\n return () => {\n a = (a + 0x6d2b79f5) >>> 0;\n let t = a;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n\nexport function isReleaseArtSpec(value: unknown): value is ReleaseArtSpec {\n if (typeof value !== \"object\" || value === null) return false;\n const v = value as Record<string, unknown>;\n return (\n v.version === 1 &&\n typeof v.seed === \"number\" &&\n Number.isInteger(v.seed) &&\n v.seed >= 0 &&\n v.seed <= 0xffffffff &&\n typeof v.style === \"string\" &&\n (RELEASE_ART_STYLES as readonly string[]).includes(v.style) &&\n typeof v.palette === \"number\" &&\n Number.isInteger(v.palette) &&\n v.palette >= 0 &&\n v.palette < art.palettes.length\n );\n}\n\nexport function randomReleaseArt(next: () => number = Math.random): ReleaseArtSpec {\n const pick = (n: number) => Math.min(n - 1, Math.floor(next() * n));\n return {\n version: 1,\n seed: Math.min(0xffffffff, Math.floor(next() * 0x100000000)),\n style: RELEASE_ART_STYLES[pick(RELEASE_ART_STYLES.length)] ?? \"bauhaus\",\n palette: pick(art.palettes.length),\n };\n}\n\nexport function nextReleaseArt(previous: readonly ReleaseArtSpec[], next: () => number = Math.random): ReleaseArtSpec {\n const recent = previous.slice(-3);\n const styles = RELEASE_ART_STYLES.filter((s) => !recent.some((p) => p.style === s));\n const palettes = art.palettes.map((_, i) => i).filter((i) => !previous.slice(-4).some((p) => p.palette === i));\n const seeds = new Set(previous.map((p) => p.seed));\n const pick = <T>(list: readonly T[]) => list[Math.min(list.length - 1, Math.floor(next() * list.length))];\n let seed = Math.min(0xffffffff, Math.floor(next() * 0x100000000));\n while (seeds.has(seed)) seed = (seed + 1) >>> 0;\n return { version: 1, seed, style: pick(styles) ?? \"bauhaus\", palette: pick(palettes) ?? 0 };\n}\n\nexport function releaseArtFor(text: string): ReleaseArtSpec {\n const seed = hash(text);\n return {\n version: 1,\n seed,\n style: RELEASE_ART_STYLES[seed % RELEASE_ART_STYLES.length] ?? \"bauhaus\",\n palette: (seed >>> 8) % art.palettes.length,\n };\n}\n\nconst round = (n: number) => Math.round(n * 100) / 100;\nconst node = (tag: string, attrs: ArtNode[\"attrs\"], children?: ArtNode[]): ArtNode => (children ? { tag, attrs, children } : { tag, attrs });\n\ninterface Canvas {\n w: number;\n h: number;\n cols: number;\n rows: number;\n next: () => number;\n between: (lo: number, hi: number) => number;\n int: (lo: number, hi: number) => number;\n chance: (p: number) => boolean;\n ground: string;\n color: (i: number) => string;\n id: (name: string) => string;\n}\n\nconst open = (c: Canvas, x: number, y: number) => (x / CLEAR.rx) ** 2 + ((c.h - y) / CLEAR.ry) ** 2 < 1;\nconst clearEdge = (c: Canvas, y: number) => {\n const dy = (c.h - y) / CLEAR.ry;\n return dy >= 1 ? 0 : CLEAR.rx * Math.sqrt(1 - dy * dy);\n};\nconst masked = (c: Canvas, children: ArtNode[]) => node(\"g\", { mask: `url(#${c.id(\"clear\")})` }, children);\n\nfunction primitive(c: Canvas, x: number, y: number, s: number, fill: string, accent: string): ArtNode[] {\n const out: ArtNode[] = [];\n const kind = c.int(0, 7);\n const t = `rotate(${c.int(0, 3) * 90} ${round(x + s / 2)} ${round(y + s / 2)})`;\n if (c.chance(0.55)) out.push(node(\"rect\", { x, y, width: s, height: s, fill }));\n const ink = out.length ? accent : fill;\n switch (kind) {\n case 0:\n out.push(node(\"path\", { d: `M${x} ${y}L${x + s} ${y}A${s} ${s} 0 0 1 ${x} ${y + s}Z`, fill: ink, transform: t }));\n break;\n case 1:\n out.push(node(\"path\", { d: `M${x} ${y + s}A${s / 2} ${s / 2} 0 0 1 ${x + s} ${y + s}Z`, fill: ink, transform: t }));\n break;\n case 2:\n out.push(node(\"circle\", { cx: x + s / 2, cy: y + s / 2, r: s / 2, fill: ink }));\n break;\n case 3:\n out.push(node(\"path\", { d: `M${x} ${y}L${x + s} ${y + s}L${x} ${y + s}Z`, fill: ink, transform: t }));\n break;\n case 4:\n out.push(node(\"circle\", { cx: x + s / 2, cy: y + s / 2, r: s / 4, fill: ink }));\n break;\n case 5:\n for (let i = 0; i < 3; i++) out.push(node(\"rect\", { x: x + (i * s) / 3, y, width: s / 6, height: s, fill: ink, transform: t }));\n break;\n case 6:\n out.push(node(\"path\", { d: `M${x} ${y}L${x + s} ${y}L${x + s / 2} ${y + s / 2}Z`, fill: ink, transform: t }));\n out.push(node(\"path\", { d: `M${x} ${y + s}L${x + s} ${y + s}L${x + s / 2} ${y + s / 2}Z`, fill: ink, transform: t }));\n break;\n default:\n out.push(node(\"path\", { d: `M${x} ${y}A${s} ${s} 0 0 1 ${x + s} ${y + s}L${x} ${y + s}Z`, fill: ink, transform: t }));\n }\n return out;\n}\n\nfunction bauhaus(c: Canvas): ArtNode[] {\n const taken = new Set<string>();\n const key = (col: number, row: number) => `${col},${row}`;\n const blocked = (col: number, row: number) => open(c, col * U, (row + 1) * U);\n const out: ArtNode[] = [];\n const bigs = c.int(2, 4);\n for (let b = 0; b < bigs; b++) {\n const size = c.int(2, 3);\n for (let attempt = 0; attempt < 20; attempt++) {\n const col = c.int(0, c.cols - size);\n const row = c.int(0, c.rows - size);\n let free = true;\n for (let i = 0; i < size && free; i++) for (let j = 0; j < size && free; j++) free = !taken.has(key(col + i, row + j)) && !blocked(col + i, row + j);\n if (!free) continue;\n for (let i = 0; i < size; i++) for (let j = 0; j < size; j++) taken.add(key(col + i, row + j));\n const a = c.int(0, 3);\n out.push(...primitive(c, col * U, row * U, size * U, c.color(a), c.color(a + c.int(1, 3))));\n break;\n }\n }\n const density = c.between(0.55, 0.85);\n for (let col = 0; col < c.cols; col++) {\n for (let row = 0; row < c.rows; row++) {\n if (taken.has(key(col, row)) || blocked(col, row) || !c.chance(density)) continue;\n const a = c.int(0, 3);\n out.push(...primitive(c, col * U, row * U, U, c.color(a), c.color(a + c.int(1, 3))));\n }\n }\n return out;\n}\n\nfunction albers(c: Canvas): ArtNode[] {\n const side = U * 6;\n const margin = (c.h - side) / 2;\n const lo = CLEAR.rx - U / 2;\n const hi = c.w - margin - side;\n const x0 = lo + Math.round((c.next() * Math.max(0, hi - lo)) / (U / 2)) * (U / 2);\n const unit = side / 20;\n const levels = c.int(3, 4);\n const order = [0, 1, 2, 3];\n for (let i = order.length - 1; i > 0; i--) {\n const j = Math.floor(c.next() * (i + 1));\n [order[i], order[j]] = [order[j] ?? j, order[i] ?? i];\n }\n return Array.from({ length: levels }, (_, l) =>\n node(\"rect\", { x: x0 + 2 * unit * l, y: margin + 3 * unit * l, width: side - 4 * unit * l, height: side - 4 * unit * l, fill: c.color(order[l] ?? l) }),\n );\n}\n\nfunction bands(c: Canvas, angle: number, widths: number[], offset: number): ArtNode {\n const diag = Math.hypot(c.w, c.h);\n const rects: ArtNode[] = [];\n let x = -diag;\n let i = 0;\n while (x < diag) {\n const w = widths[i % widths.length] ?? U;\n rects.push(node(\"rect\", { x: round(x), y: round(-diag), width: w, height: round(diag * 2), fill: c.color(i + offset) }));\n x += w;\n i += 1;\n }\n return node(\"g\", { transform: `translate(${c.w / 2} ${c.h / 2}) rotate(${angle})` }, rects);\n}\n\nfunction stripes(c: Canvas): ArtNode[] {\n const angle = [0, 90, 45, -45, 30, -60][c.int(0, 5)] ?? 0;\n const widths = Array.from({ length: c.int(5, 9) }, () => (U / 2) * c.int(1, 5));\n const clip = c.id(\"disc\");\n const r = U * c.int(2, 3) + U / 2;\n const cx = U * c.int(Math.ceil((CLEAR.rx + r) / U), c.cols - 2);\n const cy = U * c.int(3, c.rows - 3);\n return [\n node(\"defs\", {}, [node(\"clipPath\", { id: clip }, [node(\"circle\", { cx, cy, r })])]),\n masked(c, [bands(c, angle, widths, 0)]),\n node(\"g\", { clipPath: `url(#${clip})` }, [node(\"rect\", { width: c.w, height: c.h, fill: c.ground }), bands(c, angle + 90, widths, 1)]),\n ];\n}\n\nfunction waves(c: Canvas): ArtNode[] {\n const out: ArtNode[] = [];\n const lines = c.int(14, 18);\n const top = U * 2.5;\n const bottom = c.h - U;\n const gapY = (bottom - top) / (lines - 1);\n const peak = c.w * c.between(0.58, 0.74);\n const spread = c.w * c.between(0.09, 0.14);\n const accent = c.chance(0.6) ? c.int(2, lines - 3) : -1;\n for (let i = 0; i < lines; i++) {\n const base = top + i * gapY;\n const bumps = Array.from({ length: c.int(3, 5) }, () => ({ x: peak + c.between(-1.2, 1.2) * spread, h: c.between(0.3, 1), s: c.between(9, 22) }));\n const ripple = [c.between(0, 6.28), c.between(0, 6.28)];\n const start = Math.max(U, Math.ceil((clearEdge(c, base) + U / 2) / 4) * 4);\n const raw: [number, number][] = [];\n for (let x = start; x <= c.w - U; x += 4) {\n const env = Math.exp(-((x - peak) ** 2) / (2 * spread * spread));\n let y = 0;\n for (const b of bumps) y += b.h * Math.exp(-((x - b.x) ** 2) / (2 * b.s * b.s));\n const fine = Math.sin(x * 0.21 + (ripple[0] ?? 0)) * 0.6 + Math.sin(x * 0.53 + (ripple[1] ?? 0)) * 0.4;\n raw.push([x, y * env + fine * 0.04 * (0.15 + env)]);\n }\n const max = Math.max(...raw.map(([, y]) => y), 0.001);\n const lift = Math.min(gapY * c.between(2.4, 4.4), base - U);\n const line = `M${raw.map(([x, y]) => `${x} ${round(base - (y / max) * lift)}`).join(\"L\")}`;\n out.push(node(\"path\", { d: `${line}L${c.w - U} ${round(base + gapY)}L${start} ${round(base + gapY)}Z`, fill: c.ground }));\n out.push(\n node(\"path\", { d: line, fill: \"none\", stroke: i === accent ? c.color(1) : c.color(0), strokeWidth: 2, strokeLinejoin: \"round\", strokeLinecap: \"round\" }),\n );\n }\n return out;\n}\n\nfunction truchet(c: Canvas): ArtNode[] {\n const t = U * 2;\n const h = t / 2;\n const stroke = round(t * c.between(0.2, 0.3));\n const inner = c.chance(0.5);\n const paths: ArtNode[] = [];\n const cols = Math.ceil(c.w / t);\n const rows = Math.ceil(c.h / t);\n for (let col = 0; col < cols; col++) {\n for (let r = 0; r < rows; r++) {\n const x = col * t;\n const y = c.h - (r + 1) * t;\n if (open(c, x, y + t)) continue;\n const d = c.chance(0.5)\n ? `M${x + h} ${y}A${h} ${h} 0 0 1 ${x} ${y + h}M${x + t} ${y + h}A${h} ${h} 0 0 0 ${x + h} ${y + t}`\n : `M${x + h} ${y}A${h} ${h} 0 0 0 ${x + t} ${y + h}M${x} ${y + h}A${h} ${h} 0 0 1 ${x + h} ${y + t}`;\n paths.push(node(\"path\", { d }));\n }\n }\n const out = [node(\"g\", { fill: \"none\", stroke: c.color(0), strokeWidth: stroke }, paths)];\n if (inner) out.push(node(\"g\", { fill: \"none\", stroke: c.color(1), strokeWidth: round(stroke * 0.34) }, paths));\n return out;\n}\n\nfunction clearance(c: Canvas, cx: number, cy: number): number {\n let best = Infinity;\n for (let i = 0; i <= 90; i++) {\n const a = (i / 90) * (Math.PI / 2);\n best = Math.min(best, Math.hypot(cx - CLEAR.rx * Math.cos(a), cy - (c.h - CLEAR.ry * Math.sin(a))));\n }\n return open(c, cx, cy) ? 0 : best;\n}\n\nfunction arcs(c: Canvas): ArtNode[] {\n const out: ArtNode[] = [];\n const anchors = c.int(2, 3);\n const spots: [number, number][] = [\n [U * c.int(4, c.cols - 2), 0],\n [U * c.int(11, c.cols - 1), c.h],\n [c.w, U * c.int(2, c.rows - 2)],\n [c.w, 0],\n [c.w, c.h],\n [0, 0],\n ];\n for (let i = spots.length - 1; i > 0; i--) {\n const j = Math.floor(c.next() * (i + 1));\n [spots[i], spots[j]] = [spots[j] ?? [c.w, 0], spots[i] ?? [c.w, 0]];\n }\n let placed = 0;\n for (const [cx, cy] of spots) {\n if (placed === anchors) break;\n const band = (U / 2) * c.int(1, 2);\n const room = Math.floor((clearance(c, cx, cy) - U / 2) / band);\n const count = Math.min(room, c.int(4, 10));\n if (count < 3) continue;\n const offset = c.int(0, 3);\n const hollow = c.chance(0.4);\n for (let i = count; i >= 1; i--) out.push(node(\"circle\", { cx, cy, r: i * band, fill: i === 1 && hollow ? c.ground : c.color(i + offset) }));\n placed += 1;\n }\n return out;\n}\n\nconst GOLDEN = 2.399963229728653;\n\nfunction phyllotaxis(c: Canvas): ArtNode[] {\n const out: ArtNode[] = [];\n const cx = c.w - c.h / 2 - U * c.int(0, 2);\n const cy = c.h / 2 + U * c.int(-1, 1);\n const step = c.between(11, 14);\n const arms = [8, 13, 21][c.int(0, 2)] ?? 13;\n const banded = c.chance(0.35);\n const reach = Math.hypot(c.w, c.h);\n for (let i = 1; ; i++) {\n const r = step * Math.sqrt(i);\n if (r > reach) break;\n const x = cx + r * Math.cos(i * GOLDEN);\n const y = cy + r * Math.sin(i * GOLDEN);\n const size = step * (0.3 + 0.12 * Math.min(1, r / (c.h / 2)));\n if (x < -size || x > c.w + size || y < -size || y > c.h + size) continue;\n if (open(c, x, y) || clearance(c, x, y) < size + U / 4) continue;\n const tone = banded ? Math.floor(r / (U * 1.5)) % 4 : Math.floor(((i % arms) / arms) * 4);\n out.push(node(\"circle\", { cx: round(x), cy: round(y), r: round(size), fill: c.color(tone) }));\n }\n return out;\n}\n\nfunction gcd(a: number, b: number): number {\n return b ? gcd(b, a % b) : a;\n}\n\nfunction spiro(c: Canvas): ArtNode[] {\n const out: ArtNode[] = [];\n const cx = c.w - c.h / 2;\n const cy = c.h / 2;\n const radius = c.h / 2 - U;\n const big = c.int(7, 13);\n let small = c.int(2, big - 2);\n while (gcd(big, small) !== 1) small = c.int(2, big - 2);\n const layers = c.chance(0.5) ? 2 : 1;\n for (let l = 0; l < layers; l++) {\n const pen = small * c.between(0.75, 1.05);\n const k = (big - small) / small;\n const extent = big - small + pen;\n const turns = small / gcd(big, small);\n const steps = turns * 360;\n const points: string[] = [];\n const scale = (radius * (l === 0 ? 1 : c.between(0.4, 0.55))) / extent;\n for (let i = 0; i <= steps; i++) {\n const a = (i / steps) * turns * Math.PI * 2;\n const x = (big - small) * Math.cos(a) + pen * Math.cos(k * a);\n const y = (big - small) * Math.sin(a) - pen * Math.sin(k * a);\n points.push(`${round(cx + x * scale)} ${round(cy + y * scale)}`);\n }\n const d = `M${points.join(\"L\")}Z`;\n out.push(node(\"path\", { d, fill: c.color(l), fillRule: \"evenodd\" }));\n }\n return out;\n}\n\nconst STYLE = { bauhaus, albers, stripes, waves, truchet, arcs, phyllotaxis, spiro } as const;\n\nexport interface DrawOptions {\n shape?: ReleaseArtShape | undefined;\n title?: string | undefined;\n eyebrow?: string | undefined;\n idPrefix?: string | undefined;\n}\n\nconst paletteOf = (spec: ReleaseArtSpec) => art.palettes[spec.palette % art.palettes.length] ?? art.palettes[0];\n\nexport function releaseArtText(spec: ReleaseArtSpec) {\n return { color: art.grounds[paletteOf(spec).ground].text, eyebrow: { x: U, bottom: 96 }, title: { x: U - 2, bottom: U } };\n}\n\nexport function drawReleaseArt(spec: ReleaseArtSpec, options: DrawOptions = {}): ArtNode {\n const { w, h } = RELEASE_ART_VIEW[options.shape ?? \"banner\"];\n const next = random(spec.seed);\n const between = (lo: number, hi: number) => lo + next() * (hi - lo);\n const int = (lo: number, hi: number) => Math.min(hi, lo + Math.floor(next() * (hi - lo + 1)));\n const palette = paletteOf(spec);\n const place = releaseArtText(spec);\n const ground = art.grounds[palette.ground];\n const colors: string[] = [...palette.colors];\n for (let i = colors.length - 1; i > 0; i--) {\n const j = Math.floor(next() * (i + 1));\n [colors[i], colors[j]] = [colors[j] ?? ground.text, colors[i] ?? ground.text];\n }\n const prefix = options.idPrefix ?? \"art\";\n const canvas: Canvas = {\n w,\n h,\n cols: w / U,\n rows: h / U,\n next,\n between,\n int,\n chance: (p) => next() < p,\n ground: ground.fill,\n color: (i) => colors[((i % colors.length) + colors.length) % colors.length] ?? ground.text,\n id: (name) => `${prefix}-${name}`,\n };\n const mask = canvas.id(\"clear\");\n const drawn = STYLE[spec.style](canvas);\n const text: ArtNode[] = [];\n if (options.eyebrow)\n text.push({\n tag: \"text\",\n attrs: {\n x: place.eyebrow.x,\n y: h - place.eyebrow.bottom,\n fill: place.color,\n fillOpacity: 0.7,\n fontSize: 16,\n fontWeight: 500,\n letterSpacing: 0.1,\n fontFamily: font.sans,\n },\n text: options.eyebrow,\n });\n if (options.title)\n text.push({\n tag: \"text\",\n attrs: { x: place.title.x, y: h - place.title.bottom, fill: place.color, fontSize: 52, fontWeight: 600, letterSpacing: -1.5, fontFamily: font.sans },\n text: options.title,\n });\n return node(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: `0 0 ${w} ${h}` }, [\n node(\"defs\", {}, [\n node(\"mask\", { id: mask, maskUnits: \"userSpaceOnUse\", x: 0, y: 0, width: w, height: h }, [\n node(\"rect\", { width: w, height: h, fill: \"white\" }),\n node(\"ellipse\", { cx: 0, cy: h, rx: CLEAR.rx, ry: CLEAR.ry, fill: \"black\" }),\n ]),\n ]),\n node(\"rect\", { width: w, height: h, fill: ground.fill }),\n ...drawn,\n ...text,\n ]);\n}\n\nconst KEEP_CAMEL = new Set([\"viewBox\", \"maskUnits\"]);\nconst attrName = (name: string) => (KEEP_CAMEL.has(name) ? name : name.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`));\nconst escapeXml = (text: string) => text.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\n\nexport function serializeArt(n: ArtNode): string {\n const attrs = Object.entries(n.attrs)\n .map(([k, v]) => ` ${attrName(k)}=\"${escapeXml(String(v))}\"`)\n .join(\"\");\n const inner = n.text !== undefined ? escapeXml(n.text) : (n.children ?? []).map(serializeArt).join(\"\");\n return inner ? `<${n.tag}${attrs}>${inner}</${n.tag}>` : `<${n.tag}${attrs}/>`;\n}\n","import { createElement, forwardRef, useId, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { drawReleaseArt, releaseArtFor, releaseArtText, serializeArt, RELEASE_ART_VIEW, type ArtNode, type ReleaseArtSpec } from \"./drawing.js\";\n\nexport { RELEASE_ART_STYLES, isReleaseArtSpec, nextReleaseArt, randomReleaseArt, releaseArtFor, type ReleaseArtSpec, type ReleaseArtStyle } from \"./drawing.js\";\n\nexport const KAESO_RELEASE_ART_VARIANTS = {\n shape: {\n banner: { classes: \"aspect-video\" },\n wide: { classes: \"aspect-21/9\" },\n },\n} as const;\nexport const KAESO_RELEASE_ART_DEFAULT_VARIANTS = { shape: \"banner\" } as const;\n\nexport interface ReleaseArtProps {\n seed: string;\n label: string;\n art?: ReleaseArtSpec | undefined;\n src?: string | undefined;\n title?: ReactNode | undefined;\n eyebrow?: ReactNode | undefined;\n shape?: keyof typeof KAESO_RELEASE_ART_VARIANTS.shape | undefined;\n className?: string | undefined;\n}\n\nfunction toElement(n: ArtNode, key: number): ReactNode {\n return createElement(n.tag, { ...n.attrs, key }, n.text ?? n.children?.map(toElement));\n}\n\nconst TITLE_SIZES = [\"text-display\", \"text-title-lg\", \"text-title\", \"text-title-sm\"] as const;\nconst WRAP = \"text-title-sm\";\n\nfunction useTitleFit(ref: { current: HTMLSpanElement | null }, width: number | null, title: string): string | null {\n const start = width === null ? null : width >= 512 ? 0 : width >= 320 ? 1 : width >= 208 ? 2 : 3;\n const [step, setStep] = useState<{ key: string; at: number } | null>(null);\n const key = `${start}|${title}`;\n const at = start === null ? null : step?.key === key ? step.at : start;\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || at === null || at >= TITLE_SIZES.length - 1) return;\n if (el.scrollWidth > el.clientWidth + 1) setStep({ key, at: at + 1 });\n }, [at, key, ref]);\n return at === null ? null : TITLE_SIZES[at]!;\n}\n\nexport const ReleaseArt = /* @__PURE__ */ forwardRef<SVGSVGElement, ReleaseArtProps>(function ReleaseArt(\n { seed, label, art, src, title, eyebrow, shape = \"banner\", className },\n ref,\n) {\n const { w, h } = RELEASE_ART_VIEW[shape];\n const [failed, setFailed] = useState<string | null>(null);\n const prefix = `art${useId().replace(/[^a-zA-Z0-9]/g, \"\")}`;\n const spec = art ?? releaseArtFor(seed);\n const drawn = useMemo(() => drawReleaseArt(spec, { shape, idPrefix: prefix }), [spec, shape, prefix]);\n const text = releaseArtText(spec);\n const clear = 236;\n const frame = useRef<HTMLSpanElement | null>(null);\n const heading = useRef<HTMLSpanElement | null>(null);\n const width = useLayoutWidth(frame);\n const fit = useTitleFit(heading, width, typeof title === \"string\" ? title : \"\");\n return (\n <span ref={frame} className={cn(\"@container relative block w-full\", className)}>\n <svg\n ref={ref}\n viewBox={`0 0 ${w} ${h}`}\n role=\"img\"\n aria-label={label}\n preserveAspectRatio=\"xMidYMid slice\"\n className={cn(\"block w-full overflow-hidden rounded-well\", KAESO_RELEASE_ART_VARIANTS.shape[shape].classes)}\n >\n {src && failed !== src ? (\n <image href={src} width={w} height={h} preserveAspectRatio=\"xMidYMid slice\" onError={() => setFailed(src)} />\n ) : (\n drawn.children?.map(toElement)\n )}\n </svg>\n {(eyebrow || title) && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute flex flex-col items-start gap-4 text-balance\"\n style={{\n left: `${(text.eyebrow.x / w) * 100}cqw`,\n bottom: `${(text.title.bottom / w) * 100}cqw`,\n maxWidth: `${(clear / w) * 100}cqw`,\n hyphens: \"auto\",\n color: text.color,\n }}\n >\n {eyebrow && <span className=\"text-caption font-medium opacity-70 @cell-lg:text-body-lg\">{eyebrow}</span>}\n {title && (\n <span\n ref={heading}\n className={cn(\n \"max-w-full font-semibold\",\n fit ?? \"text-title-sm @cell-sm:text-title @cell-md:text-title-lg @cell-lg:text-display\",\n fit && fit !== WRAP && \"whitespace-nowrap\",\n )}\n >\n {title}\n </span>\n )}\n </span>\n )}\n <span aria-hidden className=\"pointer-events-none absolute inset-0 rounded-well shadow-ring\" />\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ReleaseArt.displayName = \"ReleaseArt\";\n\nexport interface ReleaseArtSvgOptions {\n seed: string;\n label: string;\n art?: ReleaseArtSpec | undefined;\n title?: string | undefined;\n eyebrow?: string | undefined;\n shape?: keyof typeof KAESO_RELEASE_ART_VARIANTS.shape | undefined;\n}\n\nexport function releaseArtSvg({ seed, label, art, title, eyebrow, shape = \"banner\" }: ReleaseArtSvgOptions): string {\n const { w, h } = RELEASE_ART_VIEW[shape];\n const drawn = drawReleaseArt(art ?? releaseArtFor(seed), { shape, title, eyebrow, idPrefix: \"art\" });\n return serializeArt({ ...drawn, attrs: { ...drawn.attrs, width: w * 2, height: h * 2, role: \"img\", ariaLabel: label } });\n}\n"],"mappings":"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"}
|