New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@shift-css/core

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shift-css/core - npm Package Compare versions

Comparing version
0.5.0
to
0.6.0
+162
dist/components/badge.css
:where([s-badge]) {
--_badge-bg: var(--s-neutral-200);
--_badge-text: var(--s-text-primary);
justify-content: center;
align-items: center;
gap: var(--s-space-1);
padding: var(--s-space-1) var(--s-space-2);
border-radius: var(--s-radius-sm);
font-weight: var(--s-font-medium);
font-size: var(--s-text-xs);
white-space: nowrap;
vertical-align: middle;
background-color: var(--_badge-bg);
color: var(--_badge-text);
line-height: 1.25;
display: inline-flex;
@supports (color: oklch(from red l c h)) {
color: oklch(from var(--_badge-bg) clamp(.15, calc((.55 - l) * 1000 + .15), .95) 0 0);
}
@supports (color: contrast-color(red)) {
color: contrast-color(var(--_badge-bg));
}
}
[s-badge="primary"] {
--_badge-bg: var(--s-primary-700);
background-color: var(--s-primary-700);
color: #fff;
}
[s-badge="secondary"] {
--_badge-bg: var(--s-neutral-700);
background-color: var(--s-neutral-700);
color: #fff;
}
[s-badge="success"] {
--_badge-bg: var(--s-success-700);
background-color: var(--s-success-700);
color: #fff;
}
[s-badge="warning"] {
--_badge-bg: var(--s-warning-400);
background-color: var(--s-warning-400);
color: var(--s-warning-950);
}
[s-badge="danger"] {
--_badge-bg: var(--s-danger-700);
background-color: var(--s-danger-700);
color: #fff;
}
[s-badge="accent"] {
--_badge-bg: var(--s-accent-700);
background-color: var(--s-accent-700);
color: #fff;
}
[s-badge="outline"] {
--_badge-bg: transparent;
color: var(--s-text-primary);
box-shadow: inset 0 0 0 1px var(--s-border-default);
background-color: #0000;
}
[s-badge="outline-primary"] {
--_badge-bg: transparent;
background-color: oklch(from var(--s-primary-500) l c h / .1);
color: light-dark(var(--s-primary-700), var(--s-primary-300));
box-shadow: inset 0 0 0 1px light-dark(var(--s-primary-500), var(--s-primary-400));
}
[s-badge="outline-success"] {
--_badge-bg: transparent;
background-color: oklch(from var(--s-success-500) l c h / .1);
color: light-dark(var(--s-success-700), var(--s-success-300));
box-shadow: inset 0 0 0 1px light-dark(var(--s-success-500), var(--s-success-400));
}
[s-badge="outline-warning"] {
--_badge-bg: transparent;
background-color: oklch(from var(--s-warning-500) l c h / .1);
color: light-dark(var(--s-warning-800), var(--s-warning-300));
box-shadow: inset 0 0 0 1px light-dark(var(--s-warning-500), var(--s-warning-400));
}
[s-badge="outline-danger"] {
--_badge-bg: transparent;
background-color: oklch(from var(--s-danger-500) l c h / .1);
color: light-dark(var(--s-danger-800), var(--s-danger-300));
box-shadow: inset 0 0 0 1px light-dark(var(--s-danger-500), var(--s-danger-400));
}
[s-badge][s-size="sm"] {
padding: .125rem .375rem;
font-size: .625rem;
}
[s-badge][s-size="lg"] {
padding: var(--s-space-2) var(--s-space-4);
font-size: var(--s-text-sm);
}
[s-badge][s-pill] {
border-radius: var(--s-radius-full);
}
[s-badge][s-dot] {
border-radius: var(--s-radius-full);
width: .5rem;
height: .5rem;
padding: 0;
}
[s-badge][s-dot][s-size="sm"] {
width: .375rem;
height: .375rem;
}
[s-badge][s-dot][s-size="lg"] {
width: .75rem;
height: .75rem;
}
@media (forced-colors: active) {
[s-badge] {
border: 1px solid canvastext;
}
}
@supports (container-type: inline-size) {
@container surface style(--_surface-depth: 1) {
:where([s-badge=""]) {
--_badge-bg: var(--s-neutral-300);
}
:where([s-badge="outline"]) {
box-shadow: inset 0 0 0 1px var(--s-border-strong);
}
}
@container surface style(--_surface-depth: 2) {
:where([s-badge=""]) {
--_badge-bg: var(--s-neutral-300);
box-shadow: var(--s-shadow-sm);
}
:where([s-badge="outline"]) {
box-shadow: inset 0 0 0 1px var(--s-border-strong);
}
}
@container surface style(--_surface-depth: -1) {
:where([s-badge=""]) {
--_badge-bg: var(--s-neutral-100);
}
}
}
:where([s-menu]) {
--_menu-bg: var(--s-surface-raised);
--_menu-border: var(--s-border-muted);
--_menu-radius: var(--s-radius-lg);
--_menu-shadow: var(--s-shadow-lg);
--_menu-min-width: 10rem;
--_menu-padding: var(--s-space-1);
--_menu-offset: var(--s-space-1);
}
[s-menu] {
anchor-scope: --menu-trigger;
display: inline-block;
position: relative;
}
[s-menu]::marker {
display: none;
}
[s-menu] ::-webkit-details-marker {
display: none;
}
[s-menu-trigger] {
cursor: pointer;
anchor-name: --menu-trigger;
list-style: none;
}
[s-menu-trigger]::-webkit-details-marker {
display: none;
}
[s-menu-items] {
z-index: 9999;
margin-top: var(--_menu-offset);
background-color: var(--_menu-bg);
border: 1px solid var(--_menu-border);
border-radius: var(--_menu-radius);
box-shadow: var(--_menu-shadow);
min-width: var(--_menu-min-width);
padding: var(--_menu-padding);
font-size: var(--s-text-sm);
color: var(--s-text-primary);
opacity: 0;
visibility: hidden;
transition: opacity var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150);
flex-direction: column;
display: flex;
position: absolute;
top: 100%;
left: 0;
transform: scale(.95)translateY(-4px);
}
[s-menu][open] > [s-menu-items] {
opacity: 1;
visibility: visible;
transform: scale(1)translateY(0);
}
[s-menu="end"] > [s-menu-items] {
left: auto;
right: 0;
}
[s-menu="top"] > [s-menu-items] {
margin-top: 0;
margin-bottom: var(--_menu-offset);
top: auto;
bottom: 100%;
transform: scale(.95)translateY(4px);
}
[s-menu="top"][open] > [s-menu-items] {
transform: scale(1)translateY(0);
}
[s-menu="top-end"] > [s-menu-items] {
margin-top: 0;
margin-bottom: var(--_menu-offset);
inset: auto 0 100% auto;
transform: scale(.95)translateY(4px);
}
[s-menu="top-end"][open] > [s-menu-items] {
transform: scale(1)translateY(0);
}
@supports (anchor-scope: all) {
[s-menu-items] {
position-anchor: --menu-trigger;
inset: auto;
margin: 0;
position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
margin-block-start: var(--_menu-offset);
position: absolute;
inset-block-start: anchor(end);
inset-inline-start: anchor(start);
}
[s-menu="end"] > [s-menu-items] {
inset-inline-start: auto;
inset-inline-end: anchor(end);
}
[s-menu="top"] > [s-menu-items] {
margin-block-start: 0;
margin-block-end: var(--_menu-offset);
inset-block-start: auto;
inset-block-end: anchor(start);
}
[s-menu="top-end"] > [s-menu-items] {
margin-block-start: 0;
margin-block-end: var(--_menu-offset);
inset-block-start: auto;
inset-block-end: anchor(start);
inset-inline-start: auto;
inset-inline-end: anchor(end);
}
}
[s-menu-item] {
align-items: center;
gap: var(--s-space-2);
width: 100%;
padding: var(--s-space-2) var(--s-space-3);
border-radius: var(--s-radius-md);
color: var(--s-text-primary);
font-size: inherit;
text-align: start;
cursor: pointer;
transition: background-color var(--s-duration-100) var(--s-ease-out);
background: none;
border: none;
display: flex;
}
[s-menu-item]:hover {
background-color: var(--s-surface-sunken);
}
[s-menu-item]:focus-visible {
outline: 2px solid var(--s-focus-ring);
outline-offset: -2px;
}
[s-menu-item]:disabled {
opacity: .5;
cursor: not-allowed;
}
[s-menu-item][s-danger] {
color: var(--s-state-danger);
}
[s-menu-item][s-danger]:hover {
background-color: var(--s-state-danger-bg);
}
[s-menu-divider] {
height: 1px;
margin: var(--s-space-1) 0;
background-color: var(--s-border-muted);
border: none;
}
[s-menu-label] {
padding: var(--s-space-2) var(--s-space-3);
font-size: var(--s-text-xs);
font-weight: var(--s-font-semibold);
color: var(--s-text-secondary);
text-transform: uppercase;
letter-spacing: var(--s-tracking-wide);
display: block;
}
@media (prefers-reduced-motion: reduce) {
[s-menu-items] {
transition: none;
}
}
@media (forced-colors: active) {
[s-menu-items] {
border: 2px solid canvastext;
}
[s-menu-item]:hover {
color: highlighttext;
background-color: highlight;
}
}
:where([s-tooltip]) {
--_tooltip-bg: var(--s-surface-overlay);
--_tooltip-text: var(--s-text-inverse);
--_tooltip-radius: var(--s-radius-md);
--_tooltip-padding-x: var(--s-space-3);
--_tooltip-padding-y: var(--s-space-1_5);
--_tooltip-offset: var(--s-space-2);
--_tooltip-max-width: 200px;
--_tooltip-arrow-size: 6px;
position: relative;
}
:where([s-tooltip]):after {
content: attr(s-tooltip);
visibility: hidden;
opacity: 0;
z-index: 9999;
margin-bottom: var(--_tooltip-offset);
background-color: var(--_tooltip-bg);
color: var(--_tooltip-text);
padding: var(--_tooltip-padding-y) var(--_tooltip-padding-x);
border-radius: var(--_tooltip-radius);
box-shadow: var(--s-shadow-md);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%)translateY(4px);
@supports (color: oklch(from red l c h)) {
border: 1px solid oklch(from var(--_tooltip-bg) max(calc(l - .1), .05) c h);
}
font-size: var(--s-text-xs);
font-weight: var(--s-font-medium);
line-height: var(--s-leading-tight);
text-align: center;
text-wrap: balance;
min-width: min(100%, var(--_tooltip-max-width));
max-width: var(--_tooltip-max-width);
pointer-events: none;
transition: opacity var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out);
}
:where([s-tooltip]):before {
content: "";
visibility: hidden;
opacity: 0;
z-index: 9999;
margin-bottom: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
border-left: var(--_tooltip-arrow-size) solid transparent;
border-right: var(--_tooltip-arrow-size) solid transparent;
border-top: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
pointer-events: none;
transition: opacity var(--s-duration-150) var(--s-ease-out), visibility var(--s-duration-150) var(--s-ease-out), transform var(--s-duration-150) var(--s-ease-out);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%)translateY(4px);
}
[s-tooltip]:hover:after, [s-tooltip]:hover:before, [s-tooltip]:focus-visible:after, [s-tooltip]:focus-visible:before {
visibility: visible;
opacity: 1;
transform: translateX(-50%)translateY(0);
}
[s-tooltip-pos="bottom"]:after {
margin-bottom: 0;
margin-top: var(--_tooltip-offset);
top: 100%;
bottom: auto;
transform: translateX(-50%)translateY(-4px);
}
[s-tooltip-pos="bottom"]:before {
margin-bottom: 0;
margin-top: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
border-top: none;
border-bottom: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
top: 100%;
bottom: auto;
transform: translateX(-50%)translateY(-4px);
}
[s-tooltip-pos="bottom"]:hover:after, [s-tooltip-pos="bottom"]:hover:before, [s-tooltip-pos="bottom"]:focus-visible:after, [s-tooltip-pos="bottom"]:focus-visible:before {
transform: translateX(-50%)translateY(0);
}
[s-tooltip-pos="left"]:after {
margin-bottom: 0;
margin-right: var(--_tooltip-offset);
inset: 50% 100% auto auto;
transform: translateY(-50%)translateX(4px);
}
[s-tooltip-pos="left"]:before {
margin-bottom: 0;
margin-right: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
border-top: var(--_tooltip-arrow-size) solid transparent;
border-bottom: var(--_tooltip-arrow-size) solid transparent;
border-left: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
border-right: none;
inset: 50% 100% auto auto;
transform: translateY(-50%)translateX(4px);
}
[s-tooltip-pos="left"]:hover:after, [s-tooltip-pos="left"]:hover:before, [s-tooltip-pos="left"]:focus-visible:after, [s-tooltip-pos="left"]:focus-visible:before {
transform: translateY(-50%)translateX(0);
}
[s-tooltip-pos="right"]:after {
margin-bottom: 0;
margin-left: var(--_tooltip-offset);
top: 50%;
bottom: auto;
left: 100%;
transform: translateY(-50%)translateX(-4px);
}
[s-tooltip-pos="right"]:before {
margin-bottom: 0;
margin-left: calc(var(--_tooltip-offset) - var(--_tooltip-arrow-size));
border-top: var(--_tooltip-arrow-size) solid transparent;
border-bottom: var(--_tooltip-arrow-size) solid transparent;
border-right: var(--_tooltip-arrow-size) solid var(--_tooltip-bg);
border-left: none;
top: 50%;
bottom: auto;
left: 100%;
transform: translateY(-50%)translateX(-4px);
}
[s-tooltip-pos="right"]:hover:after, [s-tooltip-pos="right"]:hover:before, [s-tooltip-pos="right"]:focus-visible:after, [s-tooltip-pos="right"]:focus-visible:before {
transform: translateY(-50%)translateX(0);
}
@media (prefers-reduced-motion: reduce) {
[s-tooltip]:after, [s-tooltip]:before {
transition: none;
}
}
@media (forced-colors: active) {
[s-tooltip]:after {
color: canvastext;
background-color: canvas;
border: 1px solid canvastext;
}
[s-tooltip]:before {
display: none;
}
}
/**
* Shift CSS - Attribute Type Definitions
*
* Shared type definitions for all Shift CSS attributes.
* Used by React and Vue module augmentations.
*/
// =============================================================================
// COMPONENT ATTRIBUTES
// =============================================================================
/** Button variants */
export type ShiftButtonVariant =
| 'primary'
| 'secondary'
| 'ghost'
| 'link'
| 'outline'
| 'danger'
| 'success'
| 'warning';
/** Badge variants */
export type ShiftBadgeVariant =
| 'primary'
| 'secondary'
| 'accent'
| 'success'
| 'warning'
| 'danger'
| 'outline'
| 'outline-primary'
| 'outline-secondary'
| 'outline-success'
| 'outline-warning'
| 'outline-danger';
/** Surface variants */
export type ShiftSurfaceVariant = 'raised' | 'sunken' | 'overlay';
/** Modal position variants */
export type ShiftModalPosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'fullscreen';
/** Tooltip position */
export type ShiftTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
/** Prose variants */
export type ShiftProseVariant = 'sm' | 'lg';
/** Input types (for styling variants) */
export type ShiftInputVariant = 'error' | 'success';
// =============================================================================
// SIZE ATTRIBUTES
// =============================================================================
/** Common size scale */
export type ShiftSize = 'sm' | 'lg' | 'xl';
/** Extended size scale (includes full) */
export type ShiftSizeExtended = ShiftSize | 'full';
// =============================================================================
// LAYOUT ATTRIBUTES
// =============================================================================
/** Flex direction and patterns */
export type ShiftFlexVariant =
| 'row'
| 'col'
| 'row-reverse'
| 'col-reverse'
| 'center'
| 'stack'
| 'between'
| 'end'
| 'wrap'
| 'nowrap';
/** Grid column counts */
export type ShiftGridColumns = '1' | '2' | '3' | '4' | '5' | '6' | '12' | 'auto-fit' | 'auto-fill';
/** Grid row counts */
export type ShiftGridRows = '1' | '2' | '3' | '4';
/** Column span */
export type ShiftColSpan = '1' | '2' | '3' | '4' | '6' | '12' | 'full';
/** Row span */
export type ShiftRowSpan = '1' | '2' | '3' | 'full';
/** Gap sizes */
export type ShiftGap = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'none';
/** Container sizes */
export type ShiftContainer = 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'prose';
/** Justify content */
export type ShiftJustify = 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
/** Align items */
export type ShiftItems = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
/** Align content */
export type ShiftContent = 'start' | 'end' | 'center' | 'between' | 'around';
/** Position */
export type ShiftPosition = 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky';
/** Inset */
export type ShiftInset = '0' | 'auto';
/** Display */
export type ShiftDisplay =
| 'block'
| 'inline'
| 'inline-block'
| 'contents'
| 'inline-flex'
| 'inline-grid';
// =============================================================================
// VISIBILITY ATTRIBUTES
// =============================================================================
/** Responsive breakpoints for hide-on */
export type ShiftBreakpoint = 'sm' | 'md' | 'lg' | 'xl';
// =============================================================================
// BOOLEAN ATTRIBUTE TYPE
// =============================================================================
/** Boolean attribute type - accepts boolean or empty string for presence-only attributes */
export type ShiftBooleanAttr = boolean | '';
/** Overflow */
export type ShiftOverflow = 'auto' | 'hidden' | 'scroll' | 'visible';
/** Pointer events */
export type ShiftPointer = 'none' | 'auto';
/** User select */
export type ShiftSelect = 'none' | 'text' | 'all' | 'auto';
// =============================================================================
// COMPLETE ATTRIBUTE MAP
// =============================================================================
/**
* All Shift CSS attributes with their value types.
* Boolean attributes accept `true` or empty string.
*/
export interface ShiftAttributes {
// Component attributes (with variants)
's-btn'?: ShiftButtonVariant | ShiftBooleanAttr;
's-badge'?: ShiftBadgeVariant | ShiftBooleanAttr;
's-surface'?: ShiftSurfaceVariant | ShiftBooleanAttr;
's-modal'?: ShiftModalPosition | ShiftBooleanAttr;
's-tooltip'?: string;
's-tooltip-pos'?: ShiftTooltipPosition;
's-prose'?: ShiftProseVariant | ShiftBooleanAttr;
's-input'?: ShiftInputVariant | ShiftBooleanAttr;
's-card'?: ShiftBooleanAttr;
's-skip-link'?: ShiftBooleanAttr;
// Size modifier (composable)
's-size'?: ShiftSizeExtended;
// Layout attributes
's-flex'?: ShiftFlexVariant | ShiftBooleanAttr;
's-grid'?: ShiftGridColumns | ShiftBooleanAttr;
's-grid-rows'?: ShiftGridRows;
's-col-span'?: ShiftColSpan;
's-row-span'?: ShiftRowSpan;
's-gap'?: ShiftGap | ShiftBooleanAttr;
's-container'?: ShiftContainer | ShiftBooleanAttr;
's-justify'?: ShiftJustify;
's-items'?: ShiftItems;
's-content'?: ShiftContent;
's-position'?: ShiftPosition;
's-inset'?: ShiftInset;
's-display'?: ShiftDisplay;
// Visibility attributes
's-hide-on'?: ShiftBreakpoint;
's-overflow'?: ShiftOverflow;
's-overflow-x'?: ShiftOverflow;
's-overflow-y'?: ShiftOverflow;
's-pointer'?: ShiftPointer;
's-select'?: ShiftSelect;
// Boolean attributes (presence-only)
's-block'?: ShiftBooleanAttr;
's-bordered'?: ShiftBooleanAttr;
's-btn-group'?: ShiftBooleanAttr;
's-card-body'?: ShiftBooleanAttr;
's-card-footer'?: ShiftBooleanAttr;
's-card-header'?: ShiftBooleanAttr;
's-card-media'?: ShiftBooleanAttr;
's-card-title'?: ShiftBooleanAttr;
's-card-subtitle'?: ShiftBooleanAttr;
's-card-icon'?: ShiftBooleanAttr;
's-card-grid'?: ShiftBooleanAttr;
's-card-stack'?: ShiftBooleanAttr;
's-checkbox'?: ShiftBooleanAttr;
's-collapse'?: ShiftBooleanAttr;
's-dot'?: ShiftBooleanAttr;
's-field'?: ShiftBooleanAttr;
's-field-label'?: ShiftBooleanAttr;
's-field-hint'?: ShiftBooleanAttr;
's-field-error'?: ShiftBooleanAttr;
's-hidden'?: ShiftBooleanAttr;
's-horizontal'?: ShiftBooleanAttr;
's-icon'?: ShiftBooleanAttr;
's-input-group'?: ShiftBooleanAttr;
's-input-addon'?: ShiftBooleanAttr;
's-interactive'?: ShiftBooleanAttr;
's-invisible'?: ShiftBooleanAttr;
's-isolate'?: ShiftBooleanAttr;
's-link'?: ShiftBooleanAttr;
's-loading'?: ShiftBooleanAttr;
's-modal-body'?: ShiftBooleanAttr;
's-modal-close'?: ShiftBooleanAttr;
's-modal-footer'?: ShiftBooleanAttr;
's-modal-header'?: ShiftBooleanAttr;
's-not-sr-only'?: ShiftBooleanAttr;
's-pill'?: ShiftBooleanAttr;
's-radio'?: ShiftBooleanAttr;
's-skip-link-group'?: ShiftBooleanAttr;
's-sr-only'?: ShiftBooleanAttr;
's-toggle'?: ShiftBooleanAttr;
's-truncate'?: ShiftBooleanAttr;
's-visible'?: ShiftBooleanAttr;
}
/**
* Shift CSS - Type Definitions
*
* Export all type definitions for use in TypeScript projects.
*
* For framework-specific types, import directly:
* - React: "@shift-css/core/types/react"
* - Vue: "@shift-css/core/types/vue"
*/
export type {
// Component variants
ShiftButtonVariant,
ShiftBadgeVariant,
ShiftSurfaceVariant,
ShiftModalPosition,
ShiftTooltipPosition,
ShiftProseVariant,
ShiftInputVariant,
// Sizes
ShiftSize,
ShiftSizeExtended,
// Layout
ShiftFlexVariant,
ShiftGridColumns,
ShiftGridRows,
ShiftColSpan,
ShiftRowSpan,
ShiftGap,
ShiftContainer,
ShiftJustify,
ShiftItems,
ShiftContent,
ShiftPosition,
ShiftInset,
ShiftDisplay,
// Visibility
ShiftBreakpoint,
ShiftOverflow,
ShiftPointer,
ShiftSelect,
// Complete map
ShiftAttributes,
} from './attributes';
/**
* Shift CSS - React Type Definitions
*
* Module augmentation for React JSX to support Shift CSS attributes.
*
* Usage:
* Add to your tsconfig.json:
* {
* "compilerOptions": {
* "types": ["@shift-css/core/types/react"]
* }
* }
*
* Or add a reference in a .d.ts file:
* /// <reference types="@shift-css/core/types/react" />
*/
import type { ShiftAttributes } from './attributes';
declare module 'react' {
// biome-ignore lint/correctness/noUnusedVariables: T must match React's HTMLAttributes<T> signature
interface HTMLAttributes<T> extends ShiftAttributes {}
}
/**
* Shift CSS - Vue Type Definitions
*
* Module augmentation for Vue 3 templates to support Shift CSS attributes.
* Works with Volar (Vue Language Tools) for template type checking.
*
* Usage:
* Add to your tsconfig.json:
* {
* "compilerOptions": {
* "types": ["@shift-css/core/types/vue"]
* }
* }
*
* Or add a reference in a .d.ts file:
* /// <reference types="@shift-css/core/types/vue" />
*/
import type { ShiftAttributes } from './attributes';
// Augment Vue's global component props
declare module 'vue' {
interface ComponentCustomProps extends ShiftAttributes {}
}
// Augment @vue/runtime-dom for template type checking
declare module '@vue/runtime-dom' {
interface HTMLAttributes extends ShiftAttributes {}
}
+39
-41

