### Local Browser Smoke Test Setup
Source: https://github.com/jacethings/lisse/blob/main/docs/testing.md
Commands to set up and run local browser smoke tests, including installing necessary browser binaries and executing the tests.
```bash
cd tests/browser-smoke
pnpm exec playwright install chromium webkit firefox
pnpm test
```
--------------------------------
### Install @lisse/core
Source: https://github.com/jacethings/lisse/blob/main/packages/core/README.md
Install the core package using npm.
```sh
npm install @lisse/core
```
--------------------------------
### Install @lisse/svelte
Source: https://github.com/jacethings/lisse/blob/main/packages/svelte/README.md
Install the package using npm. Ensure you have Svelte version 3.0.0 or higher installed as a peer dependency.
```sh
npm install @lisse/svelte
```
--------------------------------
### Install @lisse/vue
Source: https://github.com/jacethings/lisse/blob/main/packages/vue/README.md
Install the package using npm. Ensure you have Vue version 3.3.0 or higher as a peer dependency.
```sh
npm install @lisse/vue
```
--------------------------------
### Install Lisse Core for Vanilla JS
Source: https://github.com/jacethings/lisse/wiki/Getting-Started
Install the core package for vanilla JavaScript or direct access to utilities. Use npm, pnpm, or yarn.
```sh
npm install @lisse/core
# or
pnpm add @lisse/core
# or
yarn add @lisse/core
```
--------------------------------
### Install Dependencies
Source: https://github.com/jacethings/lisse/blob/main/CONTRIBUTING.md
Installs project dependencies using pnpm. Ensure Node.js version 18 or higher and pnpm are installed before running.
```sh
pnpm install
```
--------------------------------
### Runtime Harness Example
Source: https://github.com/jacethings/lisse/blob/main/docs/testing.md
Example of using the runtime harness for deterministic testing of resize and requestAnimationFrame batching. Ensures proper timing without asynchronous waits.
```typescript
import { installHarness, uninstallHarness } from "../../core/__tests__/harness/runtime-harness.ts";
beforeEach(() => { h_ = installHarness(); });
afterEach(() => { uninstallHarness(); });
it("batches resize entries", () => {
// ...mount, stub layout dimensions...
h_.deliverResize(el, 200, 100);
h_.deliverResize(el, 250, 120); // dedupes into the same rAF
expect(h_.pendingRafCount()).toBe(1);
h_.flushRaf(); // synchronously runs the rAF callback
expect(el.style.clipPath).not.toBe("");
});
```
--------------------------------
### Install Lisse for React
Source: https://github.com/jacethings/lisse/wiki/Getting-Started
Install the React package using npm, pnpm, or yarn. Requires React 18 or later.
```sh
npm install @lisse/react
# or
pnpm add @lisse/react
# or
yarn add @lisse/react
```
--------------------------------
### Install Lisse for Vue
Source: https://github.com/jacethings/lisse/wiki/Getting-Started
Install the Vue package using npm, pnpm, or yarn. Requires Vue 3.3 or later.
```sh
npm install @lisse/vue
# or
pnpm add @lisse/vue
# or
yarn add @lisse/vue
```
--------------------------------
### Install Lisse for Svelte
Source: https://github.com/jacethings/lisse/wiki/Getting-Started
Install the Svelte package using npm, pnpm, or yarn. Requires Svelte 3 or later.
```sh
npm install @lisse/svelte
# or
pnpm add @lisse/svelte
# or
yarn add @lisse/svelte
```
--------------------------------
### Install Lisse React Package
Source: https://github.com/jacethings/lisse/blob/main/README.md
Install the @lisse/react package using npm. This package provides React hooks and components for using Lisse primitives.
```sh
npm install @lisse/react
```
--------------------------------
### Vanilla JS Dialog with Smooth Corners
Source: https://github.com/jacethings/lisse/wiki/Recipes
This example shows how to create a dialog with smooth corners using the core Lisse library. It utilizes `generateClipPath` and `ResizeObserver` for dynamic adjustments.
```html
Confirm action
Are you sure you want to continue?
```
--------------------------------
### CSS border-radius Examples
Source: https://github.com/jacethings/lisse/wiki/Corner-Shapes-Comparison
Demonstrates various ways to use the CSS border-radius property for different corner shapes, including circular, elliptical, and percentage-based radii.
```css
/* Circular corner */
.a { border-radius: 16px; }
```
```css
/* Elliptical: X radius 32px, Y radius 16px */
.b { border-radius: 32px / 16px; }
```
```css
/* Four corners, clockwise from top-left */
.c { border-radius: 8px 16px 24px 32px; }
```
```css
/* Pill: long axis collapses to a stadium shape */
.d { border-radius: 9999px; }
```
```css
/* Percentage: scales with the box. 50%/50% = ellipse */
.e { border-radius: 50% / 50%; }
```
--------------------------------
### Vanilla JS with Smooth Corners using Core
Source: https://github.com/jacethings/lisse/wiki/Recipes
Implement smooth corners directly in vanilla JavaScript using the '@lisse/core' package. This example applies smooth corners to a div and uses ResizeObserver to update them on element resize.
```html
Delete file?
This action cannot be undone.
```
--------------------------------
### Per-Corner Radii (corner-smoothing)
Source: https://github.com/jacethings/lisse/wiki/Migrating-from-Corner-Smoothing
Example of applying different corner radii to specific corners using corner-smoothing.
```tsx
// corner-smoothing
Asymmetric
```
--------------------------------
### Basic Vue SmoothCorners Usage
Source: https://github.com/jacethings/lisse/blob/main/packages/vue/README.md
A simple example demonstrating the basic usage of the SmoothCorners component with rounded corners.
```vue
Card Title
Card content goes here.
```
--------------------------------
### Plain Card with Solid Border (corner-smoothing)
Source: https://github.com/jacethings/lisse/wiki/Migrating-from-Corner-Smoothing
Example of creating a plain card with a solid border using the corner-smoothing library.
```tsx
// corner-smoothing
import { Squircle } from "corner-smoothing";
Hello, squircle
```
--------------------------------
### Vanilla JS Button with Smooth Corners
Source: https://github.com/jacethings/lisse/wiki/Recipes
This snippet demonstrates how to apply smooth, clipped corners to a native HTML button using @lisse/core. It requires manual setup for resizing.
```html
```
--------------------------------
### CSS Corner Shape Syntax Examples
Source: https://github.com/jacethings/lisse/wiki/Corner-Shapes-Comparison
Demonstrates various ways to apply the `corner-shape` property in CSS, including named shapes and the `superellipse()` function. Ensure `border-radius` is set for `corner-shape` to have an effect.
```css
.card {
border-radius: 32px;
corner-shape: squircle;
}
```
```css
/* 1-4 value form, same corner order as border-radius */
.mixed { corner-shape: squircle bevel scoop round; }
```
```css
/* Longhands for one corner */
.one { corner-top-left-shape: squircle; }
```
```css
/* The underlying function */
.tune { corner-shape: superellipse(1.4); }
```
--------------------------------
### Quintic Bézier Corner Setup
Source: https://github.com/jacethings/lisse/blob/main/docs/curves.md
Defines the control points for a single quintic Bézier curve to form a G2 continuous corner. Control points B0 and B5 are endpoints, B1 and B4 enforce G1 continuity, and B2 and B3 enforce G2 continuity (zero curvature at endpoints).
```mathematica
B0 = (−p, 0)
B1 = (−p + a, 0)
B2 = (−p · s, 0)
B3 = (0, p · s)
B4 = (0, p − a)
B5 = (0, p)
```
--------------------------------
### Run Benchmarks
Source: https://github.com/jacethings/lisse/wiki/Performance
Execute the performance benchmark suite from the repository root using pnpm.
```bash
pnpm bench
```
--------------------------------
### Run Benchmarks
Source: https://github.com/jacethings/lisse/blob/main/benchmarks/README.md
Execute the benchmark suite from the repository root or the benchmarks directory.
```sh
pnpm bench
```
```sh
pnpm --filter @lisse/benchmarks bench
```
--------------------------------
### Run Benchmarks
Source: https://github.com/jacethings/lisse/blob/main/docs/performance.md
Execute the full performance benchmark suite or a CI-optimized core-only suite.
```sh
pnpm bench
```
```sh
pnpm bench:ci
```
--------------------------------
### Preview Package Contents
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Use `npm pack --dry-run` within each package directory to preview the exact contents that will be included in the tarball before publishing. Verify that only expected files like LICENSE, README.md, dist/*, and package.json are present.
```bash
cd packages/core && npm pack --dry-run
cd ../react && npm pack --dry-run
# etc.
```
--------------------------------
### Vanilla One-Off Render (Lisse)
Source: https://github.com/jacethings/lisse/wiki/Migrating-from-Corner-Smoothing
Shows how to achieve a one-off clip-path render with Lisse's generateClipPath function.
```ts
// Lisse
import { generateClipPath } from "@lisse/core";
const rect = element.getBoundingClientRect();
element.style.clipPath = generateClipPath(rect.width, rect.height, {
radius: 24,
smoothing: 0.6,
});
```
--------------------------------
### Middle Border Example
Source: https://github.com/jacethings/lisse/wiki/Border-Effects
Use middleBorder for classic centered-on-path stroke behavior or for the most efficient rendering, as it requires no clip or mask overhead.
```tsx
Content
```
--------------------------------
### Outer Border Example
Source: https://github.com/jacethings/lisse/wiki/Border-Effects
Use outerBorder when you want a border that sits entirely outside the element, similar to an outline, leaving the content area unaffected.
```tsx
Content
```
--------------------------------
### React: Using SmoothCorners with autoEffects disabled
Source: https://github.com/jacethings/lisse/wiki/FAQ
Example of configuring SmoothCorners in React with `autoEffects` set to false, allowing for custom CSS border animations.
```tsx
```
--------------------------------
### Per-Corner Configuration Options
Source: https://github.com/jacethings/lisse/blob/main/docs/configuration.md
Demonstrates how to configure individual corners with specific radius, smoothing, and preservation settings. This allows for fine-grained control over the shape of the corners.
```typescript
const options = {
topLeft: { radius: 40, smoothing: 0.8 },
topRight: 20,
bottomRight: { radius: 30, smoothing: 0.4, preserveSmoothing: false },
bottomLeft: 0,
};
```
--------------------------------
### Vue: useSmoothCorners Composable (with Effects)
Source: https://github.com/jacethings/lisse/wiki/Which-API-Should-I-Use
Configure effects with the `useSmoothCorners` composable in Vue by providing a wrapper ref and effects configuration. This setup is fully reactive.
```vue
Content
```
--------------------------------
### Linear Gradient Border Example
Source: https://github.com/jacethings/lisse/blob/main/docs/effects.md
Applies a linear gradient to the inner border of a SmoothCorners component. Requires specifying the gradient type, angle, and color stops.
```tsx
Gradient border
```
--------------------------------
### Pre-publish Sanity Checks
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Before merging the release PR, run these commands locally to ensure tests pass, type checking is clean, and all packages build successfully. This saves a round-trip with CI.
```bash
pnpm test # must be all green
pnpm typecheck # must be clean
pnpm build # must succeed for all 4 packages
```
--------------------------------
### Commit Changes and Push
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
After generating the changeset file, add all changes to Git, commit them with a descriptive message, and push to the remote repository.
```bash
git add .
git commit -m "feat: describe the change"
git push
```
--------------------------------
### Inner Border Example
Source: https://github.com/jacethings/lisse/wiki/Border-Effects
Use innerBorder when you want a border fully contained within the squircle shape, without increasing the element's visual footprint.
```tsx
Content
```
--------------------------------
### Run Snapshot Tests
Source: https://github.com/jacethings/lisse/blob/main/docs/testing.md
Use these commands to verify or regenerate snapshot tests. Snapshot tests ensure that the output has not changed unintentionally.
```bash
pnpm test -- snapshots # verify
```
```bash
pnpm test -- snapshots -u # regenerate (intentional change)
```
--------------------------------
### Reactive Radius with useSmoothCorners
Source: https://github.com/jacethings/lisse/blob/main/packages/vue/README.md
Update the smooth corner radius reactively using a `ref`. This example binds the radius to a range input, allowing dynamic adjustments to the element's shape.
```vue
Radius: {{ radius }}
```
--------------------------------
### Basic Drop Shadow Configuration
Source: https://github.com/jacethings/lisse/wiki/Shadow-Effects
Use this configuration for a simple drop shadow with no spread, a moderate blur, and a semi-transparent black color.
```typescript
effects: {
shadow: {
offsetX: 0,
offsetY: 4,
blur: 12,
spread: 0,
color: "#000000",
opacity: 0.25,
},
}
```
--------------------------------
### Record Code Changes with Changesets
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Use this command to record code changes for a new release. Select packages and choose the appropriate version bump (patch, minor, or major), then write a summary of the changes.
```bash
pnpm changeset
# select packages → pick patch / minor / major → write a 1-line summary
```
--------------------------------
### Explicit Effects Override Auto Effects
Source: https://github.com/jacethings/lisse/blob/main/packages/svelte/README.md
Explicitly defined `effects` in the `smoothCorners` action configuration take precedence over auto-extracted values. For example, an explicit `innerBorder` will override a CSS border.
```svelte
Content
```
--------------------------------
### Vanilla One-Off Render (corner-smoothing)
Source: https://github.com/jacethings/lisse/wiki/Migrating-from-Corner-Smoothing
Demonstrates a one-off render of a squircle shape using corner-smoothing's render function.
```ts
// corner-smoothing
import { renderSquircle } from "corner-smoothing";
renderSquircle(element, { cornerRadius: 24, cornerSmoothing: 0.6 });
```
--------------------------------
### Vanilla JS Card with Smooth Corners
Source: https://github.com/jacethings/lisse/wiki/Recipes
This snippet shows how to apply smooth, clipped corners to a native HTML article element using @lisse/core. Manual resize observation is included.
```html
Ada Lovelace
Mathematician
```
--------------------------------
### Radial Gradient Border Example
Source: https://github.com/jacethings/lisse/blob/main/docs/effects.md
Applies a radial gradient to the outer border of a SmoothCorners component. Allows customization of gradient center, radius, and color stops. Supports dashed border styles.
```tsx
Radial gradient dashed border
```
--------------------------------
### Complex Tailwind Styling with SmoothCorners
Source: https://github.com/jacethings/lisse/wiki/Tailwind-Integration
An example of applying multiple Tailwind classes, including dark mode, padding, and shadow, to a SmoothCorners component in React. This snippet also demonstrates advanced corner smoothing.
```tsx
Settings
Manage your account preferences.
```
--------------------------------
### React: Implementing Gradient Borders with SmoothCorners
Source: https://github.com/jacethings/lisse/wiki/FAQ
Demonstrates how to apply gradient borders to SmoothCorners in React by passing a `GradientConfig` object to the `color` property of `innerBorder`. This is necessary because CSS `border-image` cannot be reliably parsed.
```tsx
```
--------------------------------
### Avoid Self-Upgrading npm on CI
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Manually upgrading npm on a CI runner (e.g., `npm install -g npm@latest`) can fail due to a self-modification race condition. Use a Node version with a sufficiently recent bundled npm instead.
```yaml
- run: npm install -g npm@latest
```
```bash
npm error code MODULE_NOT_FOUND
npm error Cannot find module 'promise-retry'
npm error Require stack:
npm error - .../node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
```
```bash
--ignore-scripts
```
```bash
npm install -g npm@latest --force
```
--------------------------------
### Running Lisse Tests
Source: https://github.com/jacethings/lisse/blob/main/docs/testing.md
Commands to execute various test suites for Lisse projects. Use specific project flags to target individual packages.
```bash
pnpm test # all projects (core / react / vue / svelte)
pnpm test --project=core # one project
pnpm coverage # with coverage report (writes coverage/lcov.info)
pnpm bench # benchmarks via vitest + CodSpeed plugin
pnpm size # bundle-size check (rebuilds dist/ first)
pnpm knip # dead-code check
pnpm consumer-smoke # pack tarballs, lint, install in fixture, import
```
--------------------------------
### useSmoothCorners(target, options, effects?)
Source: https://github.com/jacethings/lisse/blob/main/docs/api.md
Vue composable for applying smooth corners.
```APIDOC
## useSmoothCorners(target, options, effects?)
### Description
Vue composable for applying smooth corners.
### Parameters
#### Path Parameters
- **target** (HTMLElement | Ref) - Required - The target element.
- **options** (object) - Required - Configuration options.
- **effects** (object) - Optional - Effects to apply.
```
--------------------------------
### CSS for Pending and Ready States
Source: https://github.com/jacethings/lisse/wiki/Styling-Hooks
Use these CSS rules to control the visibility of Lisse-managed elements during their initialization and after they are ready. The `pending` state hides the element, preventing flicker, while the `ready` state makes it visible with a transition.
```css
[data-slot="smooth-corners"][data-state="pending"] { opacity: 0; }
[data-slot="smooth-corners"][data-state="ready"] { opacity: 1; transition: opacity 100ms; }
```
--------------------------------
### Handle OTP Prompt in Non-Interactive Shells
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Avoid running `pnpm release` from non-interactive shells like CI agents. Use a regular terminal or trusted publishing via GitHub Actions to bypass OTP prompts.
```bash
pnpm release
```
--------------------------------
### Server-side path generation in SvelteKit
Source: https://github.com/jacethings/lisse/wiki/SSR-Support
Generate SVG clip-paths on the server within a SvelteKit load function. The data is then passed to the page template for rendering.
```ts
// src/routes/+page.server.ts
import { generateClipPath } from "@lisse/core/path";
export function load() {
return {
clipPath: generateClipPath(400, 250, { radius: 32, smoothing: 0.6 }),
};
}
```
--------------------------------
### Piecewise Bézier with Circular Arc Construction
Source: https://github.com/jacethings/lisse/wiki/Corner-Shapes-Comparison
Describes a corner construction using a circular arc at the apex, with two cubic Bézier 'shoulders' for G2 continuity. This is the method used by Apple's CALayer.cornerCurve, Figma, and Lisse.
```mathematics
A second construction keeps a small circular arc at the apex of the corner and brackets it with two cubic Bézier "shoulders" that splice the arc onto the straight edges with `G2` (curvature) continuity. The control points sit so curvature is `0` at the join with the straight edge and matches `1/r` at the join with the arc. A single parameter (Figma calls it `smoothing`, denoted `ξ`) controls how far the shoulders extend along the edge before the arc begins.
```
--------------------------------
### Combining Multiple Border Positions
Source: https://github.com/jacethings/lisse/wiki/Border-Effects
Demonstrates how to apply inner, middle, and outer borders simultaneously to create complex border effects.
```tsx
Content
```
--------------------------------
### useSmoothCorners(ref, options, effects?)
Source: https://github.com/jacethings/lisse/blob/main/docs/api.md
React hook for applying smooth corners.
```APIDOC
## useSmoothCorners(ref, options, effects?)
### Description
React hook for applying smooth corners.
### Parameters
#### Path Parameters
- **ref** (React.RefObject) - Required - The ref to the element.
- **options** (object) - Required - Configuration options.
- **effects** (object) - Optional - Effects to apply.
```
--------------------------------
### Import Path Generation for SSR
Source: https://github.com/jacethings/lisse/blob/main/packages/vue/README.md
When working with SSR frameworks like Nuxt, import `generatePath` from `@lisse/core/path` to safely generate paths on the server.
```typescript
import { generatePath } from "@lisse/core/path";
```
--------------------------------
### createDropShadow(anchor)
Source: https://github.com/jacethings/lisse/blob/main/docs/api.md
Creates a path-based drop shadow.
```APIDOC
## createDropShadow(anchor)
### Description
Create a path-based drop shadow.
### Parameters
#### Path Parameters
- **anchor** (object) - Required - The anchor element or configuration for the drop shadow.
```
--------------------------------
### observeResize(element, callback)
Source: https://github.com/jacethings/lisse/wiki/API-Reference
Observes changes in an element's size using a shared `ResizeObserver`. Callbacks are batched and executed within `requestAnimationFrame` for efficiency.
```APIDOC
## observeResize(element, callback)
### Description
Observe element size changes via a shared singleton `ResizeObserver`. Callbacks are batched with `requestAnimationFrame`.
### Parameters
- **element** (HTMLElement) - The element to observe for size changes.
- **callback** (function) - The function to call when the element's size changes.
### Returns
- **function** - A function that can be called to unsubscribe from resize observations.
```
--------------------------------
### generateClipPath(width, height, options)
Source: https://github.com/jacethings/lisse/wiki/API-Reference
Returns a CSS `path()` value suitable for use with the `clip-path` CSS property. It generates the path string for clipping elements.
```APIDOC
## generateClipPath(width, height, options)
### Description
Returns a CSS `path()` value ready for `el.style.clipPath`.
### Parameters
- **width** (number) - The width of the rectangle.
- **height** (number) - The height of the rectangle.
- **options** (SmoothCornerOptions) - Options for corner rounding and smoothing.
### Returns
- **string** - CSS `path("...")` value
```
--------------------------------
### BorderConfig Interface
Source: https://github.com/jacethings/lisse/blob/main/packages/core/README.md
Configuration for a border, including width, color (which can be a gradient), opacity, and style.
```typescript
interface BorderConfig {
width: number;
color: string | GradientConfig;
opacity: number;
style?: BorderStyle;
dash?: number;
gap?: number;
lineCap?: "butt" | "round" | "square";
}
```
--------------------------------
### Import Core Constants
Source: https://github.com/jacethings/lisse/blob/main/packages/core/README.md
Imports default values for smoothing, preservation of smoothing, shadow properties, and the SVG namespace from the core library.
```typescript
import {
DEFAULT_SMOOTHING,
DEFAULT_PRESERVE_SMOOTHING,
DEFAULT_SHADOW,
SVG_NS
} from "@lisse/core";
```
--------------------------------
### Basic Inner Shadow Configuration
Source: https://github.com/jacethings/lisse/wiki/Shadow-Effects
Use this snippet to apply a standard inner shadow effect. Ensure the 'color' and 'opacity' properties are set appropriately for your design.
```typescript
effects: {
innerShadow: {
offsetX: 0,
offsetY: 2,
blur: 4,
spread: 0,
color: "#000000",
opacity: 0.2,
},
}
```
--------------------------------
### Migrating to View Transitions API for Route Changes
Source: https://github.com/jacethings/lisse/wiki/Animation-Performance
Replaces per-frame animations with browser-driven snapshots for smoother route transitions. Use as a fallback for older browsers.
```tsx
// Before: per-frame transform on every clipped card
...
// After: single snapshot, browser-driven transition
function navigate(nextRoute: string): void {
if (!document.startViewTransition) {
setRoute(nextRoute); // graceful fallback for older browsers
return;
}
document.startViewTransition(() => setRoute(nextRoute));
}
```
--------------------------------
### Vanilla JS: `generateClipPath` Function
Source: https://github.com/jacethings/lisse/wiki/Getting-Started
Generate a CSS clip-path string for an element using `generateClipPath` from the core package. Requires element dimensions and corner options.
```typescript
import { generateClipPath } from "@lisse/core";
const element = document.querySelector(".card") as HTMLElement;
const { width, height } = element.getBoundingClientRect();
element.style.clipPath = generateClipPath(width, height, {
radius: 24,
smoothing: 0.6,
});
```
--------------------------------
### Plain Card with Solid Border using Auto-Effects (Lisse)
Source: https://github.com/jacethings/lisse/wiki/Migrating-from-Corner-Smoothing
Demonstrates Lisse's auto-effects feature where a CSS border is lifted into SVG for rendering.
```tsx
Hello, squircle
```
--------------------------------
### Svelte: smoothCorners Action
Source: https://github.com/jacethings/lisse/wiki/Which-API-Should-I-Use
In Svelte, use the `smoothCorners` action for an idiomatic way to attach DOM behavior. This approach introduces no wrapper div or extra component overhead.
```svelte
Content
```
--------------------------------
### PerCornerConfig Interface
Source: https://github.com/jacethings/lisse/blob/main/packages/core/README.md
Allows configuration of corner smoothing individually for each corner.
```typescript
interface PerCornerConfig {
topLeft?: CornerConfig | number;
topRight?: CornerConfig | number;
bottomRight?: CornerConfig | number;
bottomLeft?: CornerConfig | number;
}
```
--------------------------------
### Check Package Availability on npm Registry
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
After publishing a new scoped package, wait 5-15 minutes for registry propagation. The web frontend often shows the package before the API does.
```bash
npm view @lisse/core
```
```bash
https://registry.npmjs.org/@lisse/core
```
```bash
https://www.npmjs.com/package/@lisse/core
```
--------------------------------
### React with Mixed Corner Configurations
Source: https://github.com/jacethings/lisse/wiki/Smooth-Corners
Combine full corner configuration objects with number shorthands in React for precise control over individual corners, including custom smoothing and preserveSmoothing options.
```tsx
// React: top-left is a full squircle, others use defaults
Content
```
--------------------------------
### React with Per-Corner Radii Shorthand
Source: https://github.com/jacethings/lisse/wiki/Smooth-Corners
Configure different radii for each corner in React using the number shorthand. Default smoothing is applied.
```tsx
// React
Content
```
--------------------------------
### Using asChild with SmoothCorners and Tailwind
Source: https://github.com/jacethings/lisse/wiki/Tailwind-Integration
Shows how to use the `asChild` prop with SmoothCorners in React, allowing Tailwind classes applied to a child element (like a button) to take precedence and be merged onto the child.
```tsx
```
--------------------------------
### Ensure LICENSE File in Package Tarballs
Source: https://github.com/jacethings/lisse/blob/main/docs/publishing.md
Copy a LICENSE file into each package's directory to ensure it's included in the tarball. This is a standard monorepo practice and legally required for redistribution.
```bash
npm pack
```