@yewdiel21/motion-kit 0.9.0 → 0.10.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/NOTICE +3 -35
- package/README.md +93 -81
- package/dist/auto/index.d.ts +22 -3
- package/dist/auto/index.js +43 -5
- package/dist/auto/index.js.map +1 -1
- package/dist/{chunk-KLY5BRRI.js → chunk-34EZ7DF4.js} +1 -1
- package/dist/chunk-34EZ7DF4.js.map +1 -0
- package/dist/{chunk-RFDIZYFX.js → chunk-DOOMULVV.js} +20 -20
- package/dist/chunk-DOOMULVV.js.map +1 -0
- package/dist/{chunk-ABNRDDO7.js → chunk-I3DXF2KQ.js} +2 -2
- package/dist/{chunk-Q4LVFNLN.js → chunk-IKQ5FODN.js} +4 -4
- package/dist/chunk-IKQ5FODN.js.map +1 -0
- package/dist/{chunk-2BQGFOA7.js → chunk-J6OCFNGU.js} +2 -2
- package/dist/chunk-J6OCFNGU.js.map +1 -0
- package/dist/{chunk-6OJAP6ZL.js → chunk-QFBOHPWZ.js} +3 -3
- package/dist/chunk-QFBOHPWZ.js.map +1 -0
- package/dist/{chunk-J27KH2A2.js → chunk-RVSKEBIC.js} +1 -1
- package/dist/chunk-RVSKEBIC.js.map +1 -0
- package/dist/{chunk-34XYOXHG.js → chunk-TFNRIZHU.js} +1615 -12
- package/dist/chunk-TFNRIZHU.js.map +1 -0
- package/dist/{chunk-FS2HJVVY.js → chunk-XAKC2QY7.js} +1204 -5
- package/dist/chunk-XAKC2QY7.js.map +1 -0
- package/dist/css/components/calendar.css +159 -0
- package/dist/css/components/chat-background.css +2 -2
- package/dist/css/components/chat.css +1 -1
- package/dist/css/components/cursor.css +3 -3
- package/dist/css/components/dialog.css +3 -3
- package/dist/css/components/hover-card.css +14 -0
- package/dist/css/components/input-otp.css +10 -0
- package/dist/css/components/island.css +1 -1
- package/dist/css/components/menu.css +1 -1
- package/dist/css/components/nav.css +1 -5
- package/dist/css/components/pagination.css +11 -0
- package/dist/css/components/quantity.css +16 -0
- package/dist/css/components/slot-picker.css +126 -0
- package/dist/css/components/steps.css +2 -2
- package/dist/css/components/studio-dock.css +35 -0
- package/dist/css/components/theme-picker.css +1 -1
- package/dist/css/components/toast.css +1 -1
- package/dist/css/components/trailer.css +37 -0
- package/dist/css/controls.css +78 -13
- package/dist/css/effects.css +8 -8
- package/dist/css/fonts.css +1 -1
- package/dist/css/themes/black-green.css +1 -1
- package/dist/css/themes/black.css +1 -1
- package/dist/css/themes/blue.css +1 -1
- package/dist/css/themes/brown.css +1 -1
- package/dist/css/themes/cold-blue.css +1 -1
- package/dist/css/themes/funny.css +1 -1
- package/dist/css/themes/gray.css +1 -1
- package/dist/css/themes/green.css +1 -1
- package/dist/css/themes/modern-1.css +1 -1
- package/dist/css/themes/neogreen.css +1 -1
- package/dist/css/themes/new.css +1 -1
- package/dist/css/themes/new2.css +1 -1
- package/dist/css/themes/oled.css +1 -1
- package/dist/css/themes/orange.css +1 -1
- package/dist/css/themes/pastel-pink.css +1 -1
- package/dist/css/themes/pink.css +1 -1
- package/dist/css/themes/purple.css +1 -1
- package/dist/css/themes/red.css +1 -1
- package/dist/css/themes/super-blue.css +1 -1
- package/dist/css/themes.css +19 -19
- package/dist/css/tokens.css +9 -9
- package/dist/elements/index.d.ts +75 -7
- package/dist/elements/index.js +172 -6
- package/dist/elements/index.js.map +1 -1
- package/dist/{engine-CUr9QijM.d.ts → engine-GDGwQnJE.d.ts} +2 -2
- package/dist/gl/index.js +3 -3
- package/dist/index.css +1076 -63
- package/dist/index.d.ts +17 -17
- package/dist/index.js +49 -7
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +139 -40
- package/dist/react/index.js +355 -8
- package/dist/react/index.js.map +1 -1
- package/dist/{reduced-BM4Ls0g5.d.ts → reduced-BmBzKH94.d.ts} +215 -18
- package/dist/{reveal-WFUWDrei.d.ts → reveal-jsX-uwUz.d.ts} +233 -24
- package/dist/{store-Bqy_obnD.d.ts → store-DYb3tTsZ.d.ts} +5 -5
- package/dist/theme/generate.d.ts +1 -1
- package/dist/theme/generate.js +2 -2
- package/dist/theme/generate.js.map +1 -1
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.js +2 -2
- package/dist/{theme-BFMoCzi6.d.ts → theme-Bjf9qIIy.d.ts} +1 -1
- package/package.json +2 -2
- package/registry.json +230 -156
- package/skills/motion-kit/SKILL.md +209 -189
- package/skills/motion-kit/reference/components.md +5 -5
- package/skills/motion-kit/reference/design.md +14 -14
- package/skills/motion-kit/reference/recipes.md +48 -49
- package/src/auto/auto-init.ts +38 -0
- package/src/components/calendar/README.md +82 -0
- package/src/components/calendar/calendar.css +158 -0
- package/src/components/calendar/element.ts +27 -0
- package/src/components/calendar/engine.ts +412 -0
- package/src/components/calendar/react.tsx +69 -0
- package/src/components/chat/README.md +1 -3
- package/src/components/chat/chat.css +1 -1
- package/src/components/chat/engine.ts +1 -1
- package/src/components/chat/react.tsx +1 -1
- package/src/components/chat-background/README.md +1 -3
- package/src/components/chat-background/audio.ts +1 -1
- package/src/components/chat-background/chat-background.css +2 -2
- package/src/components/chat-background/engine.ts +1 -1
- package/src/components/chat-background/react.tsx +1 -1
- package/src/components/cursor/README.md +3 -5
- package/src/components/cursor/cursor.css +3 -3
- package/src/components/cursor/element.ts +2 -2
- package/src/components/cursor/engine.ts +5 -5
- package/src/components/cursor/react.tsx +1 -1
- package/src/components/dialog/README.md +4 -8
- package/src/components/dialog/dialog.css +3 -3
- package/src/components/dialog/engine.ts +2 -2
- package/src/components/dialog/react.tsx +1 -1
- package/src/components/hover-card/README.md +16 -0
- package/src/components/hover-card/element.ts +8 -0
- package/src/components/hover-card/engine.ts +69 -0
- package/src/components/hover-card/hover-card.css +13 -0
- package/src/components/hover-card/react.tsx +19 -0
- package/src/components/input-otp/README.md +18 -0
- package/src/components/input-otp/element.ts +14 -0
- package/src/components/input-otp/engine.ts +106 -0
- package/src/components/input-otp/input-otp.css +9 -0
- package/src/components/input-otp/react.tsx +21 -0
- package/src/components/island/README.md +7 -7
- package/src/components/island/engine.ts +3 -3
- package/src/components/island/island.css +1 -1
- package/src/components/island/react.tsx +3 -3
- package/src/components/menu/README.md +2 -4
- package/src/components/menu/engine.ts +1 -1
- package/src/components/menu/menu.css +1 -1
- package/src/components/menu/react.tsx +1 -1
- package/src/components/nav/README.md +12 -14
- package/src/components/nav/engine.ts +5 -5
- package/src/components/nav/nav.css +1 -5
- package/src/components/nav/react.tsx +3 -3
- package/src/components/pagination/README.md +17 -0
- package/src/components/pagination/element.ts +14 -0
- package/src/components/pagination/engine.ts +102 -0
- package/src/components/pagination/pagination.css +10 -0
- package/src/components/pagination/react.tsx +22 -0
- package/src/components/quantity/README.md +20 -0
- package/src/components/quantity/element.ts +14 -0
- package/src/components/quantity/engine.ts +85 -0
- package/src/components/quantity/quantity.css +15 -0
- package/src/components/quantity/react.tsx +21 -0
- package/src/components/slot-picker/README.md +68 -0
- package/src/components/slot-picker/element.ts +27 -0
- package/src/components/slot-picker/engine.ts +412 -0
- package/src/components/slot-picker/react.tsx +76 -0
- package/src/components/slot-picker/slot-picker.css +125 -0
- package/src/components/steps/README.md +1 -3
- package/src/components/steps/engine.ts +3 -3
- package/src/components/steps/react.tsx +2 -2
- package/src/components/steps/steps.css +2 -2
- package/src/components/studio-dock/README.md +44 -0
- package/src/components/studio-dock/element.ts +11 -0
- package/src/components/studio-dock/engine.ts +212 -0
- package/src/components/studio-dock/react.tsx +23 -0
- package/src/components/studio-dock/studio-dock.css +34 -0
- package/src/components/theme-picker/README.md +3 -5
- package/src/components/theme-picker/engine.ts +2 -2
- package/src/components/theme-picker/react.tsx +1 -1
- package/src/components/theme-picker/theme-picker.css +1 -1
- package/src/components/toast/README.md +1 -3
- package/src/components/toast/engine.ts +2 -2
- package/src/components/toast/react.tsx +1 -1
- package/src/components/toast/store.ts +1 -2
- package/src/components/toast/toast.css +1 -1
- package/src/components/trailer/README.md +28 -0
- package/src/components/trailer/element.ts +13 -0
- package/src/components/trailer/engine.ts +189 -0
- package/src/components/trailer/react.tsx +16 -0
- package/src/components/trailer/trailer.css +36 -0
- package/src/core/channels.ts +3 -3
- package/src/core/curves.ts +3 -3
- package/src/core/dates.ts +98 -0
- package/src/core/gsap.ts +2 -2
- package/src/core/loop.ts +1 -1
- package/src/core/math.ts +1 -1
- package/src/core/physics-spring.ts +2 -2
- package/src/core/scroll-track.ts +2 -4
- package/src/core/spring.ts +1 -1
- package/src/core/timing.ts +21 -22
- package/src/css/controls/README.md +24 -20
- package/src/css/controls/burger.css +1 -1
- package/src/css/controls/button.css +4 -4
- package/src/css/controls/checkbox.css +1 -1
- package/src/css/controls/chip.css +1 -1
- package/src/css/controls/field.css +2 -2
- package/src/css/controls/glass.css +4 -4
- package/src/css/controls/status.css +63 -0
- package/src/css/default-theme.css +1 -1
- package/src/css/effects/README.md +19 -21
- package/src/css/effects/anim.css +1 -1
- package/src/css/effects/fade.css +1 -1
- package/src/css/effects/float.css +1 -1
- package/src/css/effects/frost.css +1 -1
- package/src/css/effects/grain.css +1 -1
- package/src/css/effects/loading.css +1 -1
- package/src/css/effects/success.css +1 -1
- package/src/css/effects/text.css +1 -1
- package/src/css/fonts.css +1 -1
- package/src/css/states.css +1 -1
- package/src/css/themes/black-green.css +1 -1
- package/src/css/themes/black.css +1 -1
- package/src/css/themes/blue.css +1 -1
- package/src/css/themes/brown.css +1 -1
- package/src/css/themes/cold-blue.css +1 -1
- package/src/css/themes/funny.css +1 -1
- package/src/css/themes/gray.css +1 -1
- package/src/css/themes/green.css +1 -1
- package/src/css/themes/modern-1.css +1 -1
- package/src/css/themes/neogreen.css +1 -1
- package/src/css/themes/new.css +1 -1
- package/src/css/themes/new2.css +1 -1
- package/src/css/themes/oled.css +1 -1
- package/src/css/themes/orange.css +1 -1
- package/src/css/themes/pastel-pink.css +1 -1
- package/src/css/themes/pink.css +1 -1
- package/src/css/themes/purple.css +1 -1
- package/src/css/themes/red.css +1 -1
- package/src/css/themes/super-blue.css +1 -1
- package/src/css/tokens.css +8 -8
- package/src/elements/index.ts +24 -0
- package/src/gl/liquid-blend/README.md +3 -3
- package/src/gl/matcap/README.md +3 -3
- package/src/gl/particle-hero/README.md +1 -1
- package/src/gl/particle-hero/create-particle-hero.ts +3 -5
- package/src/gl/particle-hero/shaders.ts +1 -1
- package/src/gl/shader-blur/README.md +3 -3
- package/src/gl/shader-grain/README.md +3 -3
- package/src/index.ts +25 -0
- package/src/motion/chat.ts +2 -2
- package/src/motion/confetti.ts +1 -1
- package/src/motion/count.ts +1 -1
- package/src/motion/details.ts +1 -1
- package/src/motion/drag-dismiss.ts +1 -1
- package/src/motion/effects.ts +1 -1
- package/src/motion/entrances.ts +1 -1
- package/src/motion/floating.ts +1 -1
- package/src/motion/flow.ts +2 -2
- package/src/motion/indicator.ts +1 -1
- package/src/motion/layout.ts +1 -1
- package/src/motion/liquid.ts +1 -1
- package/src/motion/morph.ts +2 -2
- package/src/motion/reveal.ts +1 -1
- package/src/motion/sheet.ts +1 -1
- package/src/motion/surface.ts +1 -1
- package/src/react/animated-number.tsx +2 -2
- package/src/react/flip-group.tsx +1 -1
- package/src/react/frost.tsx +1 -1
- package/src/react/index.ts +21 -0
- package/src/react/slot-text.tsx +1 -1
- package/src/react/use-action-button.ts +6 -0
- package/src/react/use-card-dock.ts +1 -1
- package/src/react/use-cascade.ts +1 -1
- package/src/react/use-contrast.ts +1 -1
- package/src/react/use-depth-grid.ts +1 -1
- package/src/react/use-editorial-reveal.ts +7 -0
- package/src/react/use-fill-text.ts +1 -1
- package/src/react/use-film-hero.ts +6 -0
- package/src/react/use-font-cycle.ts +7 -0
- package/src/react/use-frame-zoom.ts +1 -1
- package/src/react/use-image-zoom.ts +5 -0
- package/src/react/use-joined-cta.ts +5 -0
- package/src/react/use-letters.ts +1 -1
- package/src/react/use-local-clock.ts +5 -0
- package/src/react/use-marquee.ts +1 -1
- package/src/react/use-mask-text.ts +1 -1
- package/src/react/use-parallax.ts +1 -1
- package/src/react/use-particle-hero.ts +1 -1
- package/src/react/use-scroll-dock.ts +5 -0
- package/src/react/use-snap-strip.ts +1 -1
- package/src/react/use-sticker.ts +5 -0
- package/src/react/use-studio-dock.ts +8 -0
- package/src/react/use-text-roll.ts +1 -1
- package/src/react/use-thumbnail-nav.ts +7 -0
- package/src/react/use-trailer.ts +6 -0
- package/src/react/use-weight-hover.ts +5 -0
- package/src/recipes/action-button/README.md +31 -0
- package/src/recipes/action-button/action-button.css +113 -0
- package/src/recipes/action-button/create-action-button.ts +56 -0
- package/src/recipes/card-dock/README.md +1 -1
- package/src/recipes/card-dock/card-dock.css +1 -1
- package/src/recipes/card-dock/create-card-dock.ts +2 -2
- package/src/recipes/cascade/README.md +1 -3
- package/src/recipes/cascade/create-cascade.ts +3 -3
- package/src/recipes/contrast/README.md +0 -2
- package/src/recipes/contrast/create-contrast.ts +1 -1
- package/src/recipes/counter/README.md +0 -2
- package/src/recipes/counter/create-counter.ts +1 -1
- package/src/recipes/curved-carousel/README.md +0 -2
- package/src/recipes/curved-carousel/create-curved-carousel.ts +2 -2
- package/src/recipes/curved-carousel/curved-carousel.css +1 -1
- package/src/recipes/depth-grid/README.md +0 -2
- package/src/recipes/depth-grid/create-depth-grid.ts +3 -4
- package/src/recipes/details/README.md +0 -2
- package/src/recipes/details/create-details.ts +1 -1
- package/src/recipes/dock-pill/README.md +3 -3
- package/src/recipes/drag-ruler/README.md +3 -3
- package/src/recipes/editorial-reveal/README.md +35 -0
- package/src/recipes/editorial-reveal/create-editorial-reveal.ts +91 -0
- package/src/recipes/editorial-reveal/editorial-reveal.css +17 -0
- package/src/recipes/fill-text/README.md +1 -1
- package/src/recipes/fill-text/create-fill-text.ts +1 -1
- package/src/recipes/film-hero/README.md +23 -0
- package/src/recipes/film-hero/create-film-hero.ts +65 -0
- package/src/recipes/film-hero/film-hero.css +29 -0
- package/src/recipes/fit-text/README.md +0 -2
- package/src/recipes/flow/README.md +0 -2
- package/src/recipes/flow/create-flow.ts +1 -1
- package/src/recipes/font-cycle/README.md +11 -0
- package/src/recipes/font-cycle/create-font-cycle.ts +126 -0
- package/src/recipes/font-cycle/font-cycle.css +36 -0
- package/src/recipes/frame-zoom/README.md +1 -3
- package/src/recipes/frame-zoom/create-frame-zoom.ts +2 -2
- package/src/recipes/image-zoom/README.md +16 -0
- package/src/recipes/image-zoom/create-image-zoom.ts +27 -0
- package/src/recipes/image-zoom/image-zoom.css +7 -0
- package/src/recipes/infinite-reel/README.md +3 -3
- package/src/recipes/joined-cta/README.md +13 -0
- package/src/recipes/joined-cta/create-joined-cta.ts +22 -0
- package/src/recipes/joined-cta/joined-cta.css +17 -0
- package/src/recipes/letters/README.md +2 -4
- package/src/recipes/letters/create-letters.ts +3 -3
- package/src/recipes/local-clock/README.md +31 -0
- package/src/recipes/local-clock/create-local-clock.ts +61 -0
- package/src/recipes/marquee/README.md +0 -2
- package/src/recipes/marquee/create-marquee.ts +3 -3
- package/src/recipes/marquee/marquee.css +1 -1
- package/src/recipes/mask-text/README.md +3 -5
- package/src/recipes/mask-text/create-mask-text.ts +4 -4
- package/src/recipes/parallax/README.md +1 -3
- package/src/recipes/parallax/create-parallax.ts +1 -1
- package/src/recipes/pile/README.md +0 -2
- package/src/recipes/pile/create-pile.ts +1 -1
- package/src/recipes/pile/pile-math.ts +1 -1
- package/src/recipes/pile/pile.css +1 -1
- package/src/recipes/pill/README.md +0 -2
- package/src/recipes/pill/pill.css +2 -2
- package/src/recipes/pop/README.md +0 -2
- package/src/recipes/pop/create-pop.ts +1 -1
- package/src/recipes/radial-menu/README.md +0 -2
- package/src/recipes/radial-menu/create-radial-menu.ts +1 -1
- package/src/recipes/radial-menu/radial-menu.css +1 -1
- package/src/recipes/reflow/README.md +3 -5
- package/src/recipes/reflow/create-reflow.ts +1 -1
- package/src/recipes/repel-bento/README.md +3 -3
- package/src/recipes/reveal/README.md +0 -2
- package/src/recipes/reveal/create-reveal.ts +1 -1
- package/src/recipes/rotator/README.md +3 -3
- package/src/recipes/scroll-dock/README.md +46 -0
- package/src/recipes/scroll-dock/create-scroll-dock.ts +72 -0
- package/src/recipes/scroll-dock/scroll-dock.css +70 -0
- package/src/recipes/slot-text/README.md +0 -2
- package/src/recipes/slot-text/create-slot-text.ts +1 -1
- package/src/recipes/snap-strip/README.md +1 -1
- package/src/recipes/snap-strip/create-snap-strip.ts +5 -6
- package/src/recipes/snap-strip/snap-strip.css +1 -1
- package/src/recipes/sortable/README.md +3 -5
- package/src/recipes/sortable/create-sortable.ts +4 -4
- package/src/recipes/sortable/sortable.css +1 -1
- package/src/recipes/spring-cards/README.md +0 -2
- package/src/recipes/spring-cards/create-spring-cards.ts +1 -1
- package/src/recipes/spring-cards/spring-cards.css +1 -1
- package/src/recipes/sticker/README.md +59 -0
- package/src/recipes/sticker/create-sticker.ts +490 -0
- package/src/recipes/sticker/sticker.css +112 -0
- package/src/recipes/stretch-footer/README.md +0 -2
- package/src/recipes/stretch-footer/create-stretch-footer.ts +1 -1
- package/src/recipes/stretch-footer/stretch-footer.css +1 -1
- package/src/recipes/tabs/README.md +0 -2
- package/src/recipes/tabs/create-tabs.ts +1 -1
- package/src/recipes/text-roll/README.md +1 -3
- package/src/recipes/text-roll/create-text-roll.ts +3 -3
- package/src/recipes/text-roll/text-roll.css +1 -1
- package/src/recipes/thumbnail-nav/README.md +16 -0
- package/src/recipes/thumbnail-nav/create-thumbnail-nav.ts +165 -0
- package/src/recipes/thumbnail-nav/thumbnail-nav.css +108 -0
- package/src/recipes/ticket-menu/README.md +3 -3
- package/src/recipes/weight-hover/README.md +37 -0
- package/src/recipes/weight-hover/create-weight-hover.ts +136 -0
- package/src/recipes/weight-hover/weight-hover.css +7 -0
- package/src/recipes/words/README.md +0 -2
- package/src/recipes/words/create-words.ts +1 -1
- package/src/theme/generate.ts +1 -1
- package/src/theme/presets.ts +2 -2
- package/src/theme/theme.ts +1 -2
- package/dist/chunk-2BQGFOA7.js.map +0 -1
- package/dist/chunk-34XYOXHG.js.map +0 -1
- package/dist/chunk-6OJAP6ZL.js.map +0 -1
- package/dist/chunk-FS2HJVVY.js.map +0 -1
- package/dist/chunk-J27KH2A2.js.map +0 -1
- package/dist/chunk-KLY5BRRI.js.map +0 -1
- package/dist/chunk-Q4LVFNLN.js.map +0 -1
- package/dist/chunk-RFDIZYFX.js.map +0 -1
- /package/dist/{chunk-ABNRDDO7.js.map → chunk-I3DXF2KQ.js.map} +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/* components/calendar/calendar.css */
|
|
2
|
+
/* calendar — Melon Mind's month/week grid on the --mk-* tokens; parts are .mk-calendar__*. */
|
|
3
|
+
.mk-calendar,
|
|
4
|
+
mk-calendar {
|
|
5
|
+
--mk-calendar-gap: 6px;
|
|
6
|
+
--mk-calendar-radius: var(--mk-radius-lg);
|
|
7
|
+
--mk-calendar-day-height: 112px;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--mk-space-3);
|
|
11
|
+
color: var(--mk-text);
|
|
12
|
+
}
|
|
13
|
+
.mk-calendar__header {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-wrap: wrap;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: var(--mk-space-2);
|
|
18
|
+
}
|
|
19
|
+
.mk-calendar__title { margin: 0 auto 0 0; font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 400; letter-spacing: -0.01em; }
|
|
20
|
+
.mk-calendar__views { display: inline-flex; padding: 4px; gap: 2px; border-radius: var(--mk-radius-full); background: var(--mk-surface-3); }
|
|
21
|
+
.mk-calendar__views button,
|
|
22
|
+
.mk-calendar__nav {
|
|
23
|
+
display: inline-grid;
|
|
24
|
+
place-items: center;
|
|
25
|
+
min-width: 44px;
|
|
26
|
+
height: 44px;
|
|
27
|
+
padding: 0 12px;
|
|
28
|
+
border: 0;
|
|
29
|
+
border-radius: var(--mk-radius-full);
|
|
30
|
+
background: transparent;
|
|
31
|
+
color: var(--mk-muted);
|
|
32
|
+
font: inherit;
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
transition: background 0.2s, color 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
35
|
+
}
|
|
36
|
+
.mk-calendar__views button[aria-pressed='true'] { background: var(--mk-surface-5); color: var(--mk-text); }
|
|
37
|
+
.mk-calendar__nav { background: var(--mk-surface-3); color: var(--mk-text); }
|
|
38
|
+
.mk-calendar__nav:active { transform: scale(0.92); }
|
|
39
|
+
:is(.mk-calendar__views button, .mk-calendar__nav):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
40
|
+
|
|
41
|
+
[data-mk-calendar-grid] { position: relative; display: flex; flex-direction: column; gap: var(--mk-calendar-gap); }
|
|
42
|
+
.mk-calendar__head,
|
|
43
|
+
.mk-calendar__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--mk-calendar-gap); }
|
|
44
|
+
.mk-calendar__body { display: flex; flex-direction: column; gap: var(--mk-calendar-gap); }
|
|
45
|
+
.mk-calendar__body--leaving { position: absolute; left: 0; right: 0; pointer-events: none; }
|
|
46
|
+
.mk-calendar__weekday {
|
|
47
|
+
padding: 8px 4px;
|
|
48
|
+
border-radius: var(--mk-radius-md);
|
|
49
|
+
background: var(--mk-surface-2);
|
|
50
|
+
text-align: center;
|
|
51
|
+
font-size: 0.95rem;
|
|
52
|
+
}
|
|
53
|
+
.mk-calendar__weekday-narrow { display: none; }
|
|
54
|
+
|
|
55
|
+
.mk-calendar__day {
|
|
56
|
+
position: relative;
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
59
|
+
gap: 4px;
|
|
60
|
+
min-width: 0;
|
|
61
|
+
min-height: var(--mk-calendar-day-height);
|
|
62
|
+
padding: 6px;
|
|
63
|
+
border-radius: var(--mk-calendar-radius);
|
|
64
|
+
background: var(--mk-surface-3);
|
|
65
|
+
transition: background 0.3s, box-shadow 0.3s;
|
|
66
|
+
container-type: inline-size;
|
|
67
|
+
}
|
|
68
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__day { min-height: calc(var(--mk-calendar-day-height) * 3); }
|
|
69
|
+
.mk-calendar__day[data-outside] { background: var(--mk-surface-1); color: var(--mk-muted); }
|
|
70
|
+
.mk-calendar__day:hover { background: var(--mk-surface-4); }
|
|
71
|
+
.mk-calendar__day[aria-selected='true'] { box-shadow: inset 0 0 0 2px var(--mk-accent); }
|
|
72
|
+
.mk-calendar__number {
|
|
73
|
+
align-self: flex-end;
|
|
74
|
+
min-width: 2.2rem;
|
|
75
|
+
height: 2.2rem;
|
|
76
|
+
padding: 0 0.4rem;
|
|
77
|
+
border: 0;
|
|
78
|
+
border-radius: var(--mk-radius-full);
|
|
79
|
+
background: transparent;
|
|
80
|
+
color: inherit;
|
|
81
|
+
font: inherit;
|
|
82
|
+
font-size: 1.15rem;
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
transition: background 0.3s, color 0.3s, border-radius 0.3s var(--mk-ease-nav-radius), transform 0.3s var(--mk-ease-nav-radius);
|
|
85
|
+
}
|
|
86
|
+
.mk-calendar__number:hover { background: var(--mk-surface-5); }
|
|
87
|
+
.mk-calendar__number:active { transform: scale(0.9); }
|
|
88
|
+
.mk-calendar__number:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
89
|
+
.mk-calendar__day[data-today] .mk-calendar__number { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
90
|
+
|
|
91
|
+
.mk-calendar__events { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
|
|
92
|
+
.mk-calendar__event,
|
|
93
|
+
.mk-calendar__more {
|
|
94
|
+
--mk-calendar-event-color: var(--mk-accent);
|
|
95
|
+
display: flex;
|
|
96
|
+
align-items: center;
|
|
97
|
+
gap: 6px;
|
|
98
|
+
width: 100%;
|
|
99
|
+
min-width: 0;
|
|
100
|
+
padding: 5px 8px;
|
|
101
|
+
border: 0;
|
|
102
|
+
border-radius: 10px;
|
|
103
|
+
background: var(--mk-surface-4);
|
|
104
|
+
color: var(--mk-text);
|
|
105
|
+
font: inherit;
|
|
106
|
+
font-size: 0.85rem;
|
|
107
|
+
text-align: left;
|
|
108
|
+
cursor: pointer;
|
|
109
|
+
transition: background 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
110
|
+
}
|
|
111
|
+
.mk-calendar__event[data-state='pending'] {
|
|
112
|
+
background: color-mix(in srgb, var(--mk-calendar-event-color) 30%, var(--mk-surface-3));
|
|
113
|
+
}
|
|
114
|
+
.mk-calendar__event:hover,
|
|
115
|
+
.mk-calendar__more:hover { transform: translateY(-1px); background: var(--mk-surface-5); }
|
|
116
|
+
.mk-calendar__event:focus-visible,
|
|
117
|
+
.mk-calendar__more:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 1px; }
|
|
118
|
+
.mk-calendar__status {
|
|
119
|
+
flex: none;
|
|
120
|
+
width: 0.8rem;
|
|
121
|
+
height: 0.8rem;
|
|
122
|
+
border: 2px solid currentColor;
|
|
123
|
+
border-radius: 50%;
|
|
124
|
+
}
|
|
125
|
+
.mk-calendar__event[data-state='done'] .mk-calendar__status { background: currentColor; box-shadow: inset 0 0 0 2px var(--mk-surface-4); }
|
|
126
|
+
.mk-calendar__event[data-state='cancelled'] .mk-calendar__event-title { text-decoration: line-through; opacity: 0.6; }
|
|
127
|
+
.mk-calendar__event-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
128
|
+
.mk-calendar__event-time { flex: none; font-variant-numeric: tabular-nums; opacity: 0.85; }
|
|
129
|
+
.mk-calendar__more { justify-content: center; background: transparent; color: var(--mk-muted); }
|
|
130
|
+
|
|
131
|
+
/* Narrow day cells: the month keeps the title (the time stays in the label); the week stacks the time under it. */
|
|
132
|
+
@container (max-width: 150px) {
|
|
133
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__event-time { display: none; }
|
|
134
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event { flex-wrap: wrap; column-gap: 5px; row-gap: 1px; }
|
|
135
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-title { flex: 1 1 0; }
|
|
136
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-time { flex-basis: 100%; padding-left: calc(0.8rem + 5px); font-size: 0.72rem; }
|
|
137
|
+
}
|
|
138
|
+
@media (max-width: 680px) {
|
|
139
|
+
.mk-calendar,
|
|
140
|
+
mk-calendar { --mk-calendar-day-height: 64px; --mk-calendar-gap: 4px; --mk-calendar-radius: var(--mk-radius-sm); }
|
|
141
|
+
.mk-calendar__weekday-long { display: none; }
|
|
142
|
+
.mk-calendar__weekday-narrow { display: inline; }
|
|
143
|
+
.mk-calendar__number { align-self: center; font-size: 0.95rem; }
|
|
144
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__events { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 3px; }
|
|
145
|
+
.mk-calendar__body[data-view='month'] :is(.mk-calendar__event, .mk-calendar__more) {
|
|
146
|
+
width: 7px;
|
|
147
|
+
height: 7px;
|
|
148
|
+
padding: 0;
|
|
149
|
+
border-radius: 50%;
|
|
150
|
+
background: var(--mk-calendar-event-color);
|
|
151
|
+
font-size: 0;
|
|
152
|
+
}
|
|
153
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__status { display: none; }
|
|
154
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-time { display: none; }
|
|
155
|
+
}
|
|
156
|
+
@media (prefers-reduced-motion: reduce) {
|
|
157
|
+
.mk-calendar *,
|
|
158
|
+
mk-calendar * { transition: none !important; }
|
|
159
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/chat-background/chat-background.css */
|
|
2
|
-
/* chat-background —
|
|
2
|
+
/* chat-background — Chat background: two orbiting blobs and a grain, driven by energy. */
|
|
3
3
|
.mk-chat-background,
|
|
4
4
|
mk-chat-background {
|
|
5
5
|
--mk-chat-orbit-1: 10s;
|
|
@@ -47,7 +47,7 @@ mk-chat-background::after {
|
|
|
47
47
|
animation: mk-chat-blob-2 var(--mk-chat-orbit-2) linear infinite;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/* Grain
|
|
50
|
+
/* Grain overlay using SVG turbulence at 30 %. */
|
|
51
51
|
.mk-chat-background__noise {
|
|
52
52
|
position: absolute;
|
|
53
53
|
inset: 0;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/chat/chat.css */
|
|
2
|
-
/* chat —
|
|
2
|
+
/* chat — Chat: glass bubbles over the live background, a soft fade at the bottom, a 64 px composer. */
|
|
3
3
|
.mk-chat,
|
|
4
4
|
mk-chat {
|
|
5
5
|
--mk-chat-radius: var(--mk-radius-2xl);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/cursor/cursor.css */
|
|
2
|
-
/* cursor —
|
|
2
|
+
/* cursor — glass chip and dot. The layer follows the pointer; the engine writes its transform. */
|
|
3
3
|
.mk-cursor {
|
|
4
4
|
position: fixed;
|
|
5
5
|
top: 0;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
will-change: transform;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/* chip
|
|
12
|
+
/* chip: a .mk-glass label; ink follows the background under it. */
|
|
13
13
|
.mk-cursor__chip {
|
|
14
14
|
--mk-glass-fg: #fff;
|
|
15
15
|
display: inline-flex;
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
display: none;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/* dot
|
|
50
|
+
/* dot: a disc with a word and two arrows that slide in when pressed. */
|
|
51
51
|
.mk-cursor--dot {
|
|
52
52
|
--mk-cursor-size: 88px;
|
|
53
53
|
transition: opacity 0.15s var(--mk-ease-quint);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/dialog/dialog.css */
|
|
2
|
-
/* dialog —
|
|
2
|
+
/* dialog — modal surface: 400 px, radius 40, tonal surface; full screen under 680 px. */
|
|
3
3
|
.mk-dialog {
|
|
4
4
|
--mk-dialog-bg: var(--mk-surface-2);
|
|
5
5
|
--mk-dialog-radius: var(--mk-radius-dialog);
|
|
@@ -219,7 +219,7 @@ mk-dialog:not(:defined) {
|
|
|
219
219
|
display: none;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
/* Phones: dialogs take the whole screen with square corners
|
|
222
|
+
/* Phones: dialogs take the whole screen with square corners. */
|
|
223
223
|
@media (max-width: 679px) {
|
|
224
224
|
.mk-dialog:not([data-mk-placement='anchor']) {
|
|
225
225
|
width: 100vw;
|
|
@@ -239,7 +239,7 @@ mk-dialog:not(:defined) {
|
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
/* Sheet
|
|
242
|
+
/* Sheet: pinned to the bottom, up to 720 px wide, rises from below. Also on phones. */
|
|
243
243
|
.mk-dialog[data-mk-variant='sheet'] {
|
|
244
244
|
--mk-dialog-width: var(--mk-sheet-max-width, 720px);
|
|
245
245
|
/* A modal <dialog> is inset: 0 — anchored only to the bottom, it takes its content's height. */
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* components/hover-card/hover-card.css */
|
|
2
|
+
.mk-hover-card, mk-hover-card { position: relative; display: inline-flex; }
|
|
3
|
+
.mk-hover-card [data-mk-hover-panel], mk-hover-card [data-mk-hover-panel] {
|
|
4
|
+
position: absolute; z-index: 10; bottom: calc(100% + .75rem); left: 0;
|
|
5
|
+
width: min(19rem, calc(100vw - 3rem)); padding: 1.25rem; border-radius: var(--mk-radius-lg);
|
|
6
|
+
color: var(--mk-text); background: var(--mk-surface-3); border: 1px solid var(--mk-outline-soft);
|
|
7
|
+
box-shadow: 0 12px 40px color-mix(in srgb, var(--mk-shadow-color) 20%, transparent);
|
|
8
|
+
animation: mk-hover-card-in .28s cubic-bezier(.2,.8,.2,1) both;
|
|
9
|
+
}
|
|
10
|
+
.mk-hover-card [data-mk-hover-panel]::after, mk-hover-card [data-mk-hover-panel]::after { content: ''; position: absolute; inset: -1rem 0; z-index: -1; }
|
|
11
|
+
.mk-hover-card[data-mk-placement=bottom] [data-mk-hover-panel], mk-hover-card[data-mk-placement=bottom] [data-mk-hover-panel] { top: calc(100% + .75rem); bottom: auto; }
|
|
12
|
+
.mk-hover-card [hidden], mk-hover-card [hidden] { display: none !important; }
|
|
13
|
+
@keyframes mk-hover-card-in { from { opacity: 0; transform: translateY(7px) scale(.97); } to { opacity: 1; transform: none; } }
|
|
14
|
+
@media (prefers-reduced-motion: reduce) { .mk-hover-card [data-mk-hover-panel], mk-hover-card [data-mk-hover-panel] { animation: none; } }
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* components/input-otp/input-otp.css */
|
|
2
|
+
.mk-input-otp, mk-input-otp { --mk-otp-size: 2.75rem; --mk-otp-gap: .4rem; display: inline-block; position: relative; max-width: 100%; }
|
|
3
|
+
.mk-input-otp [data-mk-otp-slots], mk-input-otp [data-mk-otp-slots] { display: flex; flex-wrap: wrap; gap: var(--mk-otp-gap); }
|
|
4
|
+
.mk-input-otp__slot { box-sizing: border-box; width: var(--mk-otp-size); height: 3.5rem; display: grid; place-items: center; border: 1px solid var(--mk-outline-soft); border-radius: var(--mk-radius-sm); color: var(--mk-text); background: var(--mk-surface-1); font: 1.5rem var(--mk-font-mono, monospace); transition: border-color .2s, background .2s, transform .2s; }
|
|
5
|
+
.mk-input-otp__slot[data-mk-active] { outline: 2px solid var(--mk-accent); outline-offset: 2px; background: var(--mk-accent-soft); color: var(--mk-on-accent-soft); transform: translateY(-2px); }
|
|
6
|
+
.mk-input-otp [data-mk-otp-input], mk-input-otp [data-mk-otp-input] { position: absolute; inset: 0; box-sizing: border-box; width: 100%; height: 100%; border: 0; background: transparent; color: transparent; caret-color: transparent; outline: 0; font: 1.5rem var(--mk-font-mono, monospace); letter-spacing: calc(var(--mk-otp-size) + var(--mk-otp-gap) - 1ch); padding: 0 0 0 calc((var(--mk-otp-size) - 1ch) / 2); }
|
|
7
|
+
.mk-input-otp:has([aria-invalid=true]) .mk-input-otp__slot, mk-input-otp:has([aria-invalid=true]) .mk-input-otp__slot { border-color: var(--mk-error); }
|
|
8
|
+
.mk-input-otp:has(:disabled), mk-input-otp:has(:disabled) { opacity: .45; }
|
|
9
|
+
@media (max-width: 420px) { .mk-input-otp, mk-input-otp { --mk-otp-size: 2.25rem; --mk-otp-gap: .3rem; } }
|
|
10
|
+
@media (prefers-reduced-motion: reduce) { .mk-input-otp__slot { transition: none; transform: none !important; } }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* components/island/island.css */
|
|
2
2
|
/*
|
|
3
|
-
*
|
|
3
|
+
* floating navbar: frosted glass pill at the top that grows into a
|
|
4
4
|
* panel. Fixed over the page by default; .mk-island--contained keeps it (and its
|
|
5
5
|
* backdrop) inside a positioned parent, for previews.
|
|
6
6
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/menu/menu.css */
|
|
2
|
-
/* menu —
|
|
2
|
+
/* menu — translucent options panel that grows out of its button (an anchored .mk-dialog). */
|
|
3
3
|
.mk-menu {
|
|
4
4
|
--mk-menu-bg: color-mix(in srgb, var(--mk-surface-3) 78%, transparent);
|
|
5
5
|
--mk-menu-radius: 28px;
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
/* components/nav/nav.css */
|
|
2
2
|
/*
|
|
3
|
-
* nav —
|
|
4
|
-
* mobile bar under 680 px, inside an app shell. Ported from Stepbro's
|
|
5
|
-
* `.app-nav.style-N` rules: .app-container → .mk-shell, .app-view → .mk-shell__view,
|
|
6
|
-
* .nav-button → .mk-nav__button, [active=true] → [aria-current="page"],
|
|
7
|
-
* variant-1 → .mk-nav--accent.
|
|
3
|
+
* nav — seven desktop styles and one mobile bar under 680 px, inside an app shell.
|
|
8
4
|
*/
|
|
9
5
|
|
|
10
6
|
/* Shell: the view and the nav side by side (the nav first), stacked on phones. */
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* components/pagination/pagination.css */
|
|
2
|
+
.mk-pagination, mk-pagination { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .35rem; }
|
|
3
|
+
.mk-pagination [data-mk-pagination-pages], mk-pagination [data-mk-pagination-pages] { display: flex; align-items: center; gap: .25rem; }
|
|
4
|
+
.mk-pagination button, mk-pagination button { min-width: 2.5rem; height: 2.5rem; border: 0; border-radius: var(--mk-radius-full); background: var(--mk-surface-2); color: var(--mk-text); font: inherit; cursor: pointer; transition: transform .3s, background .3s, color .3s; }
|
|
5
|
+
.mk-pagination button[aria-current], mk-pagination button[aria-current] { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
6
|
+
.mk-pagination button:hover:not(:disabled), mk-pagination button:hover:not(:disabled) { transform: translateY(-3px); }
|
|
7
|
+
.mk-pagination button:active:not(:disabled), mk-pagination button:active:not(:disabled) { transform: scale(.9); }
|
|
8
|
+
.mk-pagination button:focus-visible, mk-pagination button:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 3px; }
|
|
9
|
+
.mk-pagination button:disabled, mk-pagination button:disabled { opacity: .35; cursor: default; }
|
|
10
|
+
.mk-pagination__gap { padding: 0 .15rem; color: var(--mk-muted); }
|
|
11
|
+
@media (prefers-reduced-motion: reduce) { .mk-pagination button, mk-pagination button { transition: none; transform: none !important; } }
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* components/quantity/quantity.css */
|
|
2
|
+
.mk-quantity, mk-quantity { display: inline-flex; align-items: center; gap: .5rem; --mk-quantity-size: 3rem; }
|
|
3
|
+
.mk-quantity [data-mk-quantity-decrease], .mk-quantity [data-mk-quantity-increase], mk-quantity button {
|
|
4
|
+
width: var(--mk-quantity-size); height: var(--mk-quantity-size); border: 0; border-radius: 50%;
|
|
5
|
+
background: var(--mk-secondary-soft); color: var(--mk-on-secondary-soft); font: inherit; font-size: 1.65rem;
|
|
6
|
+
cursor: pointer; transition: transform .4s cubic-bezier(.28,.71,0,.98), opacity .2s;
|
|
7
|
+
}
|
|
8
|
+
.mk-quantity [data-mk-quantity-increase], mk-quantity [data-mk-quantity-increase] { background: var(--mk-accent-soft); color: var(--mk-on-accent-soft); }
|
|
9
|
+
.mk-quantity button:is(:hover,:focus-visible):not(:disabled), mk-quantity button:is(:hover,:focus-visible):not(:disabled) {
|
|
10
|
+
transform: rotate(15deg); mask-image: radial-gradient(circle at 100% 0, transparent 22%, #000 23%);
|
|
11
|
+
}
|
|
12
|
+
.mk-quantity button:focus-visible, mk-quantity button:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 4px; }
|
|
13
|
+
.mk-quantity button:disabled, mk-quantity button:disabled { opacity: .4; cursor: default; }
|
|
14
|
+
.mk-quantity input, mk-quantity input { width: 3.5rem; padding: .4rem 0; border: 0; border-radius: var(--mk-radius-sm); text-align: center; font: inherit; font-variant-numeric: tabular-nums; background: transparent; color: var(--mk-text); appearance: textfield; }
|
|
15
|
+
.mk-quantity input::-webkit-inner-spin-button, mk-quantity input::-webkit-inner-spin-button { appearance: none; }
|
|
16
|
+
@media (prefers-reduced-motion: reduce) { .mk-quantity button, mk-quantity button { transition: none; transform: none !important; } }
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* components/slot-picker/slot-picker.css */
|
|
2
|
+
/* slot-picker — Melon Mind's appointment picker on the --mk-* tokens; parts are .mk-slot-picker__*. */
|
|
3
|
+
.mk-slot-picker,
|
|
4
|
+
mk-slot-picker {
|
|
5
|
+
--mk-slot-picker-radius: var(--mk-radius-md);
|
|
6
|
+
display: grid;
|
|
7
|
+
grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
border-radius: var(--mk-radius-xl);
|
|
10
|
+
background: var(--mk-surface);
|
|
11
|
+
color: var(--mk-text);
|
|
12
|
+
}
|
|
13
|
+
.mk-slot-picker__calendar { padding: var(--mk-space-5); }
|
|
14
|
+
.mk-slot-picker__panel {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
gap: var(--mk-space-3);
|
|
18
|
+
min-height: 100%;
|
|
19
|
+
padding: var(--mk-space-5);
|
|
20
|
+
background: var(--mk-surface-2);
|
|
21
|
+
}
|
|
22
|
+
.mk-slot-picker__month { display: flex; align-items: center; gap: var(--mk-space-2); margin-bottom: var(--mk-space-3); }
|
|
23
|
+
.mk-slot-picker__title { margin: 0 auto 0 0; font-size: 1.35rem; font-weight: 400; }
|
|
24
|
+
.mk-slot-picker__nav {
|
|
25
|
+
display: grid;
|
|
26
|
+
place-items: center;
|
|
27
|
+
width: 42px;
|
|
28
|
+
height: 42px;
|
|
29
|
+
border: 0;
|
|
30
|
+
border-radius: 50%;
|
|
31
|
+
background: var(--mk-surface-2);
|
|
32
|
+
color: var(--mk-text);
|
|
33
|
+
font: inherit;
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
transition: transform 0.3s var(--mk-ease-nav-move), opacity 0.2s;
|
|
36
|
+
}
|
|
37
|
+
.mk-slot-picker__nav:active { transform: scale(0.9); }
|
|
38
|
+
.mk-slot-picker__nav:disabled { opacity: 0.35; cursor: default; }
|
|
39
|
+
[data-mk-slot-days],
|
|
40
|
+
[data-mk-slot-times] { position: relative; }
|
|
41
|
+
.mk-slot-picker__days { display: flex; flex-direction: column; gap: 6px; }
|
|
42
|
+
.mk-slot-picker__weekdays,
|
|
43
|
+
.mk-slot-picker__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
|
|
44
|
+
.mk-slot-picker__weekdays span {
|
|
45
|
+
padding: 6px 0;
|
|
46
|
+
border-radius: var(--mk-radius-sm);
|
|
47
|
+
background: color-mix(in srgb, var(--mk-surface-2) 70%, transparent);
|
|
48
|
+
text-align: center;
|
|
49
|
+
font-size: 0.9rem;
|
|
50
|
+
}
|
|
51
|
+
.mk-slot-picker__week > [role='gridcell'] { display: grid; }
|
|
52
|
+
.mk-slot-picker__day {
|
|
53
|
+
aspect-ratio: 1.15;
|
|
54
|
+
border: 0;
|
|
55
|
+
border-radius: var(--mk-slot-picker-radius);
|
|
56
|
+
background: var(--mk-surface-3);
|
|
57
|
+
color: var(--mk-text);
|
|
58
|
+
font: inherit;
|
|
59
|
+
font-size: 0.95rem;
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
transition: background 0.25s, color 0.25s, border-radius 0.3s var(--mk-ease-nav-radius), transform 0.3s var(--mk-ease-nav-radius);
|
|
62
|
+
}
|
|
63
|
+
.mk-slot-picker__day:hover:not(:disabled) { background: var(--mk-surface-5); border-radius: var(--mk-radius-full); }
|
|
64
|
+
.mk-slot-picker__day:active:not(:disabled) { transform: scale(0.92); }
|
|
65
|
+
.mk-slot-picker__day:disabled { opacity: 0.35; cursor: default; }
|
|
66
|
+
.mk-slot-picker__day[aria-current='date'] { box-shadow: inset 0 0 0 1.5px var(--mk-outline); }
|
|
67
|
+
[aria-selected='true'] > .mk-slot-picker__day,
|
|
68
|
+
[aria-selected='true'] > .mk-slot-picker__day:hover:not(:disabled) { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
69
|
+
:is(.mk-slot-picker__day, .mk-slot-picker__time, .mk-slot-picker__nav):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
70
|
+
|
|
71
|
+
.mk-slot-picker__heading {
|
|
72
|
+
margin: 0;
|
|
73
|
+
padding: 8px;
|
|
74
|
+
border-radius: var(--mk-radius-md);
|
|
75
|
+
background: var(--mk-surface);
|
|
76
|
+
font-weight: 600;
|
|
77
|
+
}
|
|
78
|
+
.mk-slot-picker__heading:not([data-mk-shown]) { display: none; }
|
|
79
|
+
.mk-slot-picker__heading[data-mk-shown] { animation: mk-slot-heading-in 0.5s cubic-bezier(0.38, 0.49, 0, 1.4); }
|
|
80
|
+
@keyframes mk-slot-heading-in {
|
|
81
|
+
0% { max-height: 0; min-height: 0; padding-block: 0; opacity: 0; }
|
|
82
|
+
100% { max-height: 56px; min-height: 40px; opacity: 1; }
|
|
83
|
+
}
|
|
84
|
+
.mk-slot-picker__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); gap: 8px; align-content: start; }
|
|
85
|
+
.mk-slot-picker__leaving { position: absolute; left: 0; right: 0; pointer-events: none; }
|
|
86
|
+
.mk-slot-picker__note { grid-column: 1 / -1; margin: 2rem 0; color: var(--mk-muted); text-align: center; }
|
|
87
|
+
.mk-slot-picker__time {
|
|
88
|
+
position: relative;
|
|
89
|
+
isolation: isolate;
|
|
90
|
+
height: 44px;
|
|
91
|
+
border: 0;
|
|
92
|
+
border-radius: var(--mk-radius-sm);
|
|
93
|
+
background: var(--mk-surface-4);
|
|
94
|
+
color: var(--mk-text);
|
|
95
|
+
font: inherit;
|
|
96
|
+
font-variant-numeric: tabular-nums;
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
transition: background 0.2s, color 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
99
|
+
}
|
|
100
|
+
.mk-slot-picker__time:hover { transform: translateY(-2px); }
|
|
101
|
+
.mk-slot-picker__time[aria-checked='true'] { color: var(--mk-on-accent); }
|
|
102
|
+
.mk-slot-picker__time[aria-checked='true']::before {
|
|
103
|
+
content: '';
|
|
104
|
+
position: absolute;
|
|
105
|
+
inset: 0;
|
|
106
|
+
z-index: -1;
|
|
107
|
+
border-radius: inherit;
|
|
108
|
+
background: var(--mk-accent);
|
|
109
|
+
animation: mk-slot-highlight 0.7s cubic-bezier(0.38, 0.49, 0, 1.1);
|
|
110
|
+
}
|
|
111
|
+
@keyframes mk-slot-highlight {
|
|
112
|
+
0% { transform: scale(0.8); opacity: 0; filter: blur(16px); box-shadow: 0 0 0 1px var(--mk-surface-2); }
|
|
113
|
+
100% { transform: scale(1); opacity: 1; filter: blur(0); }
|
|
114
|
+
}
|
|
115
|
+
.mk-slot-picker__actions { margin-top: auto; display: flex; justify-content: flex-end; }
|
|
116
|
+
|
|
117
|
+
@media (max-width: 680px) {
|
|
118
|
+
.mk-slot-picker,
|
|
119
|
+
mk-slot-picker { grid-template-columns: 1fr; }
|
|
120
|
+
.mk-slot-picker__calendar,
|
|
121
|
+
.mk-slot-picker__panel { padding: var(--mk-space-4); }
|
|
122
|
+
}
|
|
123
|
+
@media (prefers-reduced-motion: reduce) {
|
|
124
|
+
.mk-slot-picker *,
|
|
125
|
+
mk-slot-picker * { transition: none !important; animation: none !important; }
|
|
126
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/steps/steps.css */
|
|
2
|
-
/* steps —
|
|
2
|
+
/* steps — onboarding: one step at a time, centred in a column up to 600 px wide. */
|
|
3
3
|
.mk-steps,
|
|
4
4
|
mk-steps {
|
|
5
5
|
position: relative;
|
|
@@ -12,7 +12,7 @@ mk-steps {
|
|
|
12
12
|
font-family: var(--mk-font);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
/*
|
|
15
|
+
/* onboarding background runs at 20 %. */
|
|
16
16
|
:is(.mk-steps, mk-steps) > :is(.mk-chat-background, mk-chat-background) {
|
|
17
17
|
--mk-chat-background-opacity: 0.2;
|
|
18
18
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* components/studio-dock/studio-dock.css */
|
|
2
|
+
.mk-studio-dock { position: relative; isolation: isolate; width: min(343px, 100%); color: var(--mk-text); font: inherit; }
|
|
3
|
+
.mk-studio-dock--fixed { position: fixed; z-index: 70; inset-block-end: 24px; inset-inline-start: 50%; translate: -50% 0; width: min(343px, calc(100vw - 32px)); }
|
|
4
|
+
.mk-studio-dock__bar { display: flex; align-items: center; gap: 16px; min-height: 64px; padding: 12px; border-radius: 18px; background: var(--mk-surface-2); }
|
|
5
|
+
.mk-studio-dock__brand, .mk-studio-dock__toggle { display: grid; place-items: center; inline-size: 40px; block-size: 40px; flex: none; border: 0; border-radius: 10px; background: var(--mk-surface); color: inherit; text-decoration: none; font: inherit; }
|
|
6
|
+
.mk-studio-dock__label { flex: 1; font-size: .9rem; }
|
|
7
|
+
.mk-studio-dock__toggle { cursor: pointer; }
|
|
8
|
+
.mk-studio-dock__toggle span { transition: transform .4s; }
|
|
9
|
+
.mk-studio-dock[data-mk-studio-open] .mk-studio-dock__toggle span { transform: rotate(45deg); }
|
|
10
|
+
.mk-studio-dock__panel { position: absolute; z-index: 2; inset-inline: 0; inset-block-end: var(--mk-studio-dock-offset, 76px); max-height: min(660px, 75dvh, var(--mk-studio-dock-space, 660px)); overflow: auto; overscroll-behavior: contain; padding: 12px; border: 1px solid var(--mk-outline-soft); border-radius: 18px; background: var(--mk-surface-2); box-shadow: 0 16px 60px #0002; }
|
|
11
|
+
/* Not enough room above the bar: the engine opens the sheet below it. */
|
|
12
|
+
.mk-studio-dock[data-mk-studio-below] .mk-studio-dock__panel { inset-block: var(--mk-studio-dock-offset, 76px) auto; }
|
|
13
|
+
.mk-studio-dock [hidden] { display: none !important; }
|
|
14
|
+
.mk-studio-dock__grid, .mk-studio-dock__page { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
|
|
15
|
+
.mk-studio-dock__tile { min-height: 130px; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; padding: 12px; border-radius: 10px; background: var(--mk-surface); color: inherit; text-decoration: none; transition: transform .4s cubic-bezier(.2, 1.4, .4, 1); }
|
|
16
|
+
.mk-studio-dock__tile small { color: var(--mk-muted); }
|
|
17
|
+
.mk-studio-dock__tile:is(:hover, :focus-visible) { transform: scale(.94); }
|
|
18
|
+
.mk-studio-dock__reel { display: flex; justify-content: space-between; align-items: end; min-height: 154px; margin-block: 12px; padding: 16px; border-radius: 10px; background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
19
|
+
.mk-studio-dock__reel button { border: 1px solid currentColor; border-radius: 50%; padding: 14px; background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
20
|
+
.mk-studio-dock__slide-track { position: relative; display: flex; align-items: center; height: 64px; padding: 4px; margin-block: 12px; border-radius: 48px; background: var(--mk-surface-3, var(--mk-surface)); }
|
|
21
|
+
.mk-studio-dock__slide-track > span { position: absolute; inset-inline: 60px 12px; text-align: center; font-size: .75rem; pointer-events: none; }
|
|
22
|
+
.mk-studio-dock [data-mk-studio-slide] { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border: 0; border-radius: 50%; background: var(--mk-surface); color: inherit; font-size: 20px; cursor: pointer; touch-action: pan-y; transform: translateX(var(--mk-studio-drag, 0px)); }
|
|
23
|
+
.mk-studio-dock__clock { position: relative; aspect-ratio: 1; display: grid; place-content: center; gap: 4px; text-align: center; border: 10px solid var(--mk-surface); border-radius: 50%; background: var(--mk-surface-2); }
|
|
24
|
+
.mk-studio-dock__clock::after { content: ''; position: absolute; inset: 8px; border: 1px solid var(--mk-outline-soft); border-radius: 50%; }
|
|
25
|
+
.mk-studio-dock__clock small { color: var(--mk-muted); }
|
|
26
|
+
.mk-studio-dock__pages { margin-block-start: 12px; }
|
|
27
|
+
.mk-studio-dock__pagination { display: flex; justify-content: center; gap: 8px; margin-block-start: 12px; }
|
|
28
|
+
.mk-studio-dock__pagination button { width: 32px; height: 32px; padding: 0; border: 0; border-radius: 50%; background: var(--mk-surface); color: inherit; font: inherit; cursor: pointer; }
|
|
29
|
+
.mk-studio-dock__pagination [aria-current] { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
30
|
+
.mk-studio-dock__view { display: grid; gap: 16px; padding: 12px 0; }
|
|
31
|
+
.mk-studio-dock__view input, .mk-studio-dock__view textarea { width: 100%; padding: 12px; border: 1px solid var(--mk-outline-soft); border-radius: 8px; background: var(--mk-surface); color: inherit; font: inherit; }
|
|
32
|
+
.mk-studio-dock__view label { display: grid; gap: 6px; }
|
|
33
|
+
.mk-studio-dock__view video { width: 100%; border-radius: 10px; }
|
|
34
|
+
.mk-studio-dock :is(button,a,input,textarea):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 3px; }
|
|
35
|
+
@media (prefers-reduced-motion: reduce) { .mk-studio-dock *, .mk-studio-dock *::after { transition: none !important; animation: none !important; } }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* components/toast/toast.css */
|
|
2
|
-
/* toast —
|
|
2
|
+
/* toast — deck at the top of the screen, above dialogs (top layer when popovers exist). */
|
|
3
3
|
.mk-toaster {
|
|
4
4
|
position: fixed;
|
|
5
5
|
inset: 16px 0 auto;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* components/trailer/trailer.css */
|
|
2
|
+
.mk-trailer {
|
|
3
|
+
--mk-trailer-ink: #f6f3e8;
|
|
4
|
+
--mk-trailer-paper: #131816;
|
|
5
|
+
width: min(1100px, calc(100vw - 32px));
|
|
6
|
+
max-width: none;
|
|
7
|
+
max-height: calc(100dvh - 32px);
|
|
8
|
+
padding: 0;
|
|
9
|
+
border: 0;
|
|
10
|
+
border-radius: 0;
|
|
11
|
+
color: var(--mk-trailer-ink);
|
|
12
|
+
background: var(--mk-trailer-paper);
|
|
13
|
+
overflow: auto;
|
|
14
|
+
margin: auto;
|
|
15
|
+
}
|
|
16
|
+
.mk-trailer::backdrop { background: rgb(4 10 7 / .8); }
|
|
17
|
+
.mk-trailer__header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 20px; }
|
|
18
|
+
.mk-trailer__title { font: 500 .75rem/1.5 var(--mk-font-mono, monospace); text-transform: uppercase; letter-spacing: .16em; margin: 0; }
|
|
19
|
+
.mk-trailer video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: contain; background: #060b08; }
|
|
20
|
+
.mk-trailer [data-mk-trailer-stage]:fullscreen { display: flex; flex-direction: column; justify-content: center; width: 100%; height: 100%; background: var(--mk-trailer-paper); color: var(--mk-trailer-ink); }
|
|
21
|
+
.mk-trailer [data-mk-trailer-stage]:fullscreen video { max-height: calc(100dvh - 90px); }
|
|
22
|
+
.mk-trailer__controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 20px 16px; font: .7rem/1.5 var(--mk-font-mono, monospace); }
|
|
23
|
+
.mk-trailer button { display: grid; place-items: center; min-width: 44px; min-height: 44px; border: 1px solid currentColor; color: inherit; background: transparent; cursor: pointer; font: inherit; }
|
|
24
|
+
.mk-trailer button:hover { background: rgb(255 255 255 / .12); }
|
|
25
|
+
.mk-trailer button:focus-visible, .mk-trailer input:focus-visible { outline: 2px solid #e5ff96; outline-offset: 4px; }
|
|
26
|
+
.mk-trailer button svg { width: 18px; height: 18px; fill: currentColor; }
|
|
27
|
+
.mk-trailer [data-mk-trailer-seek] { flex: 1; min-width: 70px; accent-color: #d6f2ac; }
|
|
28
|
+
.mk-trailer [data-mk-trailer-volume] { width: 72px; accent-color: #d6f2ac; }
|
|
29
|
+
.mk-trailer [data-mk-trailer-time] { white-space: nowrap; }
|
|
30
|
+
.mk-trailer [data-mk-trailer-status] { padding: 0 20px; font: .8rem/1.5 var(--mk-font, sans-serif); }
|
|
31
|
+
.mk-trailer [data-mk-trailer-status]:empty { display: none; }
|
|
32
|
+
.mk-trailer__pause-icon, .mk-trailer__sound-off { display: none; }
|
|
33
|
+
.mk-trailer [data-mk-trailer-play][aria-pressed="true"] .mk-trailer__play-icon,
|
|
34
|
+
.mk-trailer [data-mk-trailer-mute][aria-pressed="true"] .mk-trailer__sound-on { display: none; }
|
|
35
|
+
.mk-trailer [data-mk-trailer-play][aria-pressed="true"] .mk-trailer__pause-icon,
|
|
36
|
+
.mk-trailer [data-mk-trailer-mute][aria-pressed="true"] .mk-trailer__sound-off { display: block; }
|
|
37
|
+
@media (max-width: 540px) { .mk-trailer [data-mk-trailer-volume] { display: none; } .mk-trailer__controls { gap: 8px; padding-inline: 12px; } .mk-trailer [data-mk-trailer-seek] { flex-basis: 100%; order: -1; } }
|