@@ -32,7 +32,16 @@ :where([s-btn]) {

&:hover:not(:disabled) {
--_btn-bg: var(--s-interactive-primary-hover);
background-color: var(--s-interactive-primary-hover);
@supports (color: oklch(from red l c h)) and (color: light-dark(red, blue)) {
background-color: light-dark(oklch(from var(--_btn-bg) calc(l * .92) c h), oklch(from var(--_btn-bg) min(calc(l * 1.1), .95) c h));
}
}
&:active:not(:disabled) {
--_btn-bg: var(--s-interactive-primary-active);
background-color: var(--s-interactive-primary-active);
@supports (color: oklch(from red l c h)) and (color: light-dark(red, blue)) {
background-color: light-dark(oklch(from var(--_btn-bg) calc(l * .85) c h), oklch(from var(--_btn-bg) min(calc(l * 1.2), .98) c h));
}
transform: scale(.98);

@@ -56,10 +65,2 @@ }

--_btn-text: var(--s-text-inverse);
&:hover:not(:disabled) {
--_btn-bg: var(--s-interactive-primary-hover);
}
&:active:not(:disabled) {
--_btn-bg: var(--s-interactive-primary-active);
}
}

@@ -72,6 +73,2 @@

color: var(--_btn-text);
&:hover:not(:disabled) {
--_btn-bg: var(--s-surface-sunken);
}
}

