@zyncat/ui 0.11.0 → 0.13.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/README.md +135 -40
- package/dist/alert.css +126 -121
- package/dist/alert.js +12 -14
- package/dist/alert.js.map +1 -1
- package/dist/avatar-group.js.map +1 -1
- package/dist/avatar.css +179 -174
- package/dist/avatar.js.map +1 -1
- package/dist/badge.css +166 -160
- package/dist/badge.js +1 -1
- package/dist/button.css +272 -246
- package/dist/button.js +1 -1
- package/dist/checkbox.css +158 -153
- package/dist/checkbox.js +2 -2
- package/dist/{chunk-AMFGY56I.js → chunk-227ZW4V7.js} +40 -32
- package/dist/chunk-227ZW4V7.js.map +1 -0
- package/dist/{chunk-2ERBBFZS.js → chunk-3MPF7FZV.js} +2 -2
- package/dist/chunk-3MPF7FZV.js.map +1 -0
- package/dist/{chunk-AIQXS2XY.js → chunk-43M6GQ4Q.js} +86 -79
- package/dist/chunk-43M6GQ4Q.js.map +1 -0
- package/dist/{chunk-7SZCJ7WI.js → chunk-45R4Z5XN.js} +3 -3
- package/dist/chunk-45R4Z5XN.js.map +1 -0
- package/dist/{chunk-I4XQ4PV2.js → chunk-4BSHB7R3.js} +9 -7
- package/dist/chunk-4BSHB7R3.js.map +1 -0
- package/dist/{chunk-YGGCQNNU.js → chunk-4C5RZXBT.js} +33 -34
- package/dist/chunk-4C5RZXBT.js.map +1 -0
- package/dist/{chunk-2QWJ6FAX.js → chunk-5PZ43DCG.js} +31 -15
- package/dist/chunk-5PZ43DCG.js.map +1 -0
- package/dist/{chunk-S5ZTZANS.js → chunk-7IZJERGA.js} +35 -12
- package/dist/chunk-7IZJERGA.js.map +1 -0
- package/dist/{chunk-DKVUPFQR.js → chunk-A5WTZACK.js} +22 -12
- package/dist/chunk-A5WTZACK.js.map +1 -0
- package/dist/{chunk-64UU4LGU.js → chunk-AADAJL7D.js} +3 -3
- package/dist/{chunk-64UU4LGU.js.map → chunk-AADAJL7D.js.map} +1 -1
- package/dist/{chunk-XJQQQJAO.js → chunk-CF4QHO4N.js} +21 -11
- package/dist/chunk-CF4QHO4N.js.map +1 -0
- package/dist/{chunk-WM5J5TDI.js → chunk-CNWTIMIP.js} +13 -17
- package/dist/chunk-CNWTIMIP.js.map +1 -0
- package/dist/{chunk-NGTA34V2.js → chunk-DDRSMHN4.js} +16 -10
- package/dist/chunk-DDRSMHN4.js.map +1 -0
- package/dist/{chunk-VTJTGVZZ.js → chunk-DMX2F6B4.js} +2 -2
- package/dist/chunk-DMX2F6B4.js.map +1 -0
- package/dist/{chunk-3SBCBYB7.js → chunk-EAI4POPB.js} +2 -2
- package/dist/{chunk-3SBCBYB7.js.map → chunk-EAI4POPB.js.map} +1 -1
- package/dist/{chunk-Y7AJQVWJ.js → chunk-EF6RPXU7.js} +17 -15
- package/dist/chunk-EF6RPXU7.js.map +1 -0
- package/dist/{chunk-WFHRAKN3.js → chunk-FONOS5RN.js} +14 -15
- package/dist/chunk-FONOS5RN.js.map +1 -0
- package/dist/{chunk-PMECHR3A.js → chunk-FQEHSKEI.js} +2 -2
- package/dist/chunk-FQEHSKEI.js.map +1 -0
- package/dist/chunk-HDSFWZ7L.js +12 -0
- package/dist/chunk-HDSFWZ7L.js.map +1 -0
- package/dist/{chunk-2F5PITAO.js → chunk-HY5MPISE.js} +2 -2
- package/dist/chunk-HY5MPISE.js.map +1 -0
- package/dist/{chunk-QDK66S4G.js → chunk-I45AU6KH.js} +3 -3
- package/dist/chunk-I45AU6KH.js.map +1 -0
- package/dist/{chunk-YGCVWGUG.js → chunk-IJS7TPGV.js} +153 -46
- package/dist/chunk-IJS7TPGV.js.map +1 -0
- package/dist/{chunk-62P3KD57.js → chunk-IUQAUBVM.js} +18 -11
- package/dist/chunk-IUQAUBVM.js.map +1 -0
- package/dist/chunk-JY6A2ZJZ.js +44 -0
- package/dist/chunk-JY6A2ZJZ.js.map +1 -0
- package/dist/{chunk-XWUWYSCT.js → chunk-M43IOM5C.js} +20 -10
- package/dist/chunk-M43IOM5C.js.map +1 -0
- package/dist/{chunk-S7B34VGN.js → chunk-OWNMRMPN.js} +3 -3
- package/dist/{chunk-S7B34VGN.js.map → chunk-OWNMRMPN.js.map} +1 -1
- package/dist/chunk-RFRE4WKX.js +22 -0
- package/dist/chunk-RFRE4WKX.js.map +1 -0
- package/dist/{chunk-NNXJCLTV.js → chunk-RJFGWJ4W.js} +2 -2
- package/dist/chunk-RJFGWJ4W.js.map +1 -0
- package/dist/{chunk-NEF5XAHG.js → chunk-TUTXXC3W.js} +4 -4
- package/dist/chunk-TUTXXC3W.js.map +1 -0
- package/dist/chunk-TVYH4AN7.js +70 -0
- package/dist/chunk-TVYH4AN7.js.map +1 -0
- package/dist/{chunk-U4MHX3KH.js → chunk-VAXCXZ53.js} +33 -12
- package/dist/chunk-VAXCXZ53.js.map +1 -0
- package/dist/chunk-XNIYSAMJ.js +52 -0
- package/dist/chunk-XNIYSAMJ.js.map +1 -0
- package/dist/{chunk-CONSWNIV.js → chunk-Y2YA7QRF.js} +6 -6
- package/dist/chunk-Y2YA7QRF.js.map +1 -0
- package/dist/cli.js +1828 -0
- package/dist/collapse.css +70 -61
- package/dist/collapse.js +2 -2
- package/dist/confetti.css +45 -0
- package/dist/confetti.js +540 -0
- package/dist/confetti.js.map +1 -0
- package/dist/count-badge.js +3 -3
- package/dist/count-badge.js.map +1 -1
- package/dist/date-field.js +24 -19
- package/dist/date-field.js.map +1 -1
- package/dist/date-picker.css +563 -559
- package/dist/date-range-field.js +58 -41
- package/dist/date-range-field.js.map +1 -1
- package/dist/datetime-field.js +24 -19
- package/dist/datetime-field.js.map +1 -1
- package/dist/dialog.css +176 -172
- package/dist/dialog.js +30 -19
- package/dist/dialog.js.map +1 -1
- package/dist/digit-strip.css +65 -0
- package/dist/dropdown.css +65 -0
- package/dist/dropdown.js +350 -0
- package/dist/dropdown.js.map +1 -0
- package/dist/emoji-picker.js +713 -0
- package/dist/emoji-picker.js.map +1 -0
- package/dist/facebook-feed.css +880 -0
- package/dist/facebook-feed.js +697 -0
- package/dist/facebook-feed.js.map +1 -0
- package/dist/flow-field.css +49 -0
- package/dist/flow-field.js +269 -0
- package/dist/flow-field.js.map +1 -0
- package/dist/glide.js +3 -3
- package/dist/icon.css +34 -30
- package/dist/input.css +296 -318
- package/dist/instagram-feed.css +378 -0
- package/dist/instagram-feed.js +272 -0
- package/dist/instagram-feed.js.map +1 -0
- package/dist/lens.css +119 -0
- package/dist/lens.js +307 -0
- package/dist/lens.js.map +1 -0
- package/dist/mcp.js +379 -181
- package/dist/menu-surface.css +127 -0
- package/dist/modal.css +11 -7
- package/dist/modal.js +24 -17
- package/dist/modal.js.map +1 -1
- package/dist/morphing-text.css +84 -0
- package/dist/morphing-text.js +256 -0
- package/dist/morphing-text.js.map +1 -0
- package/dist/motion-devtools.css +237 -233
- package/dist/motion-devtools.js +7 -6
- package/dist/motion-devtools.js.map +1 -1
- package/dist/motion-tokens.js +1 -1
- package/dist/multi-select.js +20 -17
- package/dist/multi-select.js.map +1 -1
- package/dist/number-field.js +11 -7
- package/dist/number-field.js.map +1 -1
- package/dist/odometer.css +58 -59
- package/dist/odometer.js +109 -0
- package/dist/odometer.js.map +1 -0
- package/dist/otp-field.js.map +1 -1
- package/dist/overlay.css +24 -20
- package/dist/pagination.css +42 -38
- package/dist/pagination.js +6 -12
- package/dist/pagination.js.map +1 -1
- package/dist/popover.css +69 -65
- package/dist/popover.js +12 -10
- package/dist/radio-group.css +275 -276
- package/dist/radio-group.js +70 -95
- package/dist/radio-group.js.map +1 -1
- package/dist/select.css +291 -386
- package/dist/select.js +18 -15
- package/dist/select.js.map +1 -1
- package/dist/sheet.css +47 -23
- package/dist/sheet.js +11 -10
- package/dist/status-badge.js +3 -3
- package/dist/status-badge.js.map +1 -1
- package/dist/styles.css +221 -0
- package/dist/support-rail.css +421 -0
- package/dist/support-rail.js +243 -0
- package/dist/support-rail.js.map +1 -0
- package/dist/table.css +333 -323
- package/dist/table.js +32 -21
- package/dist/table.js.map +1 -1
- package/dist/tabs.css +163 -156
- package/dist/tabs.js +26 -20
- package/dist/tabs.js.map +1 -1
- package/dist/tag.css +209 -231
- package/dist/tag.js +11 -10
- package/dist/tag.js.map +1 -1
- package/dist/text-field.js +7 -67
- package/dist/text-field.js.map +1 -1
- package/dist/textarea.css +205 -211
- package/dist/textarea.js +12 -12
- package/dist/textarea.js.map +1 -1
- package/dist/theme.js +69 -0
- package/dist/theme.js.map +1 -0
- package/dist/tiktok.css +662 -0
- package/dist/tiktok.js +494 -0
- package/dist/tiktok.js.map +1 -0
- package/dist/time-field.js +6 -6
- package/dist/time-field.js.map +1 -1
- package/dist/toast.css +237 -233
- package/dist/toast.js +43 -47
- package/dist/toast.js.map +1 -1
- package/dist/toggle-tag.js +1 -1
- package/dist/toggle-tag.js.map +1 -1
- package/dist/toggle.css +139 -135
- package/dist/toggle.js.map +1 -1
- package/dist/tooltip.css +79 -78
- package/dist/tooltip.js +50 -60
- package/dist/tooltip.js.map +1 -1
- package/dist/trigger.css +13 -0
- package/dist/{alert.d.ts → types/components/composites/alert/Alert.d.ts} +13 -15
- package/dist/{date-field.d.ts → types/components/composites/date-picker/DateField.d.ts} +4 -10
- package/dist/types/components/composites/date-picker/DateRangeField.d.ts +21 -0
- package/dist/{datetime-field.d.ts → types/components/composites/date-picker/DateTimeField.d.ts} +4 -10
- package/dist/{time-field.d.ts → types/components/composites/date-picker/TimeField.d.ts} +5 -11
- package/dist/types/components/composites/date-picker/calendar-panel.d.ts +16 -0
- package/dist/types/components/composites/date-picker/date-utils.d.ts +12 -0
- package/dist/types/components/composites/date-picker/field-shell.d.ts +46 -0
- package/dist/types/components/composites/date-picker/range-panel.d.ts +24 -0
- package/dist/types/components/composites/date-picker/time-core.d.ts +14 -0
- package/dist/types/components/composites/date-picker/use-day-focus.d.ts +2 -0
- package/dist/{dialog.d.ts → types/components/composites/dialog/Dialog.d.ts} +10 -11
- package/dist/types/components/composites/dropdown/Dropdown.d.ts +37 -0
- package/dist/types/components/composites/dropdown/menu-panel.d.ts +7 -0
- package/dist/types/components/composites/dropdown/types.d.ts +71 -0
- package/dist/types/components/composites/emoji-picker/EmojiPickerPanel.d.ts +45 -0
- package/dist/types/components/composites/emoji-picker/category-icons.d.ts +9 -0
- package/dist/types/components/composites/emoji-picker/data.d.ts +33 -0
- package/dist/types/components/composites/emoji-picker/dom.d.ts +19 -0
- package/dist/types/components/composites/emoji-picker/getEmojiUrl.d.ts +2 -0
- package/dist/types/components/composites/emoji-picker/navigation.d.ts +7 -0
- package/dist/types/components/composites/emoji-picker/picker.d.ts +20 -0
- package/dist/types/components/composites/emoji-picker/react/category-bar.d.ts +6 -0
- package/dist/types/components/composites/emoji-picker/react/useEmojiPicker.d.ts +50 -0
- package/dist/types/components/composites/emoji-picker/scaffold.d.ts +8 -0
- package/dist/types/components/composites/emoji-picker/search.d.ts +1 -0
- package/dist/types/components/composites/emoji-picker/types.d.ts +13 -0
- package/dist/{modal.d.ts → types/components/composites/modal/Modal.d.ts} +10 -11
- package/dist/{pagination.d.ts → types/components/composites/pagination/Pagination.d.ts} +5 -8
- package/dist/{popover.d.ts → types/components/composites/popover/Popover.d.ts} +11 -14
- package/dist/{multi-select.d.ts → types/components/composites/select/MultiSelect.d.ts} +12 -11
- package/dist/{select.d.ts → types/components/composites/select/Select.d.ts} +16 -14
- package/dist/types/components/composites/select/core/index.d.ts +4 -0
- package/dist/types/components/composites/select/core/menu.d.ts +13 -0
- package/dist/types/components/composites/select/core/panel.d.ts +18 -0
- package/dist/types/components/composites/select/core/trigger.d.ts +16 -0
- package/dist/{types-SGMShK7R.d.ts → types/components/composites/select/core/types.d.ts} +13 -6
- package/dist/types/components/composites/select/core/use-listbox.d.ts +42 -0
- package/dist/{sheet.d.ts → types/components/composites/sheet/Sheet.d.ts} +10 -11
- package/dist/types/components/composites/sheet/use-sheet-drag.d.ts +13 -0
- package/dist/{table.d.ts → types/components/composites/table/Table.d.ts} +12 -12
- package/dist/{tabs.d.ts → types/components/composites/tabs/Tabs.d.ts} +13 -13
- package/dist/types/components/composites/toast/Toast.d.ts +10 -0
- package/dist/{toast-store.d.ts → types/components/composites/toast/toast-store.d.ts} +12 -14
- package/dist/{tooltip.d.ts → types/components/composites/tooltip/Tooltip.d.ts} +6 -10
- package/dist/types/components/composites/tooltip/tooltip-host.d.ts +1 -0
- package/dist/types/components/composites/tooltip/tooltip-store.d.ts +29 -0
- package/dist/types/components/compound/support-rail/SupportRail.d.ts +41 -0
- package/dist/types/components/dev/MotionDevtools.d.ts +24 -0
- package/dist/types/components/dev/slowmo-engine.d.ts +27 -0
- package/dist/types/components/expressive/confetti/Confetti.d.ts +43 -0
- package/dist/types/components/expressive/facebook-feed/FacebookFeed.d.ts +73 -0
- package/dist/types/components/expressive/facebook-feed/chrome.d.ts +30 -0
- package/dist/types/components/expressive/facebook-feed/icons.d.ts +21 -0
- package/dist/types/components/expressive/facebook-feed/post.d.ts +25 -0
- package/dist/types/components/expressive/facebook-feed/reel.d.ts +26 -0
- package/dist/types/components/expressive/facebook-feed/story.d.ts +20 -0
- package/dist/types/components/expressive/flow-field/FlowField.d.ts +23 -0
- package/dist/types/components/expressive/instagram-feed/InstagramFeed.d.ts +59 -0
- package/dist/types/components/expressive/lens/Lens.d.ts +23 -0
- package/dist/types/components/expressive/morphing-text/MorphingText.d.ts +21 -0
- package/dist/types/components/expressive/odometer/Odometer.d.ts +21 -0
- package/dist/types/components/expressive/tiktok/TikTok.d.ts +85 -0
- package/dist/types/components/expressive/tiktok/glyphs.d.ts +40 -0
- package/dist/types/components/expressive/typing-lines/TypingLines.d.ts +25 -0
- package/dist/types/components/expressive/weight-field/WeightField.d.ts +19 -0
- package/dist/types/components/expressive/youtube/YouTube.d.ts +73 -0
- package/dist/types/components/expressive/youtube/format.d.ts +2 -0
- package/dist/types/components/expressive/youtube/glyphs.d.ts +16 -0
- package/dist/types/components/expressive/youtube/media.d.ts +8 -0
- package/dist/types/components/expressive/youtube/post.d.ts +19 -0
- package/dist/types/components/expressive/youtube/short.d.ts +18 -0
- package/dist/types/components/expressive/youtube/video.d.ts +14 -0
- package/dist/types/components/internal/collection/collection.d.ts +19 -0
- package/dist/types/components/internal/glass/glint.d.ts +1 -0
- package/dist/types/components/internal/hooks/use-controllable.d.ts +1 -0
- package/dist/types/components/internal/hooks/use-media-query.d.ts +1 -0
- package/dist/types/components/internal/hooks/use-scroll-edges.d.ts +10 -0
- package/dist/types/components/internal/hooks/use-typeahead.d.ts +5 -0
- package/dist/types/components/internal/icon/Icon.d.ts +33 -0
- package/dist/types/components/internal/icon/IconSlot.d.ts +7 -0
- package/dist/types/components/internal/menu/menu-row.d.ts +11 -0
- package/dist/types/components/internal/overlay/focus.d.ts +8 -0
- package/dist/types/components/internal/overlay/layer.d.ts +38 -0
- package/dist/types/components/internal/overlay/modal.d.ts +18 -0
- package/dist/types/components/internal/overlay/position.d.ts +14 -0
- package/dist/types/components/internal/support/types.d.ts +15 -0
- package/dist/types/components/internal/utils/activation.d.ts +23 -0
- package/dist/types/components/internal/utils/cx.d.ts +1 -0
- package/dist/types/components/internal/utils/token-px.d.ts +1 -0
- package/dist/{avatar.d.ts → types/components/primitives/avatar/Avatar.d.ts} +10 -12
- package/dist/{avatar-group.d.ts → types/components/primitives/avatar/AvatarGroup.d.ts} +7 -9
- package/dist/{badge.d.ts → types/components/primitives/badge/Badge.d.ts} +8 -10
- package/dist/types/components/primitives/badge/CountBadge.d.ts +8 -0
- package/dist/types/components/primitives/badge/StatusBadge.d.ts +15 -0
- package/dist/types/components/primitives/badge/digit-strip.d.ts +5 -0
- package/dist/{button.d.ts → types/components/primitives/button/Button.d.ts} +6 -8
- package/dist/{checkbox.d.ts → types/components/primitives/checkbox/Checkbox.d.ts} +6 -8
- package/dist/types/components/primitives/checkbox/check-glyph.d.ts +6 -0
- package/dist/{collapse.d.ts → types/components/primitives/collapse/Collapse.d.ts} +12 -13
- package/dist/types/components/primitives/collapse/collapse.typecheck.d.ts +2 -0
- package/dist/{number-field.d.ts → types/components/primitives/input/NumberField.d.ts} +7 -9
- package/dist/{otp-field.d.ts → types/components/primitives/input/OtpField.d.ts} +6 -8
- package/dist/{text-field.d.ts → types/components/primitives/input/TextField.d.ts} +7 -9
- package/dist/types/components/primitives/input/field-chrome.d.ts +45 -0
- package/dist/{radio-group.d.ts → types/components/primitives/radio-group/RadioGroup.d.ts} +8 -10
- package/dist/{tag.d.ts → types/components/primitives/tag/Tag.d.ts} +9 -12
- package/dist/{toggle-tag.d.ts → types/components/primitives/tag/ToggleTag.d.ts} +7 -8
- package/dist/{textarea.d.ts → types/components/primitives/textarea/Textarea.d.ts} +7 -9
- package/dist/{toggle.d.ts → types/components/primitives/toggle/Toggle.d.ts} +6 -8
- package/dist/{dom-props-C0jrllBw.d.ts → types/dom-props.d.ts} +1 -3
- package/dist/types/engine/animate.d.ts +30 -0
- package/dist/types/engine/drag.d.ts +17 -0
- package/dist/types/engine/ease.d.ts +15 -0
- package/dist/types/engine/flip.d.ts +18 -0
- package/dist/types/engine/index.d.ts +4 -0
- package/dist/types/engine/loop.d.ts +9 -0
- package/dist/types/motion/element.d.ts +17 -0
- package/dist/types/motion/flip.d.ts +4 -0
- package/dist/types/motion/glide.d.ts +11 -0
- package/dist/types/motion/motion-timing.d.ts +16 -0
- package/dist/types/motion/presence-context.d.ts +11 -0
- package/dist/types/motion/presence.d.ts +12 -0
- package/dist/types/motion/presets.d.ts +6 -0
- package/dist/{timing-7JA_zQHP.d.ts → types/motion/timing.d.ts} +9 -9
- package/dist/types/motion/use-motion.d.ts +17 -0
- package/dist/types/tokens/component-styles.generated.d.ts +262 -0
- package/dist/{motion-scale-Canq4stZ.d.ts → types/tokens/motion-scale.d.ts} +4 -4
- package/dist/{motion-tokens.d.ts → types/tokens/motion-tokens.d.ts} +9 -9
- package/dist/types/tokens/theme-tokens.generated.d.ts +1249 -0
- package/dist/types/tokens/theme.d.ts +12 -0
- package/dist/typing-lines.css +92 -0
- package/dist/typing-lines.js +139 -0
- package/dist/typing-lines.js.map +1 -0
- package/dist/weight-field.css +84 -0
- package/dist/weight-field.js +17 -0
- package/dist/weight-field.js.map +1 -0
- package/dist/youtube.css +611 -0
- package/dist/youtube.js +814 -0
- package/dist/youtube.js.map +1 -0
- package/package.json +155 -49
- package/skills/zyncat-ui/SKILL.md +95 -0
- package/skills/zyncat-ui/references/components.md +85 -0
- package/skills/zyncat-ui/references/recipes.md +171 -0
- package/skills/zyncat-ui/references/theming.md +83 -0
- package/src/components/composites/alert/Alert.tsx +13 -11
- package/src/components/composites/alert/Alert.usage.md +15 -0
- package/src/components/composites/alert/alert.css +126 -121
- package/src/components/composites/date-picker/DateField.tsx +7 -2
- package/src/components/composites/date-picker/DateField.usage.md +10 -0
- package/src/components/composites/date-picker/DateRangeField.tsx +18 -16
- package/src/components/composites/date-picker/DateRangeField.usage.md +10 -0
- package/src/components/composites/date-picker/DateTimeField.tsx +10 -5
- package/src/components/composites/date-picker/DateTimeField.usage.md +12 -0
- package/src/components/composites/date-picker/TimeField.tsx +3 -1
- package/src/components/composites/date-picker/TimeField.usage.md +12 -0
- package/src/components/composites/date-picker/calendar-panel.tsx +15 -10
- package/src/components/composites/date-picker/date-picker.css +563 -559
- package/src/components/composites/date-picker/field-shell.tsx +9 -3
- package/src/components/composites/date-picker/range-panel.tsx +23 -8
- package/src/components/composites/date-picker/time-core.tsx +2 -0
- package/src/components/composites/dialog/Dialog.tsx +30 -15
- package/src/components/composites/dialog/Dialog.usage.md +17 -0
- package/src/components/composites/dialog/dialog.css +176 -172
- package/src/components/composites/dropdown/Dropdown.tsx +184 -0
- package/src/components/composites/dropdown/Dropdown.usage.md +19 -0
- package/src/components/composites/dropdown/dropdown.css +65 -0
- package/src/components/composites/dropdown/menu-panel.tsx +255 -0
- package/src/components/composites/dropdown/types.ts +95 -0
- package/src/components/composites/emoji-picker/EmojiPickerPanel.tsx +153 -0
- package/src/components/composites/emoji-picker/EmojiPickerPanel.usage.md +26 -0
- package/src/components/composites/emoji-picker/category-icons.ts +29 -0
- package/src/components/composites/emoji-picker/data.ts +83 -0
- package/src/components/composites/emoji-picker/dom.ts +79 -0
- package/src/components/composites/emoji-picker/getEmojiUrl.ts +17 -0
- package/src/components/composites/emoji-picker/navigation.ts +86 -0
- package/src/components/composites/emoji-picker/picker.ts +169 -0
- package/src/components/composites/emoji-picker/react/category-bar.tsx +77 -0
- package/src/components/composites/emoji-picker/react/useEmojiPicker.ts +139 -0
- package/src/components/composites/emoji-picker/scaffold.ts +74 -0
- package/src/components/composites/emoji-picker/search.ts +79 -0
- package/src/components/composites/emoji-picker/styles.css +221 -0
- package/src/components/composites/emoji-picker/types.ts +14 -0
- package/src/components/composites/modal/Modal.tsx +24 -13
- package/src/components/composites/modal/Modal.usage.md +24 -0
- package/src/components/composites/modal/modal.css +11 -7
- package/src/components/composites/pagination/Pagination.tsx +6 -11
- package/src/components/composites/pagination/Pagination.usage.md +12 -0
- package/src/components/composites/pagination/pagination.css +42 -38
- package/src/components/composites/popover/Popover.tsx +22 -7
- package/src/components/composites/popover/Popover.usage.md +15 -0
- package/src/components/composites/popover/popover.css +69 -65
- package/src/components/composites/select/MultiSelect.tsx +13 -5
- package/src/components/composites/select/MultiSelect.usage.md +12 -0
- package/src/components/composites/select/Select.tsx +23 -7
- package/src/components/composites/select/Select.usage.md +20 -0
- package/src/components/composites/select/core/index.ts +1 -1
- package/src/components/composites/select/core/menu.tsx +8 -6
- package/src/components/composites/select/core/panel.tsx +25 -26
- package/src/components/composites/select/core/trigger.tsx +36 -24
- package/src/components/composites/select/core/types.ts +17 -15
- package/src/components/composites/select/core/use-listbox.ts +22 -21
- package/src/components/composites/select/select.css +291 -386
- package/src/components/composites/sheet/Sheet.tsx +28 -18
- package/src/components/composites/sheet/Sheet.usage.md +15 -0
- package/src/components/composites/sheet/sheet.css +47 -23
- package/src/components/composites/sheet/use-sheet-drag.ts +19 -15
- package/src/components/composites/table/Table.tsx +17 -6
- package/src/components/composites/table/Table.usage.md +19 -0
- package/src/components/composites/table/table.css +333 -323
- package/src/components/composites/tabs/Tabs.tsx +31 -23
- package/src/components/composites/tabs/Tabs.usage.md +13 -0
- package/src/components/composites/tabs/tabs.css +163 -156
- package/src/components/composites/toast/Toast.tsx +48 -51
- package/src/components/composites/toast/Toast.usage.md +23 -0
- package/src/components/composites/toast/toast-store.usage.md +16 -0
- package/src/components/composites/toast/toast.css +237 -233
- package/src/components/composites/tooltip/Tooltip.tsx +13 -8
- package/src/components/composites/tooltip/Tooltip.usage.md +14 -0
- package/src/components/composites/tooltip/tooltip-host.tsx +29 -61
- package/src/components/composites/tooltip/tooltip-store.ts +10 -0
- package/src/components/composites/tooltip/tooltip.css +79 -78
- package/src/components/compound/support-rail/SupportRail.tsx +343 -0
- package/src/components/compound/support-rail/SupportRail.usage.md +18 -0
- package/src/components/compound/support-rail/support-rail.css +421 -0
- package/src/components/dev/MotionDevtools.tsx +3 -1
- package/src/components/dev/MotionDevtools.usage.md +16 -0
- package/src/components/dev/motion-devtools.css +237 -233
- package/src/components/expressive/confetti/Confetti.tsx +727 -0
- package/src/components/expressive/confetti/Confetti.usage.md +18 -0
- package/src/components/expressive/confetti/confetti.css +45 -0
- package/src/components/expressive/facebook-feed/FacebookFeed.tsx +200 -0
- package/src/components/expressive/facebook-feed/FacebookFeed.usage.md +18 -0
- package/src/components/expressive/facebook-feed/chrome.tsx +120 -0
- package/src/components/expressive/facebook-feed/facebook-feed.css +880 -0
- package/src/components/expressive/facebook-feed/icons.tsx +145 -0
- package/src/components/expressive/facebook-feed/post.tsx +213 -0
- package/src/components/expressive/facebook-feed/reel.tsx +199 -0
- package/src/components/expressive/facebook-feed/story.tsx +132 -0
- package/src/components/expressive/flow-field/FlowField.tsx +348 -0
- package/src/components/expressive/flow-field/FlowField.usage.md +19 -0
- package/src/components/expressive/flow-field/flow-field.css +49 -0
- package/src/components/expressive/instagram-feed/InstagramFeed.tsx +374 -0
- package/src/components/expressive/instagram-feed/InstagramFeed.usage.md +18 -0
- package/src/components/expressive/instagram-feed/instagram-feed.css +378 -0
- package/src/components/expressive/lens/Lens.tsx +415 -0
- package/src/components/expressive/lens/Lens.usage.md +20 -0
- package/src/components/expressive/lens/lens.css +119 -0
- package/src/components/expressive/morphing-text/MorphingText.tsx +328 -0
- package/src/components/expressive/morphing-text/MorphingText.usage.md +19 -0
- package/src/components/expressive/morphing-text/morphing-text.css +84 -0
- package/src/components/expressive/odometer/Odometer.tsx +158 -0
- package/src/components/expressive/odometer/Odometer.usage.md +17 -0
- package/src/components/expressive/odometer/odometer.css +61 -0
- package/src/components/expressive/tiktok/TikTok.tsx +542 -0
- package/src/components/expressive/tiktok/TikTok.usage.md +17 -0
- package/src/components/expressive/tiktok/glyphs.tsx +163 -0
- package/src/components/expressive/tiktok/tiktok.css +662 -0
- package/src/components/expressive/typing-lines/TypingLines.tsx +0 -0
- package/src/components/expressive/typing-lines/TypingLines.usage.md +17 -0
- package/src/components/expressive/typing-lines/typing-lines.css +92 -0
- package/src/components/expressive/weight-field/WeightField.tsx +41 -0
- package/src/components/expressive/weight-field/WeightField.usage.md +20 -0
- package/src/components/expressive/weight-field/weight-field.css +84 -0
- package/src/components/expressive/youtube/YouTube.tsx +192 -0
- package/src/components/expressive/youtube/YouTube.usage.md +18 -0
- package/src/components/expressive/youtube/format.ts +22 -0
- package/src/components/expressive/youtube/glyphs.tsx +235 -0
- package/src/components/expressive/youtube/media.tsx +18 -0
- package/src/components/expressive/youtube/post.tsx +282 -0
- package/src/components/expressive/youtube/short.tsx +212 -0
- package/src/components/expressive/youtube/video.tsx +75 -0
- package/src/components/expressive/youtube/youtube.css +611 -0
- package/src/components/internal/collection/collection.ts +44 -0
- package/src/components/internal/glass/glass.css +88 -84
- package/src/components/internal/hooks/use-media-query.ts +20 -0
- package/src/components/internal/hooks/use-typeahead.ts +28 -0
- package/src/components/internal/icon/Icon.tsx +2 -0
- package/src/components/internal/icon/IconSlot.tsx +2 -0
- package/src/components/internal/icon/icon.css +34 -30
- package/src/components/internal/menu/menu-row.tsx +34 -0
- package/src/components/internal/menu/menu-surface.css +127 -0
- package/src/components/internal/overlay/focus.ts +26 -10
- package/src/components/internal/overlay/layer.tsx +50 -9
- package/src/components/internal/overlay/modal.tsx +14 -12
- package/src/components/internal/overlay/overlay.css +24 -20
- package/src/components/internal/overlay/position.ts +19 -9
- package/src/components/internal/overlay/trigger.css +13 -0
- package/src/components/internal/support/types.ts +16 -0
- package/src/components/internal/utils/activation.ts +78 -0
- package/src/components/primitives/avatar/Avatar.tsx +2 -0
- package/src/components/primitives/avatar/Avatar.usage.md +12 -0
- package/src/components/primitives/avatar/AvatarGroup.tsx +3 -1
- package/src/components/primitives/avatar/AvatarGroup.usage.md +15 -0
- package/src/components/primitives/avatar/avatar.css +179 -174
- package/src/components/primitives/badge/Badge.tsx +3 -1
- package/src/components/primitives/badge/Badge.usage.md +14 -0
- package/src/components/primitives/badge/CountBadge.tsx +2 -2
- package/src/components/primitives/badge/CountBadge.usage.md +13 -0
- package/src/components/primitives/badge/StatusBadge.tsx +3 -1
- package/src/components/primitives/badge/StatusBadge.usage.md +14 -0
- package/src/components/primitives/badge/badge.css +166 -160
- package/src/components/primitives/badge/digit-strip.css +65 -0
- package/src/components/primitives/badge/{odometer.tsx → digit-strip.tsx} +3 -3
- package/src/components/primitives/button/Button.tsx +2 -0
- package/src/components/primitives/button/Button.usage.md +14 -0
- package/src/components/primitives/button/button.css +272 -246
- package/src/components/primitives/checkbox/Checkbox.tsx +3 -1
- package/src/components/primitives/checkbox/Checkbox.usage.md +12 -0
- package/src/components/primitives/checkbox/check-glyph.tsx +1 -0
- package/src/components/primitives/checkbox/checkbox.css +158 -153
- package/src/components/primitives/collapse/Collapse.tsx +3 -1
- package/src/components/primitives/collapse/Collapse.usage.md +17 -0
- package/src/components/primitives/collapse/collapse.css +70 -61
- package/src/components/primitives/collapse/collapse.typecheck.tsx +2 -0
- package/src/components/primitives/input/NumberField.tsx +18 -5
- package/src/components/primitives/input/NumberField.usage.md +12 -0
- package/src/components/primitives/input/OtpField.tsx +2 -0
- package/src/components/primitives/input/OtpField.usage.md +12 -0
- package/src/components/primitives/input/TextField.tsx +16 -4
- package/src/components/primitives/input/TextField.usage.md +13 -0
- package/src/components/primitives/input/field-chrome.tsx +11 -2
- package/src/components/primitives/input/input.css +296 -318
- package/src/components/primitives/radio-group/RadioGroup.tsx +20 -44
- package/src/components/primitives/radio-group/RadioGroup.usage.md +13 -0
- package/src/components/primitives/radio-group/radio-group.css +275 -276
- package/src/components/primitives/tag/Tag.tsx +10 -6
- package/src/components/primitives/tag/Tag.usage.md +14 -0
- package/src/components/primitives/tag/ToggleTag.tsx +4 -2
- package/src/components/primitives/tag/ToggleTag.usage.md +14 -0
- package/src/components/primitives/tag/tag.css +209 -231
- package/src/components/primitives/textarea/Textarea.tsx +17 -7
- package/src/components/primitives/textarea/Textarea.usage.md +12 -0
- package/src/components/primitives/textarea/textarea.css +205 -211
- package/src/components/primitives/toggle/Toggle.tsx +3 -1
- package/src/components/primitives/toggle/Toggle.usage.md +12 -0
- package/src/components/primitives/toggle/toggle.css +139 -135
- package/src/engine/animate.ts +40 -13
- package/src/engine/ease.ts +1 -0
- package/src/engine/flip.ts +32 -15
- package/src/engine/index.ts +2 -1
- package/src/engine/loop.ts +97 -0
- package/src/mcp/server.ts +315 -218
- package/src/motion/element.tsx +1 -0
- package/src/motion/flip.ts +29 -10
- package/src/motion/glide.tsx +11 -14
- package/src/motion/glide.usage.md +15 -0
- package/src/motion/motion-timing.ts +3 -3
- package/src/motion/presence.tsx +12 -5
- package/src/motion/presets.ts +13 -0
- package/src/motion/timing.ts +1 -0
- package/src/motion/use-motion.ts +16 -3
- package/src/styles.css +5 -0
- package/src/tokens/avatar.css +20 -16
- package/src/tokens/color.css +67 -56
- package/src/tokens/component-styles.generated.ts +270 -0
- package/src/tokens/elevation.css +28 -17
- package/src/tokens/fonts.css +1 -1
- package/src/tokens/glass.css +19 -15
- package/src/tokens/icons.css +8 -4
- package/src/tokens/layers.css +9 -4
- package/src/tokens/motion-scale.ts +4 -0
- package/src/tokens/motion-tokens.ts +42 -12
- package/src/tokens/motion-tokens.usage.md +16 -0
- package/src/tokens/motion.css +63 -45
- package/src/tokens/radius.css +12 -8
- package/src/tokens/semantic.css +62 -54
- package/src/tokens/spacing.css +25 -21
- package/src/tokens/theme-tokens.generated.ts +1278 -0
- package/src/tokens/theme.tsx +83 -0
- package/src/tokens/theme.usage.md +36 -0
- package/src/tokens/typography.css +53 -49
- package/dist/chunk-2ERBBFZS.js.map +0 -1
- package/dist/chunk-2F5PITAO.js.map +0 -1
- package/dist/chunk-2QWJ6FAX.js.map +0 -1
- package/dist/chunk-62P3KD57.js.map +0 -1
- package/dist/chunk-7SZCJ7WI.js.map +0 -1
- package/dist/chunk-AIQXS2XY.js.map +0 -1
- package/dist/chunk-AMFGY56I.js.map +0 -1
- package/dist/chunk-CONSWNIV.js.map +0 -1
- package/dist/chunk-DKVUPFQR.js.map +0 -1
- package/dist/chunk-I4XQ4PV2.js.map +0 -1
- package/dist/chunk-NEF5XAHG.js.map +0 -1
- package/dist/chunk-NGTA34V2.js.map +0 -1
- package/dist/chunk-NNXJCLTV.js.map +0 -1
- package/dist/chunk-PMECHR3A.js.map +0 -1
- package/dist/chunk-QDK66S4G.js.map +0 -1
- package/dist/chunk-S5ZTZANS.js.map +0 -1
- package/dist/chunk-U4MHX3KH.js.map +0 -1
- package/dist/chunk-VTJTGVZZ.js.map +0 -1
- package/dist/chunk-WFHRAKN3.js.map +0 -1
- package/dist/chunk-WM5J5TDI.js.map +0 -1
- package/dist/chunk-XJQQQJAO.js.map +0 -1
- package/dist/chunk-XWUWYSCT.js.map +0 -1
- package/dist/chunk-Y7AJQVWJ.js.map +0 -1
- package/dist/chunk-YGCVWGUG.js.map +0 -1
- package/dist/chunk-YGGCQNNU.js.map +0 -1
- package/dist/count-badge.d.ts +0 -13
- package/dist/date-range-field.d.ts +0 -33
- package/dist/field-chrome-CMPOQSLs.d.ts +0 -28
- package/dist/field-shell-Cuda-feL.d.ts +0 -24
- package/dist/glide.d.ts +0 -15
- package/dist/motion-devtools.d.ts +0 -51
- package/dist/status-badge.d.ts +0 -19
- package/dist/toast.d.ts +0 -12
- package/llms.txt +0 -220
- package/src/components/primitives/badge/odometer.css +0 -62
package/dist/textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/textarea/Textarea.tsx"],"names":[],"mappings":"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","file":"textarea.js","sourcesContent":["'use client';\n\nimport './textarea.css';\nimport {\n useEffect,\n useLayoutEffect,\n useRef,\n type ChangeEventHandler,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { FieldLabel, FieldMessage, resolveFieldMessage, type FieldMessagingProps } from '../input/field-chrome';\nimport type { DataAttributes } from '../../../dom-props';\nimport { cx } from '../../internal/utils/cx';\n\nconst RING_C = (2 * Math.PI * 7).toFixed(2);\n\n/** The native <textarea> props Textarea surfaces at the top level (the rest live in `htmlProps`). */\ntype TextareaNative = Pick<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'placeholder' | 'disabled' | 'readOnly' | 'onKeyDown'\n>;\n\ninterface TextareaOwnProps extends FieldMessagingProps, TextareaNative {\n /** Controlled text value. @default '' */\n value?: string;\n /** Change handler - fired on each edit with the textarea change event. */\n onChange?: ChangeEventHandler<HTMLTextAreaElement>;\n /** Fired on ⌘/Ctrl+Enter with the current text. */\n onSubmit?: (value: string) => void;\n /** Soft char limit: shows the meter + over-limit highlight. Does NOT truncate (use native maxLength for a hard stop). */\n max?: number;\n /** Rows shown before auto-grow kicks in. @default 3 */\n minRows?: number;\n /** Row cap - grows up to this, then the box scrolls. @default 10 */\n maxRows?: number;\n /** Remaining-chars threshold that flips the meter amber. Default 20. */\n warnAt?: number;\n /** Footer hint, left of the meter - e.g. a ⌘↵ affordance. */\n hint?: ReactNode;\n /** md (default) - lg (prominent composer). */\n size?: 'md' | 'lg';\n /** Extra class(es) merged onto the field root. */\n className?: string;\n /** Inline styles merged onto the field root. */\n style?: CSSProperties;\n}\n\nexport interface TextareaProps extends TextareaOwnProps {\n /** Standard <textarea> attributes (name, maxLength, aria-*, onKeyDown, ...) forwarded to the textarea. */\n htmlProps?: Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, keyof TextareaOwnProps | 'rows'> & DataAttributes;\n}\n\nexport function Textarea({\n id,\n label,\n required,\n optional,\n placeholder,\n helper,\n error,\n warning,\n success,\n value = '',\n onChange,\n onKeyDown,\n onSubmit,\n max,\n minRows = 3,\n maxRows = 10,\n warnAt = 20,\n hint,\n size,\n disabled,\n readOnly,\n className = '',\n style,\n htmlProps,\n}: TextareaProps) {\n const taRef = useRef<HTMLTextAreaElement>(null);\n const stackRef = useRef<HTMLDivElement>(null);\n const mirrorRef = useRef<HTMLDivElement>(null);\n const text = value ?? '';\n const count = text.length;\n const over = max ? Math.max(count - max, 0) : 0;\n const remaining = max ? max - count : 0;\n const meterState = over ? 'is-over' : max && remaining <= warnAt ? 'is-near' : '';\n\n const { state, msg, msgIcon } = resolveFieldMessage(error, warning, success, helper);\n\n const resize = () => {\n const el = taRef.current,\n stack = stackRef.current;\n if (!el || !stack) return;\n const start = stack.offsetHeight;\n el.style.height = 'auto';\n el.style.height = el.scrollHeight + 'px';\n const content = el.offsetHeight;\n const maxPx = parseFloat(getComputedStyle(stack).maxHeight) || Infinity;\n const target = Math.min(content, maxPx);\n if (target === start) {\n stack.style.overflowY = content > maxPx ? 'auto' : 'clip';\n return;\n }\n stack.style.overflowY = 'clip';\n stack.style.height = start + 'px';\n void stack.offsetHeight;\n stack.style.height = target + 'px';\n };\n useLayoutEffect(resize, [text, size]);\n useEffect(() => {\n const stack = stackRef.current;\n if (!stack) return undefined;\n let w = stack.offsetWidth;\n const ro = new ResizeObserver(() => {\n if (stack.offsetWidth !== w) {\n w = stack.offsetWidth;\n resize();\n }\n });\n ro.observe(stack);\n return () => ro.disconnect();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (onSubmit && (e.metaKey || e.ctrlKey) && e.key === 'Enter') {\n e.preventDefault();\n onSubmit(text);\n }\n onKeyDown?.(e);\n };\n\n const cls = cx('fld', 'fld--txa', size === 'lg' && 'fld--lg', state, className);\n const boxCls = cx('txa', disabled && 'is-disabled', readOnly && 'is-readonly');\n\n return (\n <div className={cls} style={style}>\n <FieldLabel id={id} label={label} required={required} optional={optional} />\n <div className={boxCls} style={{ '--txa-min-rows': minRows, '--txa-max-rows': maxRows } as CSSProperties}>\n <div className=\"txa__stack\" ref={stackRef}>\n <div className=\"txa__mirror\" ref={mirrorRef} aria-hidden=\"true\">\n {over ? text.slice(0, max) : text}\n {over ? <mark>{text.slice(max)}</mark> : null}\n {'\\n'}\n </div>\n <textarea\n id={id}\n className=\"txa__input\"\n ref={taRef}\n rows={minRows}\n value={text}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n onScroll={() => {\n if (mirrorRef.current) mirrorRef.current.scrollTop = taRef.current.scrollTop;\n }}\n aria-invalid={error ? true : undefined}\n {...htmlProps}\n />\n </div>\n {(max || hint) && (\n <div className=\"txa__bar\">\n {hint && <span className=\"txa__hint\">{hint}</span>}\n {max && (\n <span className={cx('txa__meter', meterState)}>\n <span className=\"txa__count\">{over || remaining <= warnAt ? remaining : `${count} / ${max}`}</span>\n <svg\n className=\"txa__ring\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n style={{ '--txa-ring-c': RING_C, '--txa-ring-p': Math.min(count / max, 1) } as CSSProperties}\n >\n <circle className=\"txa__ring-trk\" cx=\"8\" cy=\"8\" r=\"7\" />\n <circle className=\"txa__ring-prg\" cx=\"8\" cy=\"8\" r=\"7\" />\n </svg>\n </span>\n )}\n </div>\n )}\n </div>\n <FieldMessage message={msg} icon={msgIcon} />\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/textarea/Textarea.tsx"],"names":[],"mappings":"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","file":"textarea.js","sourcesContent":["'use client';\n\nimport './textarea.css';\n\nimport {\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n type ChangeEventHandler,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\n\nimport type { DataAttributes } from '../../../dom-props';\nimport { cx } from '../../internal/utils/cx';\nimport {\n FieldLabel,\n FieldMessage,\n fieldMessageId,\n joinIds,\n resolveFieldMessage,\n type FieldMessagingProps,\n} from '../input/field-chrome';\n\nconst RING_C = (2 * Math.PI * 7).toFixed(2);\n\n/** The native <textarea> props Textarea surfaces at the top level (the rest live in `htmlProps`). */\ntype TextareaNative = Pick<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'placeholder' | 'disabled' | 'readOnly' | 'onKeyDown'\n>;\n\ninterface TextareaOwnProps extends FieldMessagingProps, TextareaNative {\n /** Controlled text value. @default '' */\n value?: string;\n /** Change handler - fired on each edit with the textarea change event. */\n onChange?: ChangeEventHandler<HTMLTextAreaElement>;\n /** Fired on ⌘/Ctrl+Enter with the current text. */\n onSubmit?: (value: string) => void;\n /** Soft char limit: shows the meter + over-limit highlight. Does NOT truncate (use native maxLength for a hard stop). */\n max?: number;\n /** Rows shown before auto-grow kicks in. @default 3 */\n minRows?: number;\n /** Row cap - grows up to this, then the box scrolls. @default 10 */\n maxRows?: number;\n /** Remaining-chars threshold that flips the meter amber. Default 20. */\n warnAt?: number;\n /** Footer hint, left of the meter - e.g. a ⌘↵ affordance. */\n hint?: ReactNode;\n /** md (default) - lg (prominent composer). */\n size?: 'md' | 'lg';\n /** Extra class(es) merged onto the field root. */\n className?: string;\n /** Inline styles merged onto the field root. */\n style?: CSSProperties;\n}\n\nexport interface TextareaProps extends TextareaOwnProps {\n /** Standard <textarea> attributes (name, maxLength, aria-*, onKeyDown, ...) forwarded to the textarea. */\n htmlProps?: Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, keyof TextareaOwnProps | 'rows'> & DataAttributes;\n}\n\nexport function Textarea({\n id,\n label,\n required,\n optional,\n placeholder,\n helper,\n error,\n warning,\n success,\n value = '',\n onChange,\n onKeyDown,\n onSubmit,\n max,\n minRows = 3,\n maxRows = 10,\n warnAt = 20,\n hint,\n size,\n disabled,\n readOnly,\n className = '',\n style,\n htmlProps,\n}: TextareaProps) {\n const taRef = useRef<HTMLTextAreaElement>(null);\n const stackRef = useRef<HTMLDivElement>(null);\n const mirrorRef = useRef<HTMLDivElement>(null);\n const text = value ?? '';\n const count = text.length;\n const over = max ? Math.max(count - max, 0) : 0;\n const remaining = max ? max - count : 0;\n const meterState = over ? 'is-over' : max && remaining <= warnAt ? 'is-near' : '';\n\n const { state, msg, msgIcon } = resolveFieldMessage(error, warning, success, helper);\n const autoId = useId();\n const msgId = fieldMessageId(id ?? autoId, msg);\n\n const resize = () => {\n const el = taRef.current,\n stack = stackRef.current;\n if (!el || !stack) return;\n const start = stack.offsetHeight;\n el.style.height = 'auto';\n el.style.height = el.scrollHeight + 'px';\n const content = el.offsetHeight;\n const maxPx = parseFloat(getComputedStyle(stack).maxHeight) || Infinity;\n const target = Math.min(content, maxPx);\n stack.style.overflowY = content > maxPx ? 'auto' : 'clip';\n if (target === start) return;\n stack.style.height = start + 'px';\n void stack.offsetHeight;\n stack.style.height = target + 'px';\n };\n useLayoutEffect(resize, [text, size]);\n useEffect(() => {\n const stack = stackRef.current;\n if (!stack) return undefined;\n let w = stack.offsetWidth;\n const ro = new ResizeObserver(() => {\n if (stack.offsetWidth !== w) {\n w = stack.offsetWidth;\n resize();\n }\n });\n ro.observe(stack);\n return () => ro.disconnect();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (onSubmit && (e.metaKey || e.ctrlKey) && e.key === 'Enter') {\n e.preventDefault();\n onSubmit(text);\n }\n onKeyDown?.(e);\n };\n\n const cls = cx('fld', 'fld--txa', size === 'lg' && 'fld--lg', state, className);\n const boxCls = cx('txa', disabled && 'is-disabled', readOnly && 'is-readonly');\n\n return (\n <div className={cls} style={style}>\n <FieldLabel id={id} label={label} required={required} optional={optional} />\n <div className={boxCls} style={{ '--txa-min-rows': minRows, '--txa-max-rows': maxRows } as CSSProperties}>\n <div className=\"txa__stack\" ref={stackRef}>\n <div className=\"txa__mirror\" ref={mirrorRef} aria-hidden=\"true\">\n {over ? text.slice(0, max) : text}\n {over ? <mark>{text.slice(max)}</mark> : null}\n {'\\n'}\n </div>\n <textarea\n id={id}\n className=\"txa__input\"\n ref={taRef}\n rows={minRows}\n value={text}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n onScroll={() => {\n if (mirrorRef.current) mirrorRef.current.scrollTop = taRef.current.scrollTop;\n }}\n aria-invalid={error ? true : undefined}\n {...htmlProps}\n aria-describedby={joinIds(msgId, htmlProps?.['aria-describedby'])}\n />\n </div>\n {(max || hint) && (\n <div className=\"txa__bar\">\n {hint && <span className=\"txa__hint\">{hint}</span>}\n {max && (\n <span className={cx('txa__meter', meterState)}>\n <span className=\"txa__count\">{over || remaining <= warnAt ? remaining : `${count} / ${max}`}</span>\n <svg\n className=\"txa__ring\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n style={{ '--txa-ring-c': RING_C, '--txa-ring-p': Math.min(count / max, 1) } as CSSProperties}\n >\n <circle className=\"txa__ring-trk\" cx=\"8\" cy=\"8\" r=\"7\" />\n <circle className=\"txa__ring-prg\" cx=\"8\" cy=\"8\" r=\"7\" />\n </svg>\n </span>\n )}\n </div>\n )}\n </div>\n <FieldMessage id={msgId} message={msg} icon={msgIcon} />\n </div>\n );\n}\n"]}
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/tokens/theme-tokens.generated.ts
|
|
4
|
+
var reducedMotionTokens = {
|
|
5
|
+
"--duration-fast": "1ms",
|
|
6
|
+
"--duration-base": "1ms",
|
|
7
|
+
"--duration-slow": "1ms",
|
|
8
|
+
"--duration-slower": "1ms",
|
|
9
|
+
"--duration-slowest": "1ms",
|
|
10
|
+
"--duration-spin": "1200ms"
|
|
11
|
+
};
|
|
12
|
+
var BASE = "base";
|
|
13
|
+
var kebabize = (key) => key.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([a-zA-Z])([0-9])/g, "$1-$2").replace(/([0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
14
|
+
var pushDeclarations = (into, group, prefix) => {
|
|
15
|
+
for (const [key, value] of Object.entries(group ?? {}))
|
|
16
|
+
if (value != null) into.push([`--${prefix}${kebabize(key)}`, String(value)]);
|
|
17
|
+
};
|
|
18
|
+
var resolveDeclarations = (tokens) => {
|
|
19
|
+
const declarations = [];
|
|
20
|
+
for (const [group, values] of Object.entries(tokens ?? {})) {
|
|
21
|
+
if (!values) continue;
|
|
22
|
+
if (group === "custom") {
|
|
23
|
+
for (const [property, value] of Object.entries(values))
|
|
24
|
+
if (value != null) declarations.push([property, String(value)]);
|
|
25
|
+
} else if (group === "components") {
|
|
26
|
+
for (const [component, knobs] of Object.entries(values))
|
|
27
|
+
if (knobs) pushDeclarations(declarations, knobs, `${kebabize(component)}-`);
|
|
28
|
+
} else {
|
|
29
|
+
pushDeclarations(declarations, values, "");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return declarations;
|
|
33
|
+
};
|
|
34
|
+
var cssBlock = (selector, declarations, indent = "") => `${indent}${selector} {
|
|
35
|
+
${declarations.map(([name, value]) => `${indent} ${name}: ${value};`).join("\n")}
|
|
36
|
+
${indent}}`;
|
|
37
|
+
var renderThemeCss = (theme) => {
|
|
38
|
+
const blocks = Object.entries(theme ?? {}).map(([name, tokens]) => ({ name, declarations: resolveDeclarations(tokens) })).filter((block) => block.declarations.length).sort((a, b) => Number(b.name === BASE) - Number(a.name === BASE));
|
|
39
|
+
const collapsed = [];
|
|
40
|
+
const seen = /* @__PURE__ */ new Set();
|
|
41
|
+
for (const [cssName] of blocks.flatMap((block) => block.declarations)) {
|
|
42
|
+
const collapseValue = reducedMotionTokens[cssName];
|
|
43
|
+
if (collapseValue && !seen.has(cssName)) {
|
|
44
|
+
seen.add(cssName);
|
|
45
|
+
collapsed.push([cssName, collapseValue]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const selectorFor = (name) => name === BASE ? ":root" : `[data-theme='${name}']`;
|
|
49
|
+
const parts = blocks.map((block) => cssBlock(selectorFor(block.name), block.declarations));
|
|
50
|
+
if (collapsed.length) {
|
|
51
|
+
const scopes = blocks.map((block) => selectorFor(block.name)).join(",\n ");
|
|
52
|
+
parts.push(`@media (prefers-reduced-motion: reduce) {
|
|
53
|
+
${cssBlock(scopes, collapsed, " ")}
|
|
54
|
+
}`);
|
|
55
|
+
}
|
|
56
|
+
return parts.join("\n");
|
|
57
|
+
};
|
|
58
|
+
function defineTheme(tokens) {
|
|
59
|
+
return tokens;
|
|
60
|
+
}
|
|
61
|
+
function ZyncatTheme({ theme }) {
|
|
62
|
+
const css = renderThemeCss(theme);
|
|
63
|
+
if (!css) return null;
|
|
64
|
+
return /* @__PURE__ */ jsx("style", { "data-zyncat-theme": "", children: css });
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { ZyncatTheme, defineTheme };
|
|
68
|
+
//# sourceMappingURL=theme.js.map
|
|
69
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/theme-tokens.generated.ts","../src/tokens/theme.tsx"],"names":[],"mappings":"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","file":"theme.js","sourcesContent":["/**\n * The themeable vocabulary, grouped the way the tokens are organised. Each key is one\n * design token in camelCase - `accent` is `--accent`, `radiusMd` is `--radius-md` - and\n * takes any CSS the property accepts, including `var()` references to other tokens.\n *\n * Generated from the token and component CSS by `scripts/gen-theme.mjs` - `pnpm sync` rebuilds it.\n */\nexport interface ColorTokens {\n /** `--gray-0`. Default: `oklch(1 0 0)`. */\n gray0?: string | number;\n /** `--gray-25`. Default: `oklch(0.992 0.002 198)`. */\n gray25?: string | number;\n /** `--gray-50`. Default: `oklch(0.984 0.003 198)`. */\n gray50?: string | number;\n /** `--gray-100`. Default: `oklch(0.97 0.004 198)`. */\n gray100?: string | number;\n /** `--gray-150`. Default: `oklch(0.954 0.005 198)`. */\n gray150?: string | number;\n /** `--gray-200`. Default: `oklch(0.924 0.006 198)`. */\n gray200?: string | number;\n /** `--gray-300`. Default: `oklch(0.874 0.007 198)`. */\n gray300?: string | number;\n /** `--gray-400`. Default: `oklch(0.765 0.009 198)`. */\n gray400?: string | number;\n /** `--gray-500`. Default: `oklch(0.642 0.011 198)`. */\n gray500?: string | number;\n /** `--gray-600`. Default: `oklch(0.532 0.012 198)`. */\n gray600?: string | number;\n /** `--gray-700`. Default: `oklch(0.422 0.012 198)`. */\n gray700?: string | number;\n /** `--gray-800`. Default: `oklch(0.305 0.01 198)`. */\n gray800?: string | number;\n /** `--gray-900`. Default: `oklch(0.225 0.008 198)`. */\n gray900?: string | number;\n /** `--gray-950`. Default: `oklch(0.165 0.007 198)`. */\n gray950?: string | number;\n /** `--teal-50`. Default: `oklch(0.972 0.02 198)`. */\n teal50?: string | number;\n /** `--teal-100`. Default: `oklch(0.935 0.04 198)`. */\n teal100?: string | number;\n /** `--teal-200`. Default: `oklch(0.88 0.066 198)`. */\n teal200?: string | number;\n /** `--teal-300`. Default: `oklch(0.795 0.092 198)`. */\n teal300?: string | number;\n /** `--teal-400`. Default: `oklch(0.705 0.112 198)`. */\n teal400?: string | number;\n /** `--teal-500`. Default: `oklch(0.63 0.118 198)`. */\n teal500?: string | number;\n /** `--teal-600`. Default: `oklch(0.56 0.114 198)`. */\n teal600?: string | number;\n /** `--teal-700`. Default: `oklch(0.478 0.1 198)`. */\n teal700?: string | number;\n /** `--teal-800`. Default: `oklch(0.4 0.082 198)`. */\n teal800?: string | number;\n /** `--teal-900`. Default: `oklch(0.32 0.062 198)`. */\n teal900?: string | number;\n /** `--green-50`. Default: `oklch(0.965 0.028 152)`. */\n green50?: string | number;\n /** `--green-500`. Default: `oklch(0.62 0.13 152)`. */\n green500?: string | number;\n /** `--green-600`. Default: `oklch(0.548 0.122 152)`. */\n green600?: string | number;\n /** `--green-700`. Default: `oklch(0.462 0.1 152)`. */\n green700?: string | number;\n /** `--amber-50`. Default: `oklch(0.972 0.034 75)`. */\n amber50?: string | number;\n /** `--amber-500`. Default: `oklch(0.76 0.14 75)`. */\n amber500?: string | number;\n /** `--amber-600`. Default: `oklch(0.7 0.142 75)`. */\n amber600?: string | number;\n /** `--amber-700`. Default: `oklch(0.56 0.118 75)`. */\n amber700?: string | number;\n /** `--red-50`. Default: `oklch(0.968 0.02 27)`. */\n red50?: string | number;\n /** `--red-300`. Default: `oklch(0.8 0.09 27)`. */\n red300?: string | number;\n /** `--red-400`. Default: `oklch(0.64 0.2 27)`. */\n red400?: string | number;\n /** `--red-500`. Default: `oklch(0.602 0.196 27)`. */\n red500?: string | number;\n /** `--red-600`. Default: `oklch(0.545 0.196 27)`. */\n red600?: string | number;\n /** `--red-700`. Default: `oklch(0.478 0.172 27)`. */\n red700?: string | number;\n /** `--gray-wash`. Default: `color-mix(in oklab, var(--gray-700) 6%, transparent)`. */\n grayWash?: string | number;\n /** `--gray-wash-strong`. Default: `color-mix(in oklab, var(--gray-700) 10%, transparent)`. */\n grayWashStrong?: string | number;\n /** `--teal-wash`. Default: `oklch(0.63 0.118 198 / 0.05)`. */\n tealWash?: string | number;\n /** `--green-wash`. Default: `oklch(0.62 0.13 152 / 0.1)`. */\n greenWash?: string | number;\n /** `--amber-wash`. Default: `oklch(0.76 0.14 75 / 0.12)`. */\n amberWash?: string | number;\n /** `--red-wash`. Default: `oklch(0.602 0.196 27 / 0.1)`. */\n redWash?: string | number;\n /** `--shadow-rgb`. Default: `15 22 25`. */\n shadowRgb?: string | number;\n /** `--bg-app`. Default: `var(--gray-0)`. */\n bgApp?: string | number;\n /** `--bg-surface`. Default: `var(--gray-0)`. */\n bgSurface?: string | number;\n /** `--bg-surface-raised`. Default: `var(--gray-0)`. */\n bgSurfaceRaised?: string | number;\n /** `--bg-subtle`. Default: `var(--gray-50)`. */\n bgSubtle?: string | number;\n /** `--bg-muted`. Default: `var(--gray-100)`. */\n bgMuted?: string | number;\n /** `--bg-inset`. Default: `var(--gray-150)`. */\n bgInset?: string | number;\n /** `--bg-overlay`. Default: `color-mix(in oklab, var(--gray-900) 44%, transparent)`. */\n bgOverlay?: string | number;\n /** `--text-strong`. Default: `var(--gray-950)`. */\n textStrong?: string | number;\n /** `--text-body`. Default: `var(--gray-800)`. */\n textBody?: string | number;\n /** `--text-secondary`. Default: `var(--gray-700)`. */\n textSecondary?: string | number;\n /** `--text-muted`. Default: `var(--gray-600)`. */\n textMuted?: string | number;\n /** `--text-subtle`. Default: `var(--gray-500)`. */\n textSubtle?: string | number;\n /** `--text-disabled`. Default: `var(--gray-400)`. */\n textDisabled?: string | number;\n /** `--text-accent`. Default: `var(--teal-700)`. */\n textAccent?: string | number;\n /** `--text-on-accent`. Default: `var(--gray-0)`. */\n textOnAccent?: string | number;\n /** `--text-inverse`. Default: `var(--gray-0)`. */\n textInverse?: string | number;\n /** `--border-subtle`. Default: `var(--gray-150)`. */\n borderSubtle?: string | number;\n /** `--border-default`. Default: `var(--gray-200)`. */\n borderDefault?: string | number;\n /** `--border-strong`. Default: `var(--gray-300)`. */\n borderStrong?: string | number;\n /** `--accent-lift`. Default: `var(--teal-400)`. */\n accentLift?: string | number;\n /** `--accent`. Default: `var(--teal-500)`. */\n accent?: string | number;\n /** `--accent-hover`. Default: `var(--teal-600)`. */\n accentHover?: string | number;\n /** `--accent-active`. Default: `var(--teal-700)`. */\n accentActive?: string | number;\n /** `--accent-subtle`. Default: `var(--teal-50)`. */\n accentSubtle?: string | number;\n /** `--accent-border`. Default: `var(--teal-200)`. */\n accentBorder?: string | number;\n /** `--accent-disabled`. Default: `var(--teal-300)`. */\n accentDisabled?: string | number;\n /** `--success-subtle`. Default: `var(--green-50)`. */\n successSubtle?: string | number;\n /** `--success`. Default: `var(--green-600)`. */\n success?: string | number;\n /** `--success-text`. Default: `var(--green-700)`. */\n successText?: string | number;\n /** `--warning-subtle`. Default: `var(--amber-50)`. */\n warningSubtle?: string | number;\n /** `--warning`. Default: `var(--amber-600)`. */\n warning?: string | number;\n /** `--warning-text`. Default: `var(--amber-700)`. */\n warningText?: string | number;\n /** `--danger-subtle`. Default: `var(--red-50)`. */\n dangerSubtle?: string | number;\n /** `--danger`. Default: `var(--red-600)`. */\n danger?: string | number;\n /** `--danger-text`. Default: `var(--red-700)`. */\n dangerText?: string | number;\n /** `--info-subtle`. Default: `var(--teal-50)`. */\n infoSubtle?: string | number;\n /** `--info`. Default: `var(--teal-600)`. */\n info?: string | number;\n /** `--info-text`. Default: `var(--teal-700)`. */\n infoText?: string | number;\n /** `--danger-disabled`. Default: `var(--red-300)`. */\n dangerDisabled?: string | number;\n /** `--neutral-wash`. Default: `var(--gray-wash)`. */\n neutralWash?: string | number;\n /** `--neutral-wash-press`. Default: `var(--gray-wash-strong)`. */\n neutralWashPress?: string | number;\n /** `--accent-wash`. Default: `var(--teal-wash)`. */\n accentWash?: string | number;\n /** `--success-wash`. Default: `var(--green-wash)`. */\n successWash?: string | number;\n /** `--warning-wash`. Default: `var(--amber-wash)`. */\n warningWash?: string | number;\n /** `--danger-wash`. Default: `var(--red-wash)`. */\n dangerWash?: string | number;\n /** `--glass-tint-neutral`. Default: `color-mix(in oklab, var(--gray-600) 13%, transparent)`. */\n glassTintNeutral?: string | number;\n /** `--glass-tint-info`. Default: `color-mix(in oklab, var(--info) 17%, transparent)`. */\n glassTintInfo?: string | number;\n /** `--glass-tint-success`. Default: `color-mix(in oklab, var(--success) 17%, transparent)`. */\n glassTintSuccess?: string | number;\n /** `--glass-tint-warning`. Default: `color-mix(in oklab, var(--warning) 21%, transparent)`. */\n glassTintWarning?: string | number;\n /** `--glass-tint-danger`. Default: `color-mix(in oklab, var(--danger) 17%, transparent)`. */\n glassTintDanger?: string | number;\n /** `--focus-ring`. Default: `var(--ring-accent)`. */\n focusRing?: string | number;\n}\n\nexport interface TypeTokens {\n /** `--font-sans`. Default: `'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif`. */\n fontSans?: string | number;\n /** `--font-mono`. Default: `'Geist Mono', ui-monospace, 'SF Mono', 'Menlo', monospace`. */\n fontMono?: string | number;\n /** `--weight-regular`. Default: `400`. */\n weightRegular?: string | number;\n /** `--weight-medium`. Default: `500`. */\n weightMedium?: string | number;\n /** `--weight-semibold`. Default: `600`. */\n weightSemibold?: string | number;\n /** `--size-micro`. Default: `0.75rem`. */\n sizeMicro?: string | number;\n /** `--size-caption`. Default: `0.8125rem`. */\n sizeCaption?: string | number;\n /** `--size-body`. Default: `0.875rem`. */\n sizeBody?: string | number;\n /** `--size-body-lg`. Default: `1rem`. */\n sizeBodyLg?: string | number;\n /** `--size-heading`. Default: `1.125rem`. */\n sizeHeading?: string | number;\n /** `--size-title`. Default: `1.3125rem`. */\n sizeTitle?: string | number;\n /** `--size-title-lg`. Default: `1.625rem`. */\n sizeTitleLg?: string | number;\n /** `--size-display`. Default: `2rem`. */\n sizeDisplay?: string | number;\n /** `--size-display-lg`. Default: `2.5rem`. */\n sizeDisplayLg?: string | number;\n /** `--leading-micro`. Default: `1rem`. */\n leadingMicro?: string | number;\n /** `--leading-caption`. Default: `1.125rem`. */\n leadingCaption?: string | number;\n /** `--leading-body`. Default: `1.375rem`. */\n leadingBody?: string | number;\n /** `--leading-body-lg`. Default: `1.625rem`. */\n leadingBodyLg?: string | number;\n /** `--leading-heading`. Default: `1.625rem`. */\n leadingHeading?: string | number;\n /** `--leading-title`. Default: `1.75rem`. */\n leadingTitle?: string | number;\n /** `--leading-title-lg`. Default: `2rem`. */\n leadingTitleLg?: string | number;\n /** `--leading-display`. Default: `2.375rem`. */\n leadingDisplay?: string | number;\n /** `--leading-display-lg`. Default: `2.875rem`. */\n leadingDisplayLg?: string | number;\n /** `--measure-floating`. Default: `36ch`. */\n measureFloating?: string | number;\n /** `--tracking-caps`. Default: `0.04em`. */\n trackingCaps?: string | number;\n /** `--tracking-normal`. Default: `0em`. */\n trackingNormal?: string | number;\n /** `--tracking-tight`. Default: `-0.011em`. */\n trackingTight?: string | number;\n /** `--tracking-tighter`. Default: `-0.016em`. */\n trackingTighter?: string | number;\n /** `--tracking-display`. Default: `-0.021em`. */\n trackingDisplay?: string | number;\n /** `--type-display-lg`. Default: `var(--weight-semibold) var(--size-display-lg)/var(--leading-display-lg) var(--font-sans)`. */\n typeDisplayLg?: string | number;\n /** `--type-display`. Default: `var(--weight-semibold) var(--size-display)/var(--leading-display) var(--font-sans)`. */\n typeDisplay?: string | number;\n /** `--type-title-lg`. Default: `var(--weight-semibold) var(--size-title-lg)/var(--leading-title-lg) var(--font-sans)`. */\n typeTitleLg?: string | number;\n /** `--type-title`. Default: `var(--weight-semibold) var(--size-title)/var(--leading-title) var(--font-sans)`. */\n typeTitle?: string | number;\n /** `--type-heading`. Default: `var(--weight-semibold) var(--size-heading)/var(--leading-heading) var(--font-sans)`. */\n typeHeading?: string | number;\n /** `--type-body-lg`. Default: `var(--weight-regular) var(--size-body-lg)/var(--leading-body-lg) var(--font-sans)`. */\n typeBodyLg?: string | number;\n /** `--type-body`. Default: `var(--weight-regular) var(--size-body)/var(--leading-body) var(--font-sans)`. */\n typeBody?: string | number;\n /** `--type-label`. Default: `var(--weight-medium) var(--size-body)/var(--leading-body) var(--font-sans)`. */\n typeLabel?: string | number;\n /** `--type-caption`. Default: `var(--weight-regular) var(--size-caption)/var(--leading-caption) var(--font-sans)`. */\n typeCaption?: string | number;\n /** `--type-micro`. Default: `var(--weight-medium) var(--size-micro)/var(--leading-micro) var(--font-sans)`. */\n typeMicro?: string | number;\n /** `--type-mono`. Default: `var(--weight-regular) var(--size-caption)/var(--leading-caption) var(--font-mono)`. */\n typeMono?: string | number;\n}\n\nexport interface SpaceTokens {\n /** `--space-px`. Default: `1px`. */\n spacePx?: string | number;\n /** `--space-0`. Default: `0`. */\n space0?: string | number;\n /** `--space-1`. Default: `0.25rem`. */\n space1?: string | number;\n /** `--space-2`. Default: `0.5rem`. */\n space2?: string | number;\n /** `--space-3`. Default: `0.75rem`. */\n space3?: string | number;\n /** `--space-4`. Default: `1rem`. */\n space4?: string | number;\n /** `--space-5`. Default: `1.5rem`. */\n space5?: string | number;\n /** `--space-6`. Default: `2rem`. */\n space6?: string | number;\n /** `--space-7`. Default: `3rem`. */\n space7?: string | number;\n /** `--space-8`. Default: `4rem`. */\n space8?: string | number;\n /** `--space-9`. Default: `6rem`. */\n space9?: string | number;\n /** `--space-10`. Default: `8rem`. */\n space10?: string | number;\n /** `--container-max`. Default: `72rem`. */\n containerMax?: string | number;\n /** `--measure-prose`. Default: `38rem`. */\n measureProse?: string | number;\n /** `--sidebar-width`. Default: `16rem`. */\n sidebarWidth?: string | number;\n /** `--control-height-sm`. Default: `1.75rem`. */\n controlHeightSm?: string | number;\n /** `--control-height`. Default: `2rem`. */\n controlHeight?: string | number;\n /** `--control-height-lg`. Default: `2.3rem`. */\n controlHeightLg?: string | number;\n /** `--control-box`. Default: `1.125rem`. */\n controlBox?: string | number;\n /** `--control-switch` - switch track (md); the one control size off the scale - width reuses --control-height(-sm), sm height reuses --space-4. Default: `1.25rem`. */\n controlSwitch?: string | number;\n}\n\nexport interface RadiusTokens {\n /** `--radius-0`. Default: `0`. */\n radius0?: string | number;\n /** `--radius-sm`. Default: `0.25rem`. */\n radiusSm?: string | number;\n /** `--radius-md`. Default: `0.375rem`. */\n radiusMd?: string | number;\n /** `--radius-lg`. Default: `0.5rem`. */\n radiusLg?: string | number;\n /** `--radius-xl`. Default: `0.75rem`. */\n radiusXl?: string | number;\n /** `--radius-2xl`. Default: `1rem`. */\n radius2xl?: string | number;\n /** `--radius-full`. Default: `624.9375rem`. */\n radiusFull?: string | number;\n}\n\nexport interface ElevationTokens {\n /** `--shadow-xs`. Default: `0 1px 1px rgb(var(--shadow-rgb) / 0.04)`. */\n shadowXs?: string | number;\n /** `--shadow-sm`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.05), 0 1px 1px rgb(var(--shadow-rgb) / 0.04)`. */\n shadowSm?: string | number;\n /** `--shadow-md`. Default: `0 2px 4px rgb(var(--shadow-rgb) / 0.04), 0 6px 12px rgb(var(--shadow-rgb) / 0.07)`. */\n shadowMd?: string | number;\n /** `--shadow-lg`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.06), 0 4px 8px rgb(var(--shadow-rgb) / 0.04), 0 12px 28px rgb(var(--shadow-rgb) / 0.1)`. */\n shadowLg?: string | number;\n /** `--shadow-xl`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.06), 0 8px 16px rgb(var(--shadow-rgb) / 0.06), 0 24px 48px rgb(var(--shadow-rgb) / 0.14)`. */\n shadowXl?: string | number;\n /** `--border-hairline`. Default: `1px`. */\n borderHairline?: string | number;\n /** `--border-emphasis`. Default: `1.5px`. */\n borderEmphasis?: string | number;\n /** `--ring-accent`. Default: `0 0 0 3px color-mix(in oklab, var(--accent) 32%, transparent)`. */\n ringAccent?: string | number;\n /** `--ring-danger`. Default: `0 0 0 3px oklch(0.602 0.196 27 / 0.3)`. */\n ringDanger?: string | number;\n /** `--ring-warning`. Default: `0 0 0 3px color-mix(in oklab, var(--warning) 30%, transparent)`. */\n ringWarning?: string | number;\n /** `--ring-success`. Default: `0 0 0 3px color-mix(in oklab, var(--success) 30%, transparent)`. */\n ringSuccess?: string | number;\n /** `--ring-offset`. Default: `0 0 0 2px var(--bg-surface), 0 0 0 4px color-mix(in oklab, var(--accent) 40%, transparent)`. */\n ringOffset?: string | number;\n}\n\nexport interface MotionTokens {\n /** `--duration-fast`. Default: `140ms`. Collapses to `1ms` under reduced motion. */\n durationFast?: string | number;\n /** `--duration-base`. Default: `200ms`. Collapses to `1ms` under reduced motion. */\n durationBase?: string | number;\n /** `--duration-slow`. Default: `300ms`. Collapses to `1ms` under reduced motion. */\n durationSlow?: string | number;\n /** `--duration-slower` - large-surface movement - dialog, sheet, page-scale reveals. Default: `450ms`. Collapses to `1ms` under reduced motion. */\n durationSlower?: string | number;\n /** `--duration-slowest` - hero-scale movement - card expansion, container transforms; the scale's ceiling. Default: `900ms`. Collapses to `1ms` under reduced motion. */\n durationSlowest?: string | number;\n /** `--duration-spin` - continuous loaders only; deliberately outside the UI-transition scale. Default: `600ms`. Collapses to `1200ms` under reduced motion. */\n durationSpin?: string | number;\n /** `--duration-pulse` - ambient live/processing breathing; not collapsed under reduced motion. Default: `1600ms`. */\n durationPulse?: string | number;\n /** `--ease-standard`. Default: `cubic-bezier(0.2, 0, 0, 1)`. */\n easeStandard?: string | number;\n /** `--ease-entrance`. Default: `cubic-bezier(0.25, 1, 0.4, 1)`. */\n easeEntrance?: string | number;\n /** `--ease-exit`. Default: `cubic-bezier(0.4, 0, 1, 1)`. */\n easeExit?: string | number;\n /** `--ease-spring`. Default: `cubic-bezier(0.34, 1.4, 0.5, 1)`. */\n easeSpring?: string | number;\n /** `--ease-glide` - in-out travel - persistent element gliding between siblings; not for enter/exit. Default: `cubic-bezier( 0.55, 0, 0.15, 1 )`. */\n easeGlide?: string | number;\n /** `--distance-sm` - 8px - settling into place; the surface is already where it belongs. Default: `0.5rem`. */\n distanceSm?: string | number;\n /** `--distance-md` - 16px - arriving from an adjacent position - page turns, tab panels, paged ranges. Default: `1rem`. */\n distanceMd?: string | number;\n /** `--distance-lg` - 24px - arriving from outside the surface - a toast joining its stack. Default: `1.5rem`. */\n distanceLg?: string | number;\n /** `--scale-panel` - full-width surfaces - dialog, modal, sheet. Default: `0.98`. */\n scalePanel?: string | number;\n /** `--scale-floating` - floating surfaces - popover, tooltip, menu, toast, alert. Default: `0.96`. */\n scaleFloating?: string | number;\n /** `--scale-chip` - small inline elements - tag, badge, count. Default: `0.9`. */\n scaleChip?: string | number;\n /** `--transition-control`. Default: `color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard)`. */\n transitionControl?: string | number;\n /** `--transition-colors`. Default: `color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard)`. */\n transitionColors?: string | number;\n /** `--transition-opacity`. Default: `opacity var(--duration-base) var(--ease-standard)`. */\n transitionOpacity?: string | number;\n /** `--transition-transform`. Default: `transform var(--duration-base) var(--ease-standard)`. */\n transitionTransform?: string | number;\n /** `--transition-layout`. Default: `grid-template-rows var(--duration-slow) var(--ease-entrance), grid-template-columns var(--duration-slow) var(--ease-entrance), max-height var(--duration-slow) var(--ease-entrance), max-width var(--duration-slow) var(--ease-entrance)`. */\n transitionLayout?: string | number;\n}\n\nexport interface GlassTokens {\n /** `--glass-blur`. Default: `9px`. */\n glassBlur?: string | number;\n /** `--glass-blur-strong`. Default: `16px`. */\n glassBlurStrong?: string | number;\n /** `--glass-saturate`. Default: `1.5`. */\n glassSaturate?: string | number;\n /** `--glass-sheen`. Default: `linear-gradient( 145deg, rgb(255 255 255 / 0.55) 0%, rgb(255 255 255 / 0.1) 24%, rgb(255 255 255 / 0) 46% )`. */\n glassSheen?: string | number;\n /** `--glass-sheen-rest`. Default: `0.8`. */\n glassSheenRest?: string | number;\n /** `--glass-sheen-hover`. Default: `1`. */\n glassSheenHover?: string | number;\n /** `--glass-highlight`. Default: `inset 0 1px 0 0 rgb(255 255 255 / 0.55)`. */\n glassHighlight?: string | number;\n /** `--glass-shadow`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.05), 0 2px 5px rgb(var(--shadow-rgb) / 0.05)`. */\n glassShadow?: string | number;\n /** `--glass-shadow-hover`. Default: `0 2px 4px rgb(var(--shadow-rgb) / 0.06), 0 8px 18px rgb(var(--shadow-rgb) / 0.1)`. */\n glassShadowHover?: string | number;\n}\n\nexport interface IconTokens {\n /** `--icon-sm`. Default: `17px`. */\n iconSm?: string | number;\n /** `--icon-md`. Default: `20px`. */\n iconMd?: string | number;\n /** `--icon-lg`. Default: `26px`. */\n iconLg?: string | number;\n}\n\nexport interface LayerTokens {\n /** `--layer-overlay`. Default: `1000`. */\n layerOverlay?: string | number;\n /** `--layer-toast`. Default: `1050`. */\n layerToast?: string | number;\n /** `--layer-tooltip`. Default: `1100`. */\n layerTooltip?: string | number;\n}\n\nexport interface AvatarTokens {\n /** `--avatar-1-bg`. Default: `oklch(0.945 0.04 250)`. */\n avatar1Bg?: string | number;\n /** `--avatar-1-fg`. Default: `oklch(0.45 0.08 250)`. */\n avatar1Fg?: string | number;\n /** `--avatar-2-bg`. Default: `oklch(0.945 0.04 292)`. */\n avatar2Bg?: string | number;\n /** `--avatar-2-fg`. Default: `oklch(0.45 0.08 292)`. */\n avatar2Fg?: string | number;\n /** `--avatar-3-bg`. Default: `oklch(0.945 0.04 334)`. */\n avatar3Bg?: string | number;\n /** `--avatar-3-fg`. Default: `oklch(0.45 0.08 334)`. */\n avatar3Fg?: string | number;\n /** `--avatar-4-bg`. Default: `oklch(0.945 0.04 5)`. */\n avatar4Bg?: string | number;\n /** `--avatar-4-fg`. Default: `oklch(0.45 0.08 5)`. */\n avatar4Fg?: string | number;\n /** `--avatar-5-bg`. Default: `oklch(0.945 0.04 55)`. */\n avatar5Bg?: string | number;\n /** `--avatar-5-fg`. Default: `oklch(0.45 0.08 55)`. */\n avatar5Fg?: string | number;\n /** `--avatar-6-bg`. Default: `oklch(0.945 0.04 125)`. */\n avatar6Bg?: string | number;\n /** `--avatar-6-fg`. Default: `oklch(0.45 0.08 125)`. */\n avatar6Fg?: string | number;\n /** `--avatar-sheen`. Default: `oklch(1 0 0 / 0.35)`. */\n avatarSheen?: string | number;\n /** `--avatar-shade`. Default: `oklch(0.225 0.012 264 / 0.05)`. */\n avatarShade?: string | number;\n}\n\n/** The scoped properties Confetti publishes as its theming contract. */\nexport interface ConfettiTokens {\n /** `--confetti-paper-1`. Default: `oklch(0.53 0.2 288)`. */\n paper1?: string | number;\n /** `--confetti-paper-2`. Default: `var(--accent)`. */\n paper2?: string | number;\n /** `--confetti-paper-3`. Default: `oklch(0.78 0.115 62)`. */\n paper3?: string | number;\n /** `--confetti-paper-4`. Default: `oklch(0.67 0.18 12)`. */\n paper4?: string | number;\n /** `--confetti-paper-5`. Default: `var(--text-strong)`. */\n paper5?: string | number;\n /** `--confetti-weights`. Default: `1 1 1 1 0.45`. */\n weights?: string | number;\n /** `--confetti-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--confetti-light`. Default: `var(--bg-surface)`. */\n light?: string | number;\n /** `--confetti-shade`. Default: `42%`. */\n shade?: string | number;\n /** `--confetti-gloss`. Default: `66%`. */\n gloss?: string | number;\n /** `--confetti-layer`. Default: `var(--layer-toast)`. */\n layer?: string | number;\n /** `--confetti-reverse-1`. Default: `color-mix(in oklab, var(--confetti-ink) var(--confetti-shade), var(--confetti-paper-1))`. */\n reverse1?: string | number;\n /** `--confetti-reverse-2`. Default: `color-mix(in oklab, var(--confetti-ink) var(--confetti-shade), var(--confetti-paper-2))`. */\n reverse2?: string | number;\n /** `--confetti-reverse-3`. Default: `color-mix(in oklab, var(--confetti-ink) var(--confetti-shade), var(--confetti-paper-3))`. */\n reverse3?: string | number;\n /** `--confetti-reverse-4`. Default: `color-mix(in oklab, var(--confetti-ink) var(--confetti-shade), var(--confetti-paper-4))`. */\n reverse4?: string | number;\n /** `--confetti-reverse-5`. Default: `color-mix(in oklab, var(--confetti-ink) var(--confetti-shade), var(--confetti-paper-5))`. */\n reverse5?: string | number;\n /** `--confetti-sheen-1`. Default: `color-mix(in oklab, var(--confetti-light) var(--confetti-gloss), var(--confetti-paper-1))`. */\n sheen1?: string | number;\n /** `--confetti-sheen-2`. Default: `color-mix(in oklab, var(--confetti-light) var(--confetti-gloss), var(--confetti-paper-2))`. */\n sheen2?: string | number;\n /** `--confetti-sheen-3`. Default: `color-mix(in oklab, var(--confetti-light) var(--confetti-gloss), var(--confetti-paper-3))`. */\n sheen3?: string | number;\n /** `--confetti-sheen-4`. Default: `color-mix(in oklab, var(--confetti-light) var(--confetti-gloss), var(--confetti-paper-4))`. */\n sheen4?: string | number;\n /** `--confetti-sheen-5`. Default: `color-mix(in oklab, var(--confetti-light) var(--confetti-gloss), var(--confetti-paper-5))`. */\n sheen5?: string | number;\n}\n\n/** The scoped properties FlowField publishes as its theming contract. */\nexport interface FlowFieldTokens {\n /** `--flow-field-ink`. Default: `var(--text-subtle)`. */\n ink?: string | number;\n /** `--flow-field-accent`. Default: `var(--accent)`. */\n accent?: string | number;\n /** `--flow-field-min-height`. Default: `var(--space-10)`. */\n minHeight?: string | number;\n /** `--flow-field-ramp-0`. Default: `var(--flow-field-ink)`. */\n ramp0?: string | number;\n /** `--flow-field-ramp-1`. Default: `color-mix(in oklab, var(--flow-field-accent) 9%, var(--flow-field-ink))`. */\n ramp1?: string | number;\n /** `--flow-field-ramp-2`. Default: `color-mix(in oklab, var(--flow-field-accent) 18%, var(--flow-field-ink))`. */\n ramp2?: string | number;\n /** `--flow-field-ramp-3`. Default: `color-mix(in oklab, var(--flow-field-accent) 27%, var(--flow-field-ink))`. */\n ramp3?: string | number;\n /** `--flow-field-ramp-4`. Default: `color-mix(in oklab, var(--flow-field-accent) 36%, var(--flow-field-ink))`. */\n ramp4?: string | number;\n /** `--flow-field-ramp-5`. Default: `color-mix(in oklab, var(--flow-field-accent) 45%, var(--flow-field-ink))`. */\n ramp5?: string | number;\n /** `--flow-field-ramp-6`. Default: `color-mix(in oklab, var(--flow-field-accent) 55%, var(--flow-field-ink))`. */\n ramp6?: string | number;\n /** `--flow-field-ramp-7`. Default: `color-mix(in oklab, var(--flow-field-accent) 64%, var(--flow-field-ink))`. */\n ramp7?: string | number;\n /** `--flow-field-ramp-8`. Default: `color-mix(in oklab, var(--flow-field-accent) 73%, var(--flow-field-ink))`. */\n ramp8?: string | number;\n /** `--flow-field-ramp-9`. Default: `color-mix(in oklab, var(--flow-field-accent) 82%, var(--flow-field-ink))`. */\n ramp9?: string | number;\n /** `--flow-field-ramp-10`. Default: `color-mix(in oklab, var(--flow-field-accent) 91%, var(--flow-field-ink))`. */\n ramp10?: string | number;\n /** `--flow-field-ramp-11`. Default: `var(--flow-field-accent)`. */\n ramp11?: string | number;\n}\n\n/** The scoped properties Lens publishes as its theming contract. */\nexport interface LensTokens {\n /** `--lens-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--lens-surface`. Default: `var(--bg-surface)`. */\n surface?: string | number;\n /** `--lens-edge`. Default: `color-mix(in oklab, var(--lens-ink) 16%, transparent)`. */\n edge?: string | number;\n /** `--lens-highlight`. Default: `color-mix(in oklab, var(--bg-surface) 90%, transparent)`. */\n highlight?: string | number;\n /** `--lens-vignette-mid`. Default: `5%`. */\n vignetteMid?: string | number;\n /** `--lens-vignette-edge`. Default: `15%`. */\n vignetteEdge?: string | number;\n /** `--lens-fringe-warm`. Default: `oklch(0.72 0.16 12 / 0.3)`. */\n fringeWarm?: string | number;\n /** `--lens-fringe-cool`. Default: `oklch(0.7 0.15 265 / 0.34)`. */\n fringeCool?: string | number;\n /** `--lens-rim-start`. Default: `79%`. */\n rimStart?: string | number;\n /** `--lens-rim-end`. Default: `87%`. */\n rimEnd?: string | number;\n}\n\n/** The scoped properties MorphingText publishes as its theming contract. */\nexport interface MorphingTextTokens {\n /** `--morphing-text-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--morphing-text-size`. Default: `var(--size-display-lg)`. */\n size?: string | number;\n /** `--morphing-text-weight`. Default: `var(--weight-medium)`. */\n weight?: string | number;\n /** `--morphing-text-leading`. Default: `1.2`. */\n leading?: string | number;\n /** `--morphing-text-tracking`. Default: `var(--tracking-display)`. */\n tracking?: string | number;\n /** `--morphing-text-smear`. Default: `1`. */\n smear?: string | number;\n /** `--morphing-text-rule-ink`. Default: `var(--text-strong)`. */\n ruleInk?: string | number;\n /** `--morphing-text-rule-accent`. Default: `var(--accent)`. */\n ruleAccent?: string | number;\n /** `--morphing-text-rule-height`. Default: `1px`. */\n ruleHeight?: string | number;\n /** `--morphing-text-rule-gap`. Default: `var(--space-3)`. */\n ruleGap?: string | number;\n /** `--morphing-text-rule-rest`. Default: `0.1`. */\n ruleRest?: string | number;\n /** `--morphing-text-rule-lift`. Default: `0.3`. */\n ruleLift?: string | number;\n}\n\n/** The scoped properties Odometer publishes as its theming contract. */\nexport interface OdometerTokens {\n /** `--odometer-cell`. Default: `1em`. */\n cell?: string | number;\n /** `--odometer-digit`. Default: `1ch`. */\n digit?: string | number;\n /** `--odometer-gap`. Default: `0.02em`. */\n gap?: string | number;\n /** `--odometer-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--odometer-accent`. Default: `var(--accent)`. */\n accent?: string | number;\n /** `--odometer-separator-ink`. Default: `var(--text-muted)`. */\n separatorInk?: string | number;\n /** `--odometer-size`. Default: `var(--size-display)`. */\n size?: string | number;\n /** `--odometer-weight`. Default: `var(--weight-medium)`. */\n weight?: string | number;\n}\n\n/** The scoped properties TypingLines publishes as its theming contract. */\nexport interface TypingLinesTokens {\n /** `--typing-lines-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--typing-lines-caret-ink`. Default: `var(--accent)`. */\n caretInk?: string | number;\n /** `--typing-lines-size`. Default: `var(--size-title)`. */\n size?: string | number;\n /** `--typing-lines-weight`. Default: `var(--weight-regular)`. */\n weight?: string | number;\n /** `--typing-lines-leading`. Default: `1.4`. */\n leading?: string | number;\n /** `--typing-lines-blink`. Default: `1080ms`. */\n blink?: string | number;\n /** `--typing-lines-caret-gap`. Default: `0.12em`. */\n caretGap?: string | number;\n}\n\n/** The scoped properties WeightField publishes as its theming contract. */\nexport interface WeightFieldTokens {\n /** `--weight-field-ink`. Default: `var(--text-strong)`. */\n ink?: string | number;\n /** `--weight-field-size`. Default: `6rem`. */\n size?: string | number;\n /** `--weight-field-leading`. Default: `1`. */\n leading?: string | number;\n /** `--weight-field-align`. Default: `center`. */\n align?: string | number;\n /** `--weight-field-pad`. Default: `var(--space-6) var(--space-4)`. */\n pad?: string | number;\n /** `--weight-field-tracking`. Default: `-0.05em`. */\n tracking?: string | number;\n /** `--weight-field-rest-weight`. Default: `300`. */\n restWeight?: string | number;\n /** `--weight-field-far-weight`. Default: `400`. */\n farWeight?: string | number;\n /** `--weight-field-near-weight`. Default: `600`. */\n nearWeight?: string | number;\n /** `--weight-field-peak-weight`. Default: `900`. */\n peakWeight?: string | number;\n /** `--weight-field-hover-padding`. Default: `calc(1em / 12)`. */\n hoverPadding?: string | number;\n /** `--weight-field-stroke`. Default: `calc(1em * 125 / 6000)`. */\n stroke?: string | number;\n /** `--weight-field-stroke-peak`. Default: `calc(var(--weight-field-stroke) * 2)`. */\n strokePeak?: string | number;\n /** `--weight-field-duration`. Default: `400ms`. */\n duration?: string | number;\n /** `--weight-field-ease`. Default: `ease`. */\n ease?: string | number;\n /** `--weight-field-ramp`. Default: `calc(var(--weight-field-duration) / var(--weight-field-speed))`. */\n ramp?: string | number;\n}\n\n/** The scoped properties SupportRail publishes as its theming contract. */\nexport interface SupportRailTokens {\n /** `--support-rail-width`. Default: `318px`. */\n width?: string | number;\n /** `--support-rail-needle-width`. Default: `42px`. */\n needleWidth?: string | number;\n /** `--support-rail-needle-height`. Default: `150px`. */\n needleHeight?: string | number;\n /** `--support-rail-needle-duck`. Default: `0.55`. */\n needleDuck?: string | number;\n /** `--support-rail-needle-tracking`. Default: `0.22em`. */\n needleTracking?: string | number;\n /** `--support-rail-caps-tracking`. Default: `0.13em`. */\n capsTracking?: string | number;\n /** `--support-rail-grabber-width`. Default: `13px`. */\n grabberWidth?: string | number;\n /** `--support-rail-grabber-pill`. Default: `34px`. */\n grabberPill?: string | number;\n /** `--support-rail-live-size`. Default: `6px`. */\n liveSize?: string | number;\n /** `--support-rail-live-reach`. Default: `2.6`. */\n liveReach?: string | number;\n /** `--support-rail-rule-width`. Default: `1.5px`. */\n ruleWidth?: string | number;\n /** `--support-rail-rule-height`. Default: `20px`. */\n ruleHeight?: string | number;\n /** `--support-rail-row-pad-block`. Default: `var(--space-4)`. */\n rowPadBlock?: string | number;\n /** `--support-rail-row-pad-inline`. Default: `var(--space-4)`. */\n rowPadInline?: string | number;\n /** `--support-rail-row-nudge`. Default: `5px`. */\n rowNudge?: string | number;\n /** `--support-rail-surface`. Default: `var(--bg-subtle)`. */\n surface?: string | number;\n /** `--support-rail-surface-raised`. Default: `var(--bg-surface)`. */\n surfaceRaised?: string | number;\n /** `--support-rail-line`. Default: `var(--border-default)`. */\n line?: string | number;\n /** `--support-rail-line-soft`. Default: `var(--border-subtle)`. */\n lineSoft?: string | number;\n /** `--support-rail-accent`. Default: `var(--accent)`. */\n accent?: string | number;\n /** `--support-rail-live-color`. Default: `var(--success)`. */\n liveColor?: string | number;\n /** `--support-rail-radius`. Default: `var(--radius-2xl)`. */\n radius?: string | number;\n /** `--support-rail-open-duration`. Default: `calc(var(--duration-slower) * 1.4)`. */\n openDuration?: string | number;\n /** `--support-rail-close-duration`. Default: `var(--duration-slower)`. */\n closeDuration?: string | number;\n /** `--support-rail-needle-delay`. Default: `calc(var(--duration-slow) * 0.5)`. */\n needleDelay?: string | number;\n /** `--support-rail-stagger`. Default: `calc(var(--duration-fast) * 0.3)`. */\n stagger?: string | number;\n}\n\n/** Per-component knobs - retunes every instance of that component. */\nexport interface ComponentTokens {\n /** Confetti - its `--confetti-*` properties. */\n confetti?: ConfettiTokens;\n /** FlowField - its `--flow-field-*` properties. */\n flowField?: FlowFieldTokens;\n /** Lens - its `--lens-*` properties. */\n lens?: LensTokens;\n /** MorphingText - its `--morphing-text-*` properties. */\n morphingText?: MorphingTextTokens;\n /** Odometer - its `--odometer-*` properties. */\n odometer?: OdometerTokens;\n /** TypingLines - its `--typing-lines-*` properties. */\n typingLines?: TypingLinesTokens;\n /** WeightField - its `--weight-field-*` properties. */\n weightField?: WeightFieldTokens;\n /** SupportRail - its `--support-rail-*` properties. */\n supportRail?: SupportRailTokens;\n}\n\n/** One theme: the tokens it repoints, grouped. Every group is optional. */\nexport interface ThemeTokens {\n /** Color tokens. */\n color?: ColorTokens;\n /** Type tokens. */\n type?: TypeTokens;\n /** Space tokens. */\n space?: SpaceTokens;\n /** Radius tokens. */\n radius?: RadiusTokens;\n /** Elevation tokens. */\n elevation?: ElevationTokens;\n /** Motion tokens. */\n motion?: MotionTokens;\n /** Glass tokens. */\n glass?: GlassTokens;\n /** Icon tokens. */\n icon?: IconTokens;\n /** Layer tokens. */\n layer?: LayerTokens;\n /** Avatar tokens. */\n avatar?: AvatarTokens;\n /** Scoped knobs, per component. */\n components?: ComponentTokens;\n /** Any other custom property, written out in full. */\n custom?: Record<`--${string}`, string | number>;\n}\n\n/**\n * The themes an app ships. `base` lands on `:root`; every other key becomes a\n * `[data-theme='<key>']` block, activated by setting that attribute on any element.\n */\nexport interface ThemeSet {\n /** The always-applied foundation - light, dark, or whatever the app defaults to. */\n base?: ThemeTokens;\n [name: string]: ThemeTokens | undefined;\n}\n\nexport const reducedMotionTokens: Readonly<Record<string, string>> = {\n '--duration-fast': '1ms',\n '--duration-base': '1ms',\n '--duration-slow': '1ms',\n '--duration-slower': '1ms',\n '--duration-slowest': '1ms',\n '--duration-spin': '1200ms',\n};\n\ndeclare module 'react' {\n export interface CSSProperties {\n /** `--gray-0`. Default: `oklch(1 0 0)`. */\n '--gray-0'?: string | number;\n /** `--gray-25`. Default: `oklch(0.992 0.002 198)`. */\n '--gray-25'?: string | number;\n /** `--gray-50`. Default: `oklch(0.984 0.003 198)`. */\n '--gray-50'?: string | number;\n /** `--gray-100`. Default: `oklch(0.97 0.004 198)`. */\n '--gray-100'?: string | number;\n /** `--gray-150`. Default: `oklch(0.954 0.005 198)`. */\n '--gray-150'?: string | number;\n /** `--gray-200`. Default: `oklch(0.924 0.006 198)`. */\n '--gray-200'?: string | number;\n /** `--gray-300`. Default: `oklch(0.874 0.007 198)`. */\n '--gray-300'?: string | number;\n /** `--gray-400`. Default: `oklch(0.765 0.009 198)`. */\n '--gray-400'?: string | number;\n /** `--gray-500`. Default: `oklch(0.642 0.011 198)`. */\n '--gray-500'?: string | number;\n /** `--gray-600`. Default: `oklch(0.532 0.012 198)`. */\n '--gray-600'?: string | number;\n /** `--gray-700`. Default: `oklch(0.422 0.012 198)`. */\n '--gray-700'?: string | number;\n /** `--gray-800`. Default: `oklch(0.305 0.01 198)`. */\n '--gray-800'?: string | number;\n /** `--gray-900`. Default: `oklch(0.225 0.008 198)`. */\n '--gray-900'?: string | number;\n /** `--gray-950`. Default: `oklch(0.165 0.007 198)`. */\n '--gray-950'?: string | number;\n /** `--teal-50`. Default: `oklch(0.972 0.02 198)`. */\n '--teal-50'?: string | number;\n /** `--teal-100`. Default: `oklch(0.935 0.04 198)`. */\n '--teal-100'?: string | number;\n /** `--teal-200`. Default: `oklch(0.88 0.066 198)`. */\n '--teal-200'?: string | number;\n /** `--teal-300`. Default: `oklch(0.795 0.092 198)`. */\n '--teal-300'?: string | number;\n /** `--teal-400`. Default: `oklch(0.705 0.112 198)`. */\n '--teal-400'?: string | number;\n /** `--teal-500`. Default: `oklch(0.63 0.118 198)`. */\n '--teal-500'?: string | number;\n /** `--teal-600`. Default: `oklch(0.56 0.114 198)`. */\n '--teal-600'?: string | number;\n /** `--teal-700`. Default: `oklch(0.478 0.1 198)`. */\n '--teal-700'?: string | number;\n /** `--teal-800`. Default: `oklch(0.4 0.082 198)`. */\n '--teal-800'?: string | number;\n /** `--teal-900`. Default: `oklch(0.32 0.062 198)`. */\n '--teal-900'?: string | number;\n /** `--green-50`. Default: `oklch(0.965 0.028 152)`. */\n '--green-50'?: string | number;\n /** `--green-500`. Default: `oklch(0.62 0.13 152)`. */\n '--green-500'?: string | number;\n /** `--green-600`. Default: `oklch(0.548 0.122 152)`. */\n '--green-600'?: string | number;\n /** `--green-700`. Default: `oklch(0.462 0.1 152)`. */\n '--green-700'?: string | number;\n /** `--amber-50`. Default: `oklch(0.972 0.034 75)`. */\n '--amber-50'?: string | number;\n /** `--amber-500`. Default: `oklch(0.76 0.14 75)`. */\n '--amber-500'?: string | number;\n /** `--amber-600`. Default: `oklch(0.7 0.142 75)`. */\n '--amber-600'?: string | number;\n /** `--amber-700`. Default: `oklch(0.56 0.118 75)`. */\n '--amber-700'?: string | number;\n /** `--red-50`. Default: `oklch(0.968 0.02 27)`. */\n '--red-50'?: string | number;\n /** `--red-300`. Default: `oklch(0.8 0.09 27)`. */\n '--red-300'?: string | number;\n /** `--red-400`. Default: `oklch(0.64 0.2 27)`. */\n '--red-400'?: string | number;\n /** `--red-500`. Default: `oklch(0.602 0.196 27)`. */\n '--red-500'?: string | number;\n /** `--red-600`. Default: `oklch(0.545 0.196 27)`. */\n '--red-600'?: string | number;\n /** `--red-700`. Default: `oklch(0.478 0.172 27)`. */\n '--red-700'?: string | number;\n /** `--gray-wash`. Default: `color-mix(in oklab, var(--gray-700) 6%, transparent)`. */\n '--gray-wash'?: string | number;\n /** `--gray-wash-strong`. Default: `color-mix(in oklab, var(--gray-700) 10%, transparent)`. */\n '--gray-wash-strong'?: string | number;\n /** `--teal-wash`. Default: `oklch(0.63 0.118 198 / 0.05)`. */\n '--teal-wash'?: string | number;\n /** `--green-wash`. Default: `oklch(0.62 0.13 152 / 0.1)`. */\n '--green-wash'?: string | number;\n /** `--amber-wash`. Default: `oklch(0.76 0.14 75 / 0.12)`. */\n '--amber-wash'?: string | number;\n /** `--red-wash`. Default: `oklch(0.602 0.196 27 / 0.1)`. */\n '--red-wash'?: string | number;\n /** `--shadow-rgb`. Default: `15 22 25`. */\n '--shadow-rgb'?: string | number;\n /** `--bg-app`. Default: `var(--gray-0)`. */\n '--bg-app'?: string | number;\n /** `--bg-surface`. Default: `var(--gray-0)`. */\n '--bg-surface'?: string | number;\n /** `--bg-surface-raised`. Default: `var(--gray-0)`. */\n '--bg-surface-raised'?: string | number;\n /** `--bg-subtle`. Default: `var(--gray-50)`. */\n '--bg-subtle'?: string | number;\n /** `--bg-muted`. Default: `var(--gray-100)`. */\n '--bg-muted'?: string | number;\n /** `--bg-inset`. Default: `var(--gray-150)`. */\n '--bg-inset'?: string | number;\n /** `--bg-overlay`. Default: `color-mix(in oklab, var(--gray-900) 44%, transparent)`. */\n '--bg-overlay'?: string | number;\n /** `--text-strong`. Default: `var(--gray-950)`. */\n '--text-strong'?: string | number;\n /** `--text-body`. Default: `var(--gray-800)`. */\n '--text-body'?: string | number;\n /** `--text-secondary`. Default: `var(--gray-700)`. */\n '--text-secondary'?: string | number;\n /** `--text-muted`. Default: `var(--gray-600)`. */\n '--text-muted'?: string | number;\n /** `--text-subtle`. Default: `var(--gray-500)`. */\n '--text-subtle'?: string | number;\n /** `--text-disabled`. Default: `var(--gray-400)`. */\n '--text-disabled'?: string | number;\n /** `--text-accent`. Default: `var(--teal-700)`. */\n '--text-accent'?: string | number;\n /** `--text-on-accent`. Default: `var(--gray-0)`. */\n '--text-on-accent'?: string | number;\n /** `--text-inverse`. Default: `var(--gray-0)`. */\n '--text-inverse'?: string | number;\n /** `--border-subtle`. Default: `var(--gray-150)`. */\n '--border-subtle'?: string | number;\n /** `--border-default`. Default: `var(--gray-200)`. */\n '--border-default'?: string | number;\n /** `--border-strong`. Default: `var(--gray-300)`. */\n '--border-strong'?: string | number;\n /** `--accent-lift`. Default: `var(--teal-400)`. */\n '--accent-lift'?: string | number;\n /** `--accent`. Default: `var(--teal-500)`. */\n '--accent'?: string | number;\n /** `--accent-hover`. Default: `var(--teal-600)`. */\n '--accent-hover'?: string | number;\n /** `--accent-active`. Default: `var(--teal-700)`. */\n '--accent-active'?: string | number;\n /** `--accent-subtle`. Default: `var(--teal-50)`. */\n '--accent-subtle'?: string | number;\n /** `--accent-border`. Default: `var(--teal-200)`. */\n '--accent-border'?: string | number;\n /** `--accent-disabled`. Default: `var(--teal-300)`. */\n '--accent-disabled'?: string | number;\n /** `--success-subtle`. Default: `var(--green-50)`. */\n '--success-subtle'?: string | number;\n /** `--success`. Default: `var(--green-600)`. */\n '--success'?: string | number;\n /** `--success-text`. Default: `var(--green-700)`. */\n '--success-text'?: string | number;\n /** `--warning-subtle`. Default: `var(--amber-50)`. */\n '--warning-subtle'?: string | number;\n /** `--warning`. Default: `var(--amber-600)`. */\n '--warning'?: string | number;\n /** `--warning-text`. Default: `var(--amber-700)`. */\n '--warning-text'?: string | number;\n /** `--danger-subtle`. Default: `var(--red-50)`. */\n '--danger-subtle'?: string | number;\n /** `--danger`. Default: `var(--red-600)`. */\n '--danger'?: string | number;\n /** `--danger-text`. Default: `var(--red-700)`. */\n '--danger-text'?: string | number;\n /** `--info-subtle`. Default: `var(--teal-50)`. */\n '--info-subtle'?: string | number;\n /** `--info`. Default: `var(--teal-600)`. */\n '--info'?: string | number;\n /** `--info-text`. Default: `var(--teal-700)`. */\n '--info-text'?: string | number;\n /** `--danger-disabled`. Default: `var(--red-300)`. */\n '--danger-disabled'?: string | number;\n /** `--neutral-wash`. Default: `var(--gray-wash)`. */\n '--neutral-wash'?: string | number;\n /** `--neutral-wash-press`. Default: `var(--gray-wash-strong)`. */\n '--neutral-wash-press'?: string | number;\n /** `--accent-wash`. Default: `var(--teal-wash)`. */\n '--accent-wash'?: string | number;\n /** `--success-wash`. Default: `var(--green-wash)`. */\n '--success-wash'?: string | number;\n /** `--warning-wash`. Default: `var(--amber-wash)`. */\n '--warning-wash'?: string | number;\n /** `--danger-wash`. Default: `var(--red-wash)`. */\n '--danger-wash'?: string | number;\n /** `--glass-tint-neutral`. Default: `color-mix(in oklab, var(--gray-600) 13%, transparent)`. */\n '--glass-tint-neutral'?: string | number;\n /** `--glass-tint-info`. Default: `color-mix(in oklab, var(--info) 17%, transparent)`. */\n '--glass-tint-info'?: string | number;\n /** `--glass-tint-success`. Default: `color-mix(in oklab, var(--success) 17%, transparent)`. */\n '--glass-tint-success'?: string | number;\n /** `--glass-tint-warning`. Default: `color-mix(in oklab, var(--warning) 21%, transparent)`. */\n '--glass-tint-warning'?: string | number;\n /** `--glass-tint-danger`. Default: `color-mix(in oklab, var(--danger) 17%, transparent)`. */\n '--glass-tint-danger'?: string | number;\n /** `--focus-ring`. Default: `var(--ring-accent)`. */\n '--focus-ring'?: string | number;\n /** `--font-sans`. Default: `'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif`. */\n '--font-sans'?: string | number;\n /** `--font-mono`. Default: `'Geist Mono', ui-monospace, 'SF Mono', 'Menlo', monospace`. */\n '--font-mono'?: string | number;\n /** `--weight-regular`. Default: `400`. */\n '--weight-regular'?: string | number;\n /** `--weight-medium`. Default: `500`. */\n '--weight-medium'?: string | number;\n /** `--weight-semibold`. Default: `600`. */\n '--weight-semibold'?: string | number;\n /** `--size-micro`. Default: `0.75rem`. */\n '--size-micro'?: string | number;\n /** `--size-caption`. Default: `0.8125rem`. */\n '--size-caption'?: string | number;\n /** `--size-body`. Default: `0.875rem`. */\n '--size-body'?: string | number;\n /** `--size-body-lg`. Default: `1rem`. */\n '--size-body-lg'?: string | number;\n /** `--size-heading`. Default: `1.125rem`. */\n '--size-heading'?: string | number;\n /** `--size-title`. Default: `1.3125rem`. */\n '--size-title'?: string | number;\n /** `--size-title-lg`. Default: `1.625rem`. */\n '--size-title-lg'?: string | number;\n /** `--size-display`. Default: `2rem`. */\n '--size-display'?: string | number;\n /** `--size-display-lg`. Default: `2.5rem`. */\n '--size-display-lg'?: string | number;\n /** `--leading-micro`. Default: `1rem`. */\n '--leading-micro'?: string | number;\n /** `--leading-caption`. Default: `1.125rem`. */\n '--leading-caption'?: string | number;\n /** `--leading-body`. Default: `1.375rem`. */\n '--leading-body'?: string | number;\n /** `--leading-body-lg`. Default: `1.625rem`. */\n '--leading-body-lg'?: string | number;\n /** `--leading-heading`. Default: `1.625rem`. */\n '--leading-heading'?: string | number;\n /** `--leading-title`. Default: `1.75rem`. */\n '--leading-title'?: string | number;\n /** `--leading-title-lg`. Default: `2rem`. */\n '--leading-title-lg'?: string | number;\n /** `--leading-display`. Default: `2.375rem`. */\n '--leading-display'?: string | number;\n /** `--leading-display-lg`. Default: `2.875rem`. */\n '--leading-display-lg'?: string | number;\n /** `--measure-floating`. Default: `36ch`. */\n '--measure-floating'?: string | number;\n /** `--tracking-caps`. Default: `0.04em`. */\n '--tracking-caps'?: string | number;\n /** `--tracking-normal`. Default: `0em`. */\n '--tracking-normal'?: string | number;\n /** `--tracking-tight`. Default: `-0.011em`. */\n '--tracking-tight'?: string | number;\n /** `--tracking-tighter`. Default: `-0.016em`. */\n '--tracking-tighter'?: string | number;\n /** `--tracking-display`. Default: `-0.021em`. */\n '--tracking-display'?: string | number;\n /** `--type-display-lg`. Default: `var(--weight-semibold) var(--size-display-lg)/var(--leading-display-lg) var(--font-sans)`. */\n '--type-display-lg'?: string | number;\n /** `--type-display`. Default: `var(--weight-semibold) var(--size-display)/var(--leading-display) var(--font-sans)`. */\n '--type-display'?: string | number;\n /** `--type-title-lg`. Default: `var(--weight-semibold) var(--size-title-lg)/var(--leading-title-lg) var(--font-sans)`. */\n '--type-title-lg'?: string | number;\n /** `--type-title`. Default: `var(--weight-semibold) var(--size-title)/var(--leading-title) var(--font-sans)`. */\n '--type-title'?: string | number;\n /** `--type-heading`. Default: `var(--weight-semibold) var(--size-heading)/var(--leading-heading) var(--font-sans)`. */\n '--type-heading'?: string | number;\n /** `--type-body-lg`. Default: `var(--weight-regular) var(--size-body-lg)/var(--leading-body-lg) var(--font-sans)`. */\n '--type-body-lg'?: string | number;\n /** `--type-body`. Default: `var(--weight-regular) var(--size-body)/var(--leading-body) var(--font-sans)`. */\n '--type-body'?: string | number;\n /** `--type-label`. Default: `var(--weight-medium) var(--size-body)/var(--leading-body) var(--font-sans)`. */\n '--type-label'?: string | number;\n /** `--type-caption`. Default: `var(--weight-regular) var(--size-caption)/var(--leading-caption) var(--font-sans)`. */\n '--type-caption'?: string | number;\n /** `--type-micro`. Default: `var(--weight-medium) var(--size-micro)/var(--leading-micro) var(--font-sans)`. */\n '--type-micro'?: string | number;\n /** `--type-mono`. Default: `var(--weight-regular) var(--size-caption)/var(--leading-caption) var(--font-mono)`. */\n '--type-mono'?: string | number;\n /** `--space-px`. Default: `1px`. */\n '--space-px'?: string | number;\n /** `--space-0`. Default: `0`. */\n '--space-0'?: string | number;\n /** `--space-1`. Default: `0.25rem`. */\n '--space-1'?: string | number;\n /** `--space-2`. Default: `0.5rem`. */\n '--space-2'?: string | number;\n /** `--space-3`. Default: `0.75rem`. */\n '--space-3'?: string | number;\n /** `--space-4`. Default: `1rem`. */\n '--space-4'?: string | number;\n /** `--space-5`. Default: `1.5rem`. */\n '--space-5'?: string | number;\n /** `--space-6`. Default: `2rem`. */\n '--space-6'?: string | number;\n /** `--space-7`. Default: `3rem`. */\n '--space-7'?: string | number;\n /** `--space-8`. Default: `4rem`. */\n '--space-8'?: string | number;\n /** `--space-9`. Default: `6rem`. */\n '--space-9'?: string | number;\n /** `--space-10`. Default: `8rem`. */\n '--space-10'?: string | number;\n /** `--container-max`. Default: `72rem`. */\n '--container-max'?: string | number;\n /** `--measure-prose`. Default: `38rem`. */\n '--measure-prose'?: string | number;\n /** `--sidebar-width`. Default: `16rem`. */\n '--sidebar-width'?: string | number;\n /** `--control-height-sm`. Default: `1.75rem`. */\n '--control-height-sm'?: string | number;\n /** `--control-height`. Default: `2rem`. */\n '--control-height'?: string | number;\n /** `--control-height-lg`. Default: `2.3rem`. */\n '--control-height-lg'?: string | number;\n /** `--control-box`. Default: `1.125rem`. */\n '--control-box'?: string | number;\n /** `--control-switch` - switch track (md); the one control size off the scale - width reuses --control-height(-sm), sm height reuses --space-4. Default: `1.25rem`. */\n '--control-switch'?: string | number;\n /** `--radius-0`. Default: `0`. */\n '--radius-0'?: string | number;\n /** `--radius-sm`. Default: `0.25rem`. */\n '--radius-sm'?: string | number;\n /** `--radius-md`. Default: `0.375rem`. */\n '--radius-md'?: string | number;\n /** `--radius-lg`. Default: `0.5rem`. */\n '--radius-lg'?: string | number;\n /** `--radius-xl`. Default: `0.75rem`. */\n '--radius-xl'?: string | number;\n /** `--radius-2xl`. Default: `1rem`. */\n '--radius-2xl'?: string | number;\n /** `--radius-full`. Default: `624.9375rem`. */\n '--radius-full'?: string | number;\n /** `--shadow-xs`. Default: `0 1px 1px rgb(var(--shadow-rgb) / 0.04)`. */\n '--shadow-xs'?: string | number;\n /** `--shadow-sm`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.05), 0 1px 1px rgb(var(--shadow-rgb) / 0.04)`. */\n '--shadow-sm'?: string | number;\n /** `--shadow-md`. Default: `0 2px 4px rgb(var(--shadow-rgb) / 0.04), 0 6px 12px rgb(var(--shadow-rgb) / 0.07)`. */\n '--shadow-md'?: string | number;\n /** `--shadow-lg`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.06), 0 4px 8px rgb(var(--shadow-rgb) / 0.04), 0 12px 28px rgb(var(--shadow-rgb) / 0.1)`. */\n '--shadow-lg'?: string | number;\n /** `--shadow-xl`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.06), 0 8px 16px rgb(var(--shadow-rgb) / 0.06), 0 24px 48px rgb(var(--shadow-rgb) / 0.14)`. */\n '--shadow-xl'?: string | number;\n /** `--border-hairline`. Default: `1px`. */\n '--border-hairline'?: string | number;\n /** `--border-emphasis`. Default: `1.5px`. */\n '--border-emphasis'?: string | number;\n /** `--ring-accent`. Default: `0 0 0 3px color-mix(in oklab, var(--accent) 32%, transparent)`. */\n '--ring-accent'?: string | number;\n /** `--ring-danger`. Default: `0 0 0 3px oklch(0.602 0.196 27 / 0.3)`. */\n '--ring-danger'?: string | number;\n /** `--ring-warning`. Default: `0 0 0 3px color-mix(in oklab, var(--warning) 30%, transparent)`. */\n '--ring-warning'?: string | number;\n /** `--ring-success`. Default: `0 0 0 3px color-mix(in oklab, var(--success) 30%, transparent)`. */\n '--ring-success'?: string | number;\n /** `--ring-offset`. Default: `0 0 0 2px var(--bg-surface), 0 0 0 4px color-mix(in oklab, var(--accent) 40%, transparent)`. */\n '--ring-offset'?: string | number;\n /** `--duration-fast`. Default: `140ms`. Collapses to `1ms` under reduced motion. */\n '--duration-fast'?: string | number;\n /** `--duration-base`. Default: `200ms`. Collapses to `1ms` under reduced motion. */\n '--duration-base'?: string | number;\n /** `--duration-slow`. Default: `300ms`. Collapses to `1ms` under reduced motion. */\n '--duration-slow'?: string | number;\n /** `--duration-slower` - large-surface movement - dialog, sheet, page-scale reveals. Default: `450ms`. Collapses to `1ms` under reduced motion. */\n '--duration-slower'?: string | number;\n /** `--duration-slowest` - hero-scale movement - card expansion, container transforms; the scale's ceiling. Default: `900ms`. Collapses to `1ms` under reduced motion. */\n '--duration-slowest'?: string | number;\n /** `--duration-spin` - continuous loaders only; deliberately outside the UI-transition scale. Default: `600ms`. Collapses to `1200ms` under reduced motion. */\n '--duration-spin'?: string | number;\n /** `--duration-pulse` - ambient live/processing breathing; not collapsed under reduced motion. Default: `1600ms`. */\n '--duration-pulse'?: string | number;\n /** `--ease-standard`. Default: `cubic-bezier(0.2, 0, 0, 1)`. */\n '--ease-standard'?: string | number;\n /** `--ease-entrance`. Default: `cubic-bezier(0.25, 1, 0.4, 1)`. */\n '--ease-entrance'?: string | number;\n /** `--ease-exit`. Default: `cubic-bezier(0.4, 0, 1, 1)`. */\n '--ease-exit'?: string | number;\n /** `--ease-spring`. Default: `cubic-bezier(0.34, 1.4, 0.5, 1)`. */\n '--ease-spring'?: string | number;\n /** `--ease-glide` - in-out travel - persistent element gliding between siblings; not for enter/exit. Default: `cubic-bezier( 0.55, 0, 0.15, 1 )`. */\n '--ease-glide'?: string | number;\n /** `--distance-sm` - 8px - settling into place; the surface is already where it belongs. Default: `0.5rem`. */\n '--distance-sm'?: string | number;\n /** `--distance-md` - 16px - arriving from an adjacent position - page turns, tab panels, paged ranges. Default: `1rem`. */\n '--distance-md'?: string | number;\n /** `--distance-lg` - 24px - arriving from outside the surface - a toast joining its stack. Default: `1.5rem`. */\n '--distance-lg'?: string | number;\n /** `--scale-panel` - full-width surfaces - dialog, modal, sheet. Default: `0.98`. */\n '--scale-panel'?: string | number;\n /** `--scale-floating` - floating surfaces - popover, tooltip, menu, toast, alert. Default: `0.96`. */\n '--scale-floating'?: string | number;\n /** `--scale-chip` - small inline elements - tag, badge, count. Default: `0.9`. */\n '--scale-chip'?: string | number;\n /** `--transition-control`. Default: `color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard)`. */\n '--transition-control'?: string | number;\n /** `--transition-colors`. Default: `color var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard)`. */\n '--transition-colors'?: string | number;\n /** `--transition-opacity`. Default: `opacity var(--duration-base) var(--ease-standard)`. */\n '--transition-opacity'?: string | number;\n /** `--transition-transform`. Default: `transform var(--duration-base) var(--ease-standard)`. */\n '--transition-transform'?: string | number;\n /** `--transition-layout`. Default: `grid-template-rows var(--duration-slow) var(--ease-entrance), grid-template-columns var(--duration-slow) var(--ease-entrance), max-height var(--duration-slow) var(--ease-entrance), max-width var(--duration-slow) var(--ease-entrance)`. */\n '--transition-layout'?: string | number;\n /** `--glass-blur`. Default: `9px`. */\n '--glass-blur'?: string | number;\n /** `--glass-blur-strong`. Default: `16px`. */\n '--glass-blur-strong'?: string | number;\n /** `--glass-saturate`. Default: `1.5`. */\n '--glass-saturate'?: string | number;\n /** `--glass-sheen`. Default: `linear-gradient( 145deg, rgb(255 255 255 / 0.55) 0%, rgb(255 255 255 / 0.1) 24%, rgb(255 255 255 / 0) 46% )`. */\n '--glass-sheen'?: string | number;\n /** `--glass-sheen-rest`. Default: `0.8`. */\n '--glass-sheen-rest'?: string | number;\n /** `--glass-sheen-hover`. Default: `1`. */\n '--glass-sheen-hover'?: string | number;\n /** `--glass-highlight`. Default: `inset 0 1px 0 0 rgb(255 255 255 / 0.55)`. */\n '--glass-highlight'?: string | number;\n /** `--glass-shadow`. Default: `0 1px 2px rgb(var(--shadow-rgb) / 0.05), 0 2px 5px rgb(var(--shadow-rgb) / 0.05)`. */\n '--glass-shadow'?: string | number;\n /** `--glass-shadow-hover`. Default: `0 2px 4px rgb(var(--shadow-rgb) / 0.06), 0 8px 18px rgb(var(--shadow-rgb) / 0.1)`. */\n '--glass-shadow-hover'?: string | number;\n /** `--icon-sm`. Default: `17px`. */\n '--icon-sm'?: string | number;\n /** `--icon-md`. Default: `20px`. */\n '--icon-md'?: string | number;\n /** `--icon-lg`. Default: `26px`. */\n '--icon-lg'?: string | number;\n /** `--layer-overlay`. Default: `1000`. */\n '--layer-overlay'?: string | number;\n /** `--layer-toast`. Default: `1050`. */\n '--layer-toast'?: string | number;\n /** `--layer-tooltip`. Default: `1100`. */\n '--layer-tooltip'?: string | number;\n /** `--avatar-1-bg`. Default: `oklch(0.945 0.04 250)`. */\n '--avatar-1-bg'?: string | number;\n /** `--avatar-1-fg`. Default: `oklch(0.45 0.08 250)`. */\n '--avatar-1-fg'?: string | number;\n /** `--avatar-2-bg`. Default: `oklch(0.945 0.04 292)`. */\n '--avatar-2-bg'?: string | number;\n /** `--avatar-2-fg`. Default: `oklch(0.45 0.08 292)`. */\n '--avatar-2-fg'?: string | number;\n /** `--avatar-3-bg`. Default: `oklch(0.945 0.04 334)`. */\n '--avatar-3-bg'?: string | number;\n /** `--avatar-3-fg`. Default: `oklch(0.45 0.08 334)`. */\n '--avatar-3-fg'?: string | number;\n /** `--avatar-4-bg`. Default: `oklch(0.945 0.04 5)`. */\n '--avatar-4-bg'?: string | number;\n /** `--avatar-4-fg`. Default: `oklch(0.45 0.08 5)`. */\n '--avatar-4-fg'?: string | number;\n /** `--avatar-5-bg`. Default: `oklch(0.945 0.04 55)`. */\n '--avatar-5-bg'?: string | number;\n /** `--avatar-5-fg`. Default: `oklch(0.45 0.08 55)`. */\n '--avatar-5-fg'?: string | number;\n /** `--avatar-6-bg`. Default: `oklch(0.945 0.04 125)`. */\n '--avatar-6-bg'?: string | number;\n /** `--avatar-6-fg`. Default: `oklch(0.45 0.08 125)`. */\n '--avatar-6-fg'?: string | number;\n /** `--avatar-sheen`. Default: `oklch(1 0 0 / 0.35)`. */\n '--avatar-sheen'?: string | number;\n /** `--avatar-shade`. Default: `oklch(0.225 0.012 264 / 0.05)`. */\n '--avatar-shade'?: string | number;\n }\n}\n","import { reducedMotionTokens, type ThemeSet, type ThemeTokens } from './theme-tokens.generated';\n\nexport type * from './theme-tokens.generated';\n\nexport interface ZyncatThemeProps {\n /**\n * The app's themes. `base` lands on `:root`; every other key becomes a\n * `[data-theme='<key>']` block, activated by setting that attribute on `<html>`\n * or any subtree root.\n */\n theme?: ThemeSet;\n}\n\ntype TokenGroup = Record<string, string | number | undefined>;\n\nconst BASE = 'base';\n\nconst kebabize = (key: string) =>\n key\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([a-zA-Z])([0-9])/g, '$1-$2')\n .replace(/([0-9])([A-Z])/g, '$1-$2')\n .toLowerCase();\n\nconst pushDeclarations = (into: [string, string][], group: TokenGroup, prefix: string) => {\n for (const [key, value] of Object.entries(group ?? {}))\n if (value != null) into.push([`--${prefix}${kebabize(key)}`, String(value)]);\n};\n\nconst resolveDeclarations = (tokens?: ThemeTokens): [string, string][] => {\n const declarations: [string, string][] = [];\n for (const [group, values] of Object.entries(tokens ?? {})) {\n if (!values) continue;\n if (group === 'custom') {\n for (const [property, value] of Object.entries(values as TokenGroup))\n if (value != null) declarations.push([property, String(value)]);\n } else if (group === 'components') {\n for (const [component, knobs] of Object.entries(values as Record<string, TokenGroup>))\n if (knobs) pushDeclarations(declarations, knobs, `${kebabize(component)}-`);\n } else {\n pushDeclarations(declarations, values as TokenGroup, '');\n }\n }\n return declarations;\n};\n\nconst cssBlock = (selector: string, declarations: [string, string][], indent = ''): string =>\n `${indent}${selector} {\\n${declarations.map(([name, value]) => `${indent} ${name}: ${value};`).join('\\n')}\\n${indent}}`;\n\nconst renderThemeCss = (theme?: ThemeSet): string => {\n const blocks = Object.entries(theme ?? {})\n .map(([name, tokens]) => ({ name, declarations: resolveDeclarations(tokens) }))\n .filter((block) => block.declarations.length)\n .sort((a, b) => Number(b.name === BASE) - Number(a.name === BASE));\n\n const collapsed: [string, string][] = [];\n const seen = new Set<string>();\n for (const [cssName] of blocks.flatMap((block) => block.declarations)) {\n const collapseValue = reducedMotionTokens[cssName];\n if (collapseValue && !seen.has(cssName)) {\n seen.add(cssName);\n collapsed.push([cssName, collapseValue]);\n }\n }\n\n const selectorFor = (name: string) => (name === BASE ? ':root' : `[data-theme='${name}']`);\n const parts = blocks.map((block) => cssBlock(selectorFor(block.name), block.declarations));\n if (collapsed.length) {\n const scopes = blocks.map((block) => selectorFor(block.name)).join(',\\n ');\n parts.push(`@media (prefers-reduced-motion: reduce) {\\n${cssBlock(scopes, collapsed, ' ')}\\n}`);\n }\n return parts.join('\\n');\n};\n\nexport function defineTheme(tokens: ThemeTokens): ThemeTokens {\n return tokens;\n}\n\nexport function ZyncatTheme({ theme }: ZyncatThemeProps) {\n const css = renderThemeCss(theme);\n if (!css) return null;\n return <style data-zyncat-theme=\"\">{css}</style>;\n}\n"]}
|