@@ -111,4 +108,4 @@

--_btn-bg: var(--s-interactive-primary);
--_btn-text: var(--s-text-inverse);
color: var(--_btn-text);
background-color: var(--s-interactive-primary);
color: var(--s-text-inverse);
}

@@ -119,10 +116,2 @@ }

--_btn-bg: var(--s-state-danger);
&:hover:not(:disabled) {
--_btn-bg: var(--s-danger-800);
}
&:active:not(:disabled) {
--_btn-bg: var(--s-danger-900);
}
}

@@ -132,10 +121,2 @@

--_btn-bg: var(--s-state-success);
&:hover:not(:disabled) {
--_btn-bg: var(--s-success-800);
}
&:active:not(:disabled) {
--_btn-bg: var(--s-success-900);
}
}

@@ -145,10 +126,2 @@

--_btn-bg: var(--s-state-warning);
&:hover:not(:disabled) {
--_btn-bg: var(--s-warning-800);
}
&:active:not(:disabled) {
--_btn-bg: var(--s-warning-900);
}
}

@@ -181,3 +154,3 @@

[s-btn][s-loading] {
color: #0000;
color: var(--_btn-bg);
pointer-events: none;

@@ -225,1 +198,26 @@ position: relative;

}
@supports (container-type: inline-size) {
@container surface style(--_surface-depth: 1) {
:where([s-btn="secondary"]) {
--_btn-border: var(--s-border-strong);
}
}
@container surface style(--_surface-depth: 2) {
:where([s-btn="secondary"]) {
--_btn-border: var(--s-border-strong);
--_btn-bg: var(--s-surface-base);
}
:where([s-btn="ghost"]) {
--_btn-border: var(--s-border-muted);
}
}
@container surface style(--_surface-depth: -1) {
:where([s-btn="secondary"]) {
--_btn-bg: var(--s-surface-base);
}
}
}

@@ -67,3 +67,3 @@ :where([s-card]) {

--_card-shadow: var(--s-shadow-lg);
--_card-border: transparent;
--_card-border: oklch(0% 0 0 / 0);
}

@@ -73,3 +73,3 @@

--_card-shadow: var(--s-shadow-xl);
--_card-border: transparent;
--_card-border: oklch(0% 0 0 / 0);
}

@@ -85,3 +85,3 @@

cursor: pointer;
transition: transform var(--s-duration-200) var(--s-ease-out), box-shadow var(--s-duration-200) var(--s-ease-out);
transition: transform var(--s-duration-200) var(--s-ease-out), box-shadow var(--s-duration-200) var(--s-ease-out), border-color var(--s-duration-200) var(--s-ease-out);

@@ -91,2 +91,6 @@ &:hover {

transform: translateY(-4px);
@supports (color: oklch(from red l c h)) {
border-color: oklch(from var(--_card-border) max(calc(l - .1), .05) c h);
}
}

@@ -165,1 +169,22 @@

}
@supports (container-type: inline-size) {
@container surface style(--_surface-depth: 1) {
:where([s-card]) {
--_card-shadow: var(--s-shadow-sm);
}
}
@container surface style(--_surface-depth: 2) {
:where([s-card]) {
--_card-shadow: none;
--_card-border: var(--s-border-default);
}
}
@container surface style(--_surface-depth: -1) {
:where([s-card]) {
--_card-shadow: var(--s-shadow-md);
}
}
}

@@ -31,2 +31,6 @@ :where([s-input]) {

outline-offset: 2px;
@supports (color: oklch(from red l c h)) {
outline-color: oklch(from var(--s-interactive-primary) l c h / .3);
}
}

@@ -233,1 +237,36 @@

}
@supports (container-type: inline-size) {
@container surface style(--_surface-depth: 1) {
:where([s-input]) {
--_input-bg: var(--s-surface-sunken);
}
:where([s-checkbox]) input, :where([s-radio]) input {
background-color: var(--s-surface-sunken);
}
}
@container surface style(--_surface-depth: 2) {
:where([s-input]) {
--_input-bg: var(--s-surface-sunken);
--_input-border: var(--s-border-strong);
}
:where([s-checkbox]) input, :where([s-radio]) input {
background-color: var(--s-surface-sunken);
border-color: var(--s-border-strong);
}
}
@container surface style(--_surface-depth: -1) {
:where([s-input]) {
--_input-bg: var(--s-surface-raised);
--_input-border: var(--s-border-muted);
}
:where([s-checkbox]) input, :where([s-radio]) input {
background-color: var(--s-surface-raised);
}
}
}

@@ -55,2 +55,6 @@ dialog[s-modal]:not([open]) {

background: oklch(0% 0 0 / .5);
@supports (color: oklch(from red l c h)) {
background: oklch(from var(--s-primary-500) .1 .02 h / .5);
}
}

@@ -95,11 +99,27 @@

dialog[s-modal][s-position="left"] {
margin-left: var(--s-space-8);
border-radius: 0 var(--_modal-radius) var(--_modal-radius) 0;
margin-left: 0;
margin-right: auto;
}
@media (width >= 640px) {
dialog[s-modal][s-position="left"] {
margin-left: var(--s-space-8);
border-radius: var(--_modal-radius);
}
}
dialog[s-modal][s-position="right"] {
border-radius: var(--_modal-radius) 0 0 var(--_modal-radius);
margin-left: auto;
margin-right: var(--s-space-8);
margin-right: 0;
}
@media (width >= 640px) {
dialog[s-modal][s-position="right"] {
margin-right: var(--s-space-8);
border-radius: var(--_modal-radius);
}
}
:where([s-modal-header]) {

@@ -106,0 +126,0 @@ justify-content: space-between;

@@ -5,2 +5,3 @@ :where([s-surface]) {

--_surface-radius: var(--s-radius-lg);
--_surface-depth: 0;
background-color: var(--_surface-bg);

@@ -10,3 +11,3 @@ padding: var(--_surface-padding);

color: var(--s-text-primary);
container-type: inline-size;
container: surface / inline-size;

@@ -24,2 +25,3 @@ @supports (color: oklch(from red l c h)) {

--_surface-bg: var(--s-surface-base);
--_surface-depth: 0;
}

@@ -29,2 +31,3 @@

--_surface-bg: var(--s-surface-sunken);
--_surface-depth: -1;
box-shadow: var(--s-shadow-inner);

@@ -35,2 +38,3 @@ }

--_surface-bg: var(--s-surface-raised);
--_surface-depth: 1;
box-shadow: var(--s-shadow-md);

@@ -41,2 +45,3 @@ }

--_surface-bg: var(--s-surface-raised);
--_surface-depth: 2;
box-shadow: var(--s-shadow-xl);

@@ -43,0 +48,0 @@ }

{
"name": "@shift-css/core",
"version": "0.5.0",
"version": "0.6.0",
"description": "Zero-runtime, OKLCH-native CSS framework with cascade layers and native light-dark() theming",
"type": "module",
"main": "./dist/shift.css",
"types": "./types/index.d.ts",
"exports": {

@@ -12,2 +13,3 @@ ".": "./dist/shift.css",

"./tokens": "./dist/tokens.css",
"./components/badge": "./dist/components/badge.css",
"./components/button": "./dist/components/button.css",

@@ -17,3 +19,6 @@ "./components/card": "./dist/components/card.css",

"./components/modal": "./dist/components/modal.css",
"./components/prose": "./dist/components/prose.css",
"./components/skip-link": "./dist/components/skip-link.css",
"./components/surface": "./dist/components/surface.css",
"./components/tooltip": "./dist/components/tooltip.css",
"./utils/layout": "./dist/utils/layout.css",

@@ -24,6 +29,11 @@ "./utils/spacing": "./dist/utils/spacing.css",

"./utils/visibility": "./dist/utils/visibility.css",
"./types": "./types/index.d.ts",
"./types/react": "./types/react.d.ts",
"./types/vue": "./types/vue.d.ts",
"./types/attributes": "./types/attributes.d.ts",
"./package.json": "./package.json"
},
"files": [
"dist"
"dist",
"types"
],

@@ -30,0 +40,0 @@ "scripts": {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display