lucent-ui 0.34.0 → 0.36.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/dist/{LucentProvider-BoiXYqA4.js → LucentProvider-F0EN_7TD.js} +292 -269
- package/dist/LucentProvider-LqNc0AxD.cjs +109 -0
- package/dist/devtools.cjs +3 -3
- package/dist/devtools.js +423 -405
- package/dist/index.cjs +34 -32
- package/dist/index.d.ts +16 -13
- package/dist/index.js +947 -922
- package/dist-cli/cli/entry.js +0 -0
- package/dist-cli/cli/index.js +0 -0
- package/dist-server/server/index.js +0 -0
- package/dist-server/src/components/atoms/CodeBlock/CodeBlock.manifest.js +14 -0
- package/dist-server/src/components/molecules/Card/Card.manifest.js +1 -1
- package/dist-server/src/components/molecules/PageLayout/PageLayout.manifest.js +6 -5
- package/package.json +13 -15
- package/dist/LucentProvider-we0nRXn-.cjs +0 -109
- package/dist-server/server/recipe-registry.js +0 -18
- package/dist-server/src/manifest/recipes/action-bar.recipe.js +0 -91
- package/dist-server/src/manifest/recipes/collapsible-card.recipe.js +0 -100
- package/dist-server/src/manifest/recipes/empty-state-card.recipe.js +0 -72
- package/dist-server/src/manifest/recipes/form-layout.recipe.js +0 -98
- package/dist-server/src/manifest/recipes/index.js +0 -8
- package/dist-server/src/manifest/recipes/profile-card.recipe.js +0 -101
- package/dist-server/src/manifest/recipes/search-filter-bar.recipe.js +0 -122
- package/dist-server/src/manifest/recipes/settings-panel.recipe.js +0 -167
- package/dist-server/src/manifest/recipes/stats-row.recipe.js +0 -106
- package/dist-server/src/manifest/validate.test.js +0 -28
package/dist-cli/cli/entry.js
CHANGED
|
File without changes
|
package/dist-cli/cli/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -39,6 +39,20 @@ export const COMPONENT_MANIFEST = {
|
|
|
39
39
|
description: '"code" renders a <pre><code> block with horizontal scroll. ' +
|
|
40
40
|
'"prompt" renders a single-line truncated span suited to AI prompts.',
|
|
41
41
|
},
|
|
42
|
+
{
|
|
43
|
+
name: 'minimal',
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
required: false,
|
|
46
|
+
default: 'false',
|
|
47
|
+
description: 'Hides the header bar and shows only a corner copy button overlay.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'wrap',
|
|
51
|
+
type: 'boolean',
|
|
52
|
+
required: false,
|
|
53
|
+
default: 'false',
|
|
54
|
+
description: 'When true, wraps long lines instead of scrolling horizontally.',
|
|
55
|
+
},
|
|
42
56
|
{
|
|
43
57
|
name: 'helperText',
|
|
44
58
|
type: 'string',
|
|
@@ -50,7 +50,7 @@ export const COMPONENT_MANIFEST = {
|
|
|
50
50
|
'- `combo` wrapper is transparent (header/footer blend with page); only the body is elevated with `surface`.\n' +
|
|
51
51
|
'- `ghost` and `outline` use `transparent` — they inherit from whatever they\'re placed on. ' +
|
|
52
52
|
'The border is the only visual differentiator for `outline`.\n' +
|
|
53
|
-
'- Never use `bgBase
|
|
53
|
+
'- Never use `navigation`, `bgBase`, or `bgSubtle` on a Card — those tokens are reserved for the page chrome and content area.\n' +
|
|
54
54
|
'- Content nested inside a Card that needs a tinted fill should use `color-mix(in srgb, var(--lucent-text-primary) 5%, transparent)` for accent-neutral insets.',
|
|
55
55
|
props: [
|
|
56
56
|
{
|
|
@@ -6,8 +6,8 @@ export const COMPONENT_MANIFEST = {
|
|
|
6
6
|
specVersion: '0.1',
|
|
7
7
|
description: 'Full-viewport shell layout with optional header, left sidebar, right panel, and footer slots arranged in a flex column/row structure.',
|
|
8
8
|
designIntent: 'PageLayout owns the outermost chrome of an application page. Chrome regions (header, sidebar, footer) ' +
|
|
9
|
-
'default to
|
|
10
|
-
'noticeable with tinted
|
|
9
|
+
'default to the navigation token so the main content card feels elevated against the chrome — especially ' +
|
|
10
|
+
'noticeable with tinted navigation values. The body row is a flex row containing ' +
|
|
11
11
|
'an optional left sidebar, a bordered main content card, and an optional right panel — all as structural ' +
|
|
12
12
|
'siblings so they share the same vertical space. The header and footer sit outside the body row as ' +
|
|
13
13
|
'flex children of the outer column, ensuring they span the full width. Sidebars collapse to zero width ' +
|
|
@@ -93,11 +93,12 @@ export const COMPONENT_MANIFEST = {
|
|
|
93
93
|
name: 'chromeBackground',
|
|
94
94
|
type: 'string',
|
|
95
95
|
required: false,
|
|
96
|
-
default: '"
|
|
96
|
+
default: '"navigation"',
|
|
97
97
|
description: 'Background token for chrome regions (header, sidebar, footer). ' +
|
|
98
|
-
'"
|
|
98
|
+
'"navigation" uses the dedicated chrome token (default); ' +
|
|
99
|
+
'"bgBase" uses the content area background; ' +
|
|
99
100
|
'"bgSubtle" uses a subtle shade of bgBase for chrome distinction; ' +
|
|
100
|
-
'"surface" matches the
|
|
101
|
+
'"surface" matches the component surface color; ' +
|
|
101
102
|
'"surfaceSecondary" uses the tinted fill token for a more visible chrome/stage separation.',
|
|
102
103
|
},
|
|
103
104
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lucent-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "An AI-first React component library with machine-readable manifests.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -30,18 +30,6 @@
|
|
|
30
30
|
"dist-server",
|
|
31
31
|
"dist-cli"
|
|
32
32
|
],
|
|
33
|
-
"scripts": {
|
|
34
|
-
"dev": "vite --config vite.dev.config.ts",
|
|
35
|
-
"build": "vite build",
|
|
36
|
-
"build:server": "tsc -p server/tsconfig.json",
|
|
37
|
-
"build:cli": "tsc -p cli/tsconfig.json && cp cli/template.manifest.json dist-cli/cli/template.manifest.json",
|
|
38
|
-
"test": "vitest run",
|
|
39
|
-
"test:watch": "vitest",
|
|
40
|
-
"prepublishOnly": "tsc --noEmit && pnpm build && pnpm build:server && pnpm build:cli",
|
|
41
|
-
"changeset": "changeset",
|
|
42
|
-
"version-packages": "changeset version",
|
|
43
|
-
"release": "pnpm prepublishOnly && changeset publish"
|
|
44
|
-
},
|
|
45
33
|
"keywords": [
|
|
46
34
|
"react",
|
|
47
35
|
"component-library",
|
|
@@ -56,7 +44,6 @@
|
|
|
56
44
|
},
|
|
57
45
|
"author": "Rozina Szogyenyi",
|
|
58
46
|
"license": "MIT",
|
|
59
|
-
"packageManager": "pnpm@10.30.3",
|
|
60
47
|
"peerDependencies": {
|
|
61
48
|
"react": "^18.0.0 || ^19.0.0",
|
|
62
49
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
@@ -78,5 +65,16 @@
|
|
|
78
65
|
"dependencies": {
|
|
79
66
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
80
67
|
"zod": "^4.3.6"
|
|
68
|
+
},
|
|
69
|
+
"scripts": {
|
|
70
|
+
"dev": "vite --config vite.dev.config.ts",
|
|
71
|
+
"build": "vite build",
|
|
72
|
+
"build:server": "tsc -p server/tsconfig.json",
|
|
73
|
+
"build:cli": "tsc -p cli/tsconfig.json && cp cli/template.manifest.json dist-cli/cli/template.manifest.json",
|
|
74
|
+
"test": "vitest run",
|
|
75
|
+
"test:watch": "vitest",
|
|
76
|
+
"changeset": "changeset",
|
|
77
|
+
"version-packages": "changeset version",
|
|
78
|
+
"release": "pnpm prepublishOnly && changeset publish"
|
|
81
79
|
}
|
|
82
|
-
}
|
|
80
|
+
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";const l=require("react/jsx-runtime"),b=require("react"),Rt=require("react-dom"),$t={primary:{background:"var(--lucent-accent-default)",color:"var(--lucent-accent-fg)",border:"1px solid transparent"},secondary:{background:"color-mix(in srgb, var(--lucent-accent-default) 16%, transparent)",color:"var(--lucent-text-primary)",border:"1px solid transparent"},outline:{background:"transparent",color:"var(--lucent-text-primary)",border:"1px solid color-mix(in srgb, var(--lucent-accent-default) 35%, var(--lucent-border-default))"},ghost:{background:"transparent",color:"var(--lucent-text-primary)",border:"1px solid transparent"},danger:{background:"var(--lucent-danger-default)",color:"#ffffff",border:"1px solid var(--lucent-danger-default)"},"danger-outline":{background:"transparent",color:"var(--lucent-danger-text)",border:"1px solid var(--lucent-danger-default)"},"danger-ghost":{background:"transparent",color:"var(--lucent-danger-text)",border:"1px solid transparent"}},Lt={"2xs":{height:"22px",padding:"0 var(--lucent-space-2)",fontSize:"var(--lucent-font-size-xs)",borderRadius:"var(--lucent-radius-md)"},xs:{height:"26px",padding:"0 var(--lucent-space-3)",fontSize:"var(--lucent-font-size-xs)"},sm:{height:"calc(var(--lucent-space-8) * 0.5 + 18px)",padding:"0 var(--lucent-space-4)",fontSize:"var(--lucent-font-size-sm)"},md:{height:"calc(var(--lucent-space-10) * 0.5 + 22px)",padding:"0 var(--lucent-space-5)",fontSize:"var(--lucent-font-size-md)"},lg:{height:"calc(var(--lucent-space-12) * 0.5 + 26px)",padding:"0 var(--lucent-space-6)",fontSize:"var(--lucent-font-size-lg)"}},ze=b.forwardRef(({variant:e="primary",size:t="md",loading:s=!1,fullWidth:a=!1,spread:n=!1,leftIcon:r,rightIcon:o,chevron:i=!1,disableHoverStyles:d=!1,bordered:u=!0,children:f,disabled:g,style:v,...p},S)=>{const M=g??s,k=!f&&!s&&(!!r||!!o);return l.jsxs("button",{ref:S,disabled:M,"aria-busy":s,style:{display:"inline-flex",alignItems:"center",justifyContent:n?"space-between":"center",gap:"var(--lucent-space-2)",fontFamily:"var(--lucent-font-family-base)",fontWeight:"var(--lucent-font-weight-medium)",lineHeight:1,letterSpacing:"0.01em",borderRadius:"var(--lucent-radius-lg)",cursor:M?"not-allowed":"pointer",width:a?"100%":void 0,transition:"background var(--lucent-duration-fast) var(--lucent-easing-default), border-color var(--lucent-duration-fast) var(--lucent-easing-default), box-shadow var(--lucent-duration-fast) var(--lucent-easing-default), transform 80ms var(--lucent-easing-default)",whiteSpace:"nowrap",boxSizing:"border-box",outline:"none",margin:0,...Lt[t],...k&&{padding:0,aspectRatio:"1"},...$t[e],...v,...M&&{background:"color-mix(in srgb, var(--lucent-text-primary) 6%, transparent)",color:"var(--lucent-text-disabled)",borderColor:"transparent"},...u===!1&&{border:"none"}},onMouseEnter:y=>{var x;!M&&!d&&Ct(y.currentTarget,e,u),(x=p.onMouseEnter)==null||x.call(p,y)},onMouseLeave:y=>{var x;!M&&!d&&Ft(y.currentTarget,e,u),(x=p.onMouseLeave)==null||x.call(p,y)},onMouseDown:y=>{var x;if(!M){const D=e==="danger"||e==="danger-outline"||e==="danger-ghost"?"color-mix(in srgb, var(--lucent-danger-default) 40%, transparent)":"color-mix(in srgb, var(--lucent-accent-default) 40%, transparent)";y.currentTarget.style.transform="translateY(1px)",y.currentTarget.style.boxShadow=`0 0 0 4px ${D}`,y.currentTarget.dataset.pressed="1"}(x=p.onMouseDown)==null||x.call(p,y)},onMouseUp:y=>{var x;y.currentTarget.style.transform="",y.currentTarget.style.boxShadow="",delete y.currentTarget.dataset.pressed,(x=p.onMouseUp)==null||x.call(p,y)},onFocus:y=>{var x;y.currentTarget.dataset.pressed||(y.currentTarget.style.boxShadow="0 0 0 3px var(--lucent-accent-subtle)"),(x=p.onFocus)==null||x.call(p,y)},onBlur:y=>{var x;y.currentTarget.style.boxShadow="",(x=p.onBlur)==null||x.call(p,y)},...p,children:[r,s?l.jsx(Et,{}):f,!s&&o,!s&&i&&l.jsx(Wt,{size:t})]})});ze.displayName="Button";const Pt={primary:"0 4px 14px -2px color-mix(in srgb, var(--lucent-accent-default) 25%, transparent)",secondary:"0 4px 14px -2px color-mix(in srgb, var(--lucent-accent-default) 20%, transparent)",outline:"0 4px 14px -2px color-mix(in srgb, var(--lucent-accent-default) 20%, transparent)",ghost:"0 4px 14px -2px color-mix(in srgb, var(--lucent-accent-default) 15%, transparent)",danger:"0 4px 14px -2px color-mix(in srgb, var(--lucent-danger-default) 25%, transparent)","danger-outline":"0 4px 14px -2px color-mix(in srgb, var(--lucent-danger-default) 20%, transparent)","danger-ghost":"0 4px 14px -2px color-mix(in srgb, var(--lucent-danger-default) 15%, transparent)"};function Ct(e,t,s){e.style.transform="translateY(-1px)",e.style.boxShadow=Pt[t],t==="primary"?e.style.background="var(--lucent-accent-hover)":t==="secondary"?e.style.background="color-mix(in srgb, var(--lucent-accent-default) 22%, transparent)":t==="outline"?e.style.background="color-mix(in srgb, var(--lucent-accent-default) 10%, transparent)":t==="ghost"?e.style.background="color-mix(in srgb, var(--lucent-accent-default) 8%, transparent)":t==="danger"?(e.style.background="var(--lucent-danger-hover)",s!==!1&&(e.style.borderColor="var(--lucent-danger-hover)")):t==="danger-outline"?(e.style.background="color-mix(in srgb, var(--lucent-danger-default) 10%, var(--lucent-surface))",s!==!1&&(e.style.borderColor="var(--lucent-danger-hover)")):t==="danger-ghost"&&(e.style.background="color-mix(in srgb, var(--lucent-danger-default) 8%, var(--lucent-surface))")}function Ft(e,t,s){e.style.transform="",e.style.boxShadow="",t==="primary"?e.style.background="var(--lucent-accent-default)":t==="secondary"?e.style.background="color-mix(in srgb, var(--lucent-accent-default) 16%, transparent)":t==="outline"||t==="ghost"?e.style.background="transparent":t==="danger"?(e.style.background="var(--lucent-danger-default)",s!==!1&&(e.style.borderColor="var(--lucent-danger-default)")):t==="danger-outline"?(e.style.background="transparent",s!==!1&&(e.style.borderColor="var(--lucent-danger-default)")):t==="danger-ghost"&&(e.style.background="transparent")}const Ht={"2xs":8,xs:10,sm:12,md:14,lg:16};function Wt({size:e}){const t=Ht[e];return l.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,style:{flexShrink:0,marginLeft:-2},children:l.jsx("polyline",{points:"6 9 12 15 18 9"})})}function Et(){return l.jsxs("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.5,strokeLinecap:"round","aria-hidden":!0,style:{animation:"lucent-spin 0.7s linear infinite",flexShrink:0},children:[l.jsx("style",{children:"@keyframes lucent-spin { to { transform: rotate(360deg); } }"}),l.jsx("path",{d:"M12 2a10 10 0 0 1 10 10"})]})}const Nt={sm:"calc(var(--lucent-space-8) * 0.5 + 16px)",md:"calc(var(--lucent-space-10) * 0.5 + 20px)",lg:"calc(var(--lucent-space-12) * 0.5 + 24px)"},Ge={sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-md)",lg:"var(--lucent-font-size-md)"},we={sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-sm)",lg:"var(--lucent-font-size-md)"},Q={sm:"var(--lucent-space-3)",md:"var(--lucent-space-4)",lg:"var(--lucent-space-4)"},Ve={sm:"calc(var(--lucent-space-3) + 14px + var(--lucent-space-2))",md:"calc(var(--lucent-space-4) + 18px + var(--lucent-space-2))",lg:"calc(var(--lucent-space-4) + 20px + var(--lucent-space-3))"},K=b.forwardRef(({size:e="md",label:t,helperText:s,errorText:a,leftElement:n,rightElement:r,prefix:o,suffix:i,id:d,style:u,...f},g)=>{const v=d??`lucent-input-${Math.random().toString(36).slice(2,7)}`,p=!!a,S=!!f.disabled,[M,k]=b.useState(!1),[y,x]=b.useState(!1),h=S?"transparent":p?"var(--lucent-danger-default)":M?"var(--lucent-accent-border)":y?"var(--lucent-border-strong)":"var(--lucent-border-default)",D=M?`0 0 0 3px ${p?"var(--lucent-danger-subtle)":"var(--lucent-accent-subtle)"}`:"none",$={display:"flex",alignItems:"center",color:S?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",fontSize:Ge[e],fontFamily:"var(--lucent-font-family-base)",whiteSpace:"nowrap",userSelect:"none",flexShrink:0},A={...$,paddingLeft:Q[e],paddingRight:"2px"},N={...$,paddingLeft:"2px",paddingRight:Q[e]};return l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--lucent-space-1)",width:"100%",...u},children:[t&&l.jsx("label",{htmlFor:v,style:{fontSize:we[e],fontWeight:"var(--lucent-font-weight-medium)",color:S?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",fontFamily:"var(--lucent-font-family-base)"},children:t}),l.jsxs("div",{style:{display:"flex",alignItems:"stretch",height:Nt[e],border:`1px solid ${h}`,borderRadius:"var(--lucent-radius-lg)",boxShadow:D,background:S?"color-mix(in srgb, var(--lucent-text-primary) 6%, transparent)":"var(--lucent-surface)",overflow:"hidden",cursor:S?"not-allowed":void 0,transition:["border-color var(--lucent-duration-fast) var(--lucent-easing-default)","box-shadow var(--lucent-duration-fast) var(--lucent-easing-default)"].join(", ")},onMouseEnter:()=>{S||x(!0)},onMouseLeave:()=>x(!1),children:[o&&l.jsx("span",{style:A,children:o}),l.jsxs("div",{style:{position:"relative",flex:1,display:"flex",alignItems:"center",minWidth:0},children:[n&&l.jsx("span",{style:{position:"absolute",left:Q[e],color:S?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",display:"flex",alignItems:"center",pointerEvents:"none"},children:n}),l.jsx("input",{ref:g,id:v,"aria-invalid":p,"aria-describedby":p?`${v}-error`:s?`${v}-helper`:void 0,style:{width:"100%",height:"100%",paddingLeft:n?Ve[e]:Q[e],paddingRight:r?Ve[e]:Q[e],fontSize:Ge[e],fontFamily:"var(--lucent-font-family-base)",color:S?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",background:"transparent",border:"none",outline:"none",cursor:S?"not-allowed":void 0,boxSizing:"border-box"},...f,onFocus:E=>{var H;k(!0),(H=f.onFocus)==null||H.call(f,E)},onBlur:E=>{var H;k(!1),(H=f.onBlur)==null||H.call(f,E)}}),r&&l.jsx("span",{style:{position:"absolute",right:Q[e],color:S?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",display:"flex",alignItems:"center"},children:r})]}),i&&l.jsx("span",{style:N,children:i})]}),p&&l.jsx("span",{id:`${v}-error`,role:"alert",style:{fontSize:we[e],color:"var(--lucent-danger-text)",fontFamily:"var(--lucent-font-family-base)"},children:a}),!p&&s&&l.jsx("span",{id:`${v}-helper`,style:{fontSize:we[e],color:"var(--lucent-text-secondary)",fontFamily:"var(--lucent-font-family-base)"},children:s})]})});K.displayName="Input";const At={neutral:{bg:"var(--lucent-surface-secondary)",color:"var(--lucent-text-secondary)",border:"var(--lucent-border-default)"},accent:{bg:"var(--lucent-accent-default)",color:"var(--lucent-accent-fg)",border:"var(--lucent-accent-default)"},success:{bg:"var(--lucent-success-subtle)",color:"var(--lucent-success-text)",border:"var(--lucent-success-subtle)"},warning:{bg:"var(--lucent-warning-subtle)",color:"var(--lucent-warning-text)",border:"var(--lucent-warning-subtle)"},danger:{bg:"var(--lucent-danger-subtle)",color:"var(--lucent-danger-text)",border:"var(--lucent-danger-subtle)"},info:{bg:"var(--lucent-info-subtle)",color:"var(--lucent-info-text)",border:"var(--lucent-info-subtle)"}},Ot={sm:{fontSize:"var(--lucent-font-size-xs)",padding:"0 var(--lucent-space-2)",height:"18px"},md:{fontSize:"var(--lucent-font-size-sm)",padding:"0 var(--lucent-space-2)",height:"22px"}};function Xt({variant:e="neutral",size:t="md",dot:s=!1,children:a,style:n}){const r=At[e],o=Ot[t];return l.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:"var(--lucent-space-1)",height:o.height,padding:o.padding,fontSize:o.fontSize,fontFamily:"var(--lucent-font-family-base)",fontWeight:"var(--lucent-font-weight-medium)",lineHeight:1,borderRadius:"var(--lucent-radius-full)",background:r.bg,color:r.color,border:`1px solid ${r.border}`,whiteSpace:"nowrap",boxSizing:"border-box",...n},children:[s&&l.jsx("span",{style:{width:6,height:6,borderRadius:"var(--lucent-radius-full)",background:"currentColor",flexShrink:0}}),a]})}const qt={sm:"calc(var(--lucent-space-8) * 0.5 + 16px)",md:"calc(var(--lucent-space-10) * 0.5 + 20px)",lg:"calc(var(--lucent-space-12) * 0.5 + 24px)"},Ut={sm:{track:[28,16],thumb:12},md:{track:[36,20],thumb:16},lg:{track:[44,24],thumb:20}},_e="cubic-bezier(0.34, 1.56, 0.64, 1)",Gt=`
|
|
2
|
-
@keyframes lucent-toggle-pop {
|
|
3
|
-
0% { transform: scale(1); }
|
|
4
|
-
35% { transform: scale(0.94); }
|
|
5
|
-
70% { transform: scale(1.06); }
|
|
6
|
-
100% { transform: scale(1); }
|
|
7
|
-
}
|
|
8
|
-
`;function Vt({label:e,size:t="md",checked:s,defaultChecked:a,contained:n=!1,helperText:r,align:o="left",disabled:i,id:d,onChange:u,style:f,...g}){const v=d??`lucent-toggle-${Math.random().toString(36).slice(2,7)}`,p=s!==void 0,[S,M]=b.useState(a??!1),k=p?!!s:S,y=b.useRef(k),[x,h]=b.useState(0),[D,$]=b.useState(!1);b.useEffect(()=>{if(!i&&y.current!==k){y.current=k,h(U=>U+1),$(!0);const W=setTimeout(()=>$(!1),150);return()=>clearTimeout(W)}},[k,i]);const{track:[A,N],thumb:E}=Ut[t],H=k?A-E-2:2,Y=W=>{p||M(W.target.checked),u==null||u(W)},V=l.jsxs("span",{"aria-hidden":!0,style:{position:"relative",width:A,height:N,borderRadius:N/2,flexShrink:0},children:[l.jsx("span",{style:{position:"absolute",inset:0,borderRadius:"inherit",background:i?"var(--lucent-surface-secondary)":k?"var(--lucent-accent-default)":"color-mix(in srgb, var(--lucent-text-primary) 12%, transparent)",transition:"background var(--lucent-duration-fast) var(--lucent-easing-default)",animation:x>0?`lucent-toggle-pop 240ms ${_e} forwards`:void 0}},x),l.jsx("span",{style:{position:"absolute",top:2,left:H,width:D?E*1.3:E,height:E,borderRadius:E,background:"#ffffff",boxShadow:"0 1px 3px rgb(0 0 0 / 0.2)",transition:`left 260ms ${_e}, width 200ms cubic-bezier(0.22, 1, 0.36, 1)`}})]}),B=l.jsxs("label",{style:{display:o==="right"?"flex":"inline-flex",alignItems:r?"flex-start":"center",gap:"var(--lucent-space-2)",...o==="right"?{width:"100%"}:{},cursor:i?"not-allowed":"pointer",fontFamily:"var(--lucent-font-family-base)",fontSize:t==="sm"?"var(--lucent-font-size-sm)":"var(--lucent-font-size-md)",color:i?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",userSelect:"none",...n?{}:f},children:[l.jsx("input",{type:"checkbox",role:"switch",id:v,checked:p?s:S,disabled:i,onChange:Y,"aria-checked":k,style:{position:"absolute",opacity:0,width:0,height:0,margin:0,pointerEvents:"none"},...g}),o==="left"&&V,e||r?l.jsxs("span",{style:{display:"flex",flexDirection:"column",flex:o==="right"?1:void 0},children:[e&&l.jsx("span",{style:{fontWeight:r?"var(--lucent-font-weight-medium)":"var(--lucent-font-weight-regular)",lineHeight:r?1.3:1},children:e}),r&&l.jsx("span",{style:{fontSize:"var(--lucent-font-size-xs)",color:i?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",marginTop:"2px"},children:r})]}):null,o==="right"&&V]});return l.jsxs(l.Fragment,{children:[l.jsx("style",{children:Gt}),n?l.jsx("div",{style:{border:"1px solid var(--lucent-border-strong)",borderRadius:"var(--lucent-radius-lg)",...r?{padding:"var(--lucent-space-3)"}:{minHeight:qt[t],padding:"0 var(--lucent-space-3)",display:"flex",alignItems:"center"},background:k&&!i?"color-mix(in srgb, var(--lucent-text-primary) 6%, transparent)":"transparent",transition:"border-color var(--lucent-duration-fast) var(--lucent-easing-default), background var(--lucent-duration-fast) var(--lucent-easing-default)",cursor:i?"not-allowed":"pointer",...f},onClick:W=>{if(!i&&W.target===W.currentTarget){const U=W.currentTarget.querySelector("input");U==null||U.click()}},children:B}):B]})}const _t={sm:"calc(var(--lucent-space-8) * 0.5 + 16px)",md:"calc(var(--lucent-space-10) * 0.5 + 20px)",lg:"calc(var(--lucent-space-12) * 0.5 + 24px)"},Kt={sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-md)",lg:"var(--lucent-font-size-md)"},Se={sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-sm)",lg:"var(--lucent-font-size-md)"},Ke={sm:"var(--lucent-space-2)",md:"var(--lucent-space-3)",lg:"var(--lucent-space-3)"},Ie=b.forwardRef(({options:e,size:t="md",label:s,helperText:a,errorText:n,placeholder:r,disabled:o,id:i,style:d,...u},f)=>{const g=i??`lucent-select-${Math.random().toString(36).slice(2,7)}`,v=!!n,p=!!o,[S,M]=b.useState(!1),[k,y]=b.useState(!1),x=p?"transparent":v?"var(--lucent-danger-default)":S?"var(--lucent-accent-border)":k?"var(--lucent-border-strong)":"var(--lucent-border-default)",h=S?`0 0 0 3px ${v?"var(--lucent-danger-subtle)":"var(--lucent-accent-subtle)"}`:"none";return l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--lucent-space-1)",width:"100%",...d},children:[s&&l.jsx("label",{htmlFor:g,style:{fontSize:Se[t],fontWeight:"var(--lucent-font-weight-medium)",color:p?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",fontFamily:"var(--lucent-font-family-base)"},children:s}),l.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center",height:_t[t],border:`1px solid ${x}`,borderRadius:"var(--lucent-radius-lg)",boxShadow:h,background:p?"color-mix(in srgb, var(--lucent-text-primary) 6%, transparent)":"var(--lucent-surface)",cursor:p?"not-allowed":"pointer",transition:["border-color var(--lucent-duration-fast) var(--lucent-easing-default)","box-shadow var(--lucent-duration-fast) var(--lucent-easing-default)"].join(", ")},onMouseEnter:()=>{p||y(!0)},onMouseLeave:()=>y(!1),children:[l.jsxs("select",{ref:f,id:g,disabled:o,"aria-invalid":v,"aria-describedby":v?`${g}-error`:a?`${g}-helper`:void 0,style:{width:"100%",height:"100%",padding:`0 var(--lucent-space-8) 0 ${Ke[t]}`,fontSize:Kt[t],fontFamily:"var(--lucent-font-family-base)",color:p?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",background:"transparent",border:"none",borderRadius:"var(--lucent-radius-lg)",outline:"none",appearance:"none",cursor:p?"not-allowed":"pointer",boxSizing:"border-box"},onFocus:D=>{var $;p||M(!0),($=u.onFocus)==null||$.call(u,D)},onBlur:D=>{var $;M(!1),($=u.onBlur)==null||$.call(u,D)},onMouseDown:()=>{p||M(!0)},...u,children:[r&&l.jsx("option",{value:"",disabled:!0,children:r}),e.map(D=>l.jsx("option",{value:D.value,disabled:D.disabled,children:D.label},D.value))]}),l.jsx("span",{"aria-hidden":!0,style:{position:"absolute",right:Ke[t],pointerEvents:"none",color:p?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",display:"flex",alignItems:"center"},children:l.jsx("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:l.jsx("polyline",{points:"6 9 12 15 18 9"})})})]}),v&&l.jsx("span",{id:`${g}-error`,role:"alert",style:{fontSize:Se[t],color:"var(--lucent-danger-text)",fontFamily:"var(--lucent-font-family-base)"},children:n}),!v&&a&&l.jsx("span",{id:`${g}-helper`,style:{fontSize:Se[t],color:"var(--lucent-text-secondary)",fontFamily:"var(--lucent-font-family-base)"},children:a})]})});Ie.displayName="Select";const Yt={primary:"var(--lucent-text-primary)",secondary:"var(--lucent-text-secondary)",disabled:"var(--lucent-text-disabled)",inverse:"var(--lucent-text-inverse)",onAccent:"var(--lucent-accent-fg)",success:"var(--lucent-success-text)",warning:"var(--lucent-warning-text)",danger:"var(--lucent-danger-text)",info:"var(--lucent-info-text)"},Zt={xs:"var(--lucent-font-size-xs)",sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-md)",lg:"var(--lucent-font-size-lg)",xl:"var(--lucent-font-size-xl)","2xl":"var(--lucent-font-size-2xl)","3xl":"var(--lucent-font-size-3xl)"},Jt={regular:"var(--lucent-font-weight-regular)",medium:"var(--lucent-font-weight-medium)",semibold:"var(--lucent-font-weight-semibold)",bold:"var(--lucent-font-weight-bold)"},Qt={tight:"var(--lucent-line-height-tight)",base:"var(--lucent-line-height-base)",relaxed:"var(--lucent-line-height-relaxed)"},ea={base:"var(--lucent-font-family-base)",mono:"var(--lucent-font-family-mono)",display:"var(--lucent-font-family-display)"};function ta({as:e="p",size:t="md",weight:s="regular",color:a="primary",align:n,lineHeight:r="base",family:o="base",truncate:i=!1,children:d,style:u,...f}){const g={fontSize:Zt[t],fontWeight:Jt[s],color:Yt[a],...n!==void 0&&{textAlign:n},lineHeight:Qt[r],fontFamily:ea[o],margin:0,...i&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},...u},v=e;return l.jsx(v,{style:g,...f,children:d})}const aa={sm:"3px",md:"4px",lg:"5px"},na={sm:"14px",md:"18px",lg:"22px"},ra=`
|
|
9
|
-
.lucent-slider {
|
|
10
|
-
-webkit-appearance: none;
|
|
11
|
-
appearance: none;
|
|
12
|
-
width: 100%;
|
|
13
|
-
background: transparent;
|
|
14
|
-
cursor: pointer;
|
|
15
|
-
outline: none;
|
|
16
|
-
margin: 0;
|
|
17
|
-
padding: 6px 0;
|
|
18
|
-
box-sizing: border-box;
|
|
19
|
-
}
|
|
20
|
-
.lucent-slider:disabled { cursor: not-allowed; }
|
|
21
|
-
|
|
22
|
-
/* WebKit track */
|
|
23
|
-
.lucent-slider::-webkit-slider-runnable-track {
|
|
24
|
-
height: var(--ls-track-h);
|
|
25
|
-
border-radius: 999px;
|
|
26
|
-
background: linear-gradient(
|
|
27
|
-
to right,
|
|
28
|
-
var(--lucent-accent-default) 0%,
|
|
29
|
-
var(--lucent-accent-default) var(--ls-fill),
|
|
30
|
-
color-mix(in srgb, var(--lucent-text-primary) 10%, transparent) var(--ls-fill),
|
|
31
|
-
color-mix(in srgb, var(--lucent-text-primary) 10%, transparent) 100%
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
.lucent-slider:disabled::-webkit-slider-runnable-track {
|
|
35
|
-
background: color-mix(in srgb, var(--lucent-text-primary) 10%, transparent);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* WebKit thumb */
|
|
39
|
-
.lucent-slider::-webkit-slider-thumb {
|
|
40
|
-
-webkit-appearance: none;
|
|
41
|
-
appearance: none;
|
|
42
|
-
width: var(--ls-thumb);
|
|
43
|
-
height: var(--ls-thumb);
|
|
44
|
-
border-radius: 50%;
|
|
45
|
-
background: var(--lucent-accent-default);
|
|
46
|
-
border: 2px solid var(--lucent-surface);
|
|
47
|
-
box-shadow: 0 1px 3px rgb(0 0 0 / 0.15);
|
|
48
|
-
margin-top: calc((var(--ls-thumb) - var(--ls-track-h)) / -2);
|
|
49
|
-
transition: transform 120ms ease, box-shadow 120ms ease;
|
|
50
|
-
cursor: pointer;
|
|
51
|
-
}
|
|
52
|
-
.lucent-slider:not(:disabled):hover::-webkit-slider-thumb {
|
|
53
|
-
transform: scale(1.15);
|
|
54
|
-
}
|
|
55
|
-
.lucent-slider:focus-visible::-webkit-slider-thumb {
|
|
56
|
-
box-shadow: 0 0 0 3px var(--lucent-accent-subtle);
|
|
57
|
-
}
|
|
58
|
-
.lucent-slider:disabled::-webkit-slider-thumb {
|
|
59
|
-
background: color-mix(in srgb, var(--lucent-text-primary) 12%, transparent);
|
|
60
|
-
border-color: color-mix(in srgb, var(--lucent-text-primary) 10%, transparent);
|
|
61
|
-
cursor: not-allowed;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* Firefox track */
|
|
65
|
-
.lucent-slider::-moz-range-track {
|
|
66
|
-
height: var(--ls-track-h);
|
|
67
|
-
border-radius: 999px;
|
|
68
|
-
background: color-mix(in srgb, var(--lucent-text-primary) 10%, transparent);
|
|
69
|
-
}
|
|
70
|
-
.lucent-slider::-moz-range-progress {
|
|
71
|
-
height: var(--ls-track-h);
|
|
72
|
-
border-radius: 999px;
|
|
73
|
-
background: var(--lucent-accent-default);
|
|
74
|
-
}
|
|
75
|
-
.lucent-slider:disabled::-moz-range-progress {
|
|
76
|
-
background: transparent;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Firefox thumb */
|
|
80
|
-
.lucent-slider::-moz-range-thumb {
|
|
81
|
-
width: var(--ls-thumb);
|
|
82
|
-
height: var(--ls-thumb);
|
|
83
|
-
border-radius: 50%;
|
|
84
|
-
background: var(--lucent-accent-default);
|
|
85
|
-
border: 2px solid var(--lucent-surface);
|
|
86
|
-
box-shadow: 0 1px 3px rgb(0 0 0 / 0.15);
|
|
87
|
-
cursor: pointer;
|
|
88
|
-
transition: transform 120ms ease, box-shadow 120ms ease;
|
|
89
|
-
}
|
|
90
|
-
.lucent-slider:not(:disabled):hover::-moz-range-thumb {
|
|
91
|
-
transform: scale(1.15);
|
|
92
|
-
}
|
|
93
|
-
.lucent-slider:focus-visible::-moz-range-thumb {
|
|
94
|
-
box-shadow: 0 0 0 3px var(--lucent-accent-subtle);
|
|
95
|
-
}
|
|
96
|
-
.lucent-slider:disabled::-moz-range-thumb {
|
|
97
|
-
background: color-mix(in srgb, var(--lucent-text-primary) 12%, transparent);
|
|
98
|
-
border-color: color-mix(in srgb, var(--lucent-text-primary) 10%, transparent);
|
|
99
|
-
cursor: not-allowed;
|
|
100
|
-
}
|
|
101
|
-
`;function sa({label:e,showValue:t=!1,size:s="md",min:a=0,max:n=100,step:r=1,value:o,defaultValue:i,disabled:d,id:u,onChange:f,style:g,...v}){const p=u??`lucent-slider-${Math.random().toString(36).slice(2,7)}`,S=o!==void 0,[M,k]=b.useState(i??Math.round((a+n)/2)),y=S?o:M,x=`${(y-a)/(n-a)*100}%`,h=D=>{S||k(Number(D.target.value)),f==null||f(D)};return l.jsxs(l.Fragment,{children:[l.jsx("style",{children:ra}),l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--lucent-space-1)",width:"100%",fontFamily:"var(--lucent-font-family-base)",...g},children:[(e||t)&&l.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline"},children:[e&&l.jsx("label",{htmlFor:p,style:{fontSize:"var(--lucent-font-size-sm)",fontWeight:"var(--lucent-font-weight-medium)",color:d?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",cursor:d?"not-allowed":"default"},children:e}),t&&l.jsx("span",{style:{fontSize:"var(--lucent-font-size-sm)",color:d?"var(--lucent-text-disabled)":"var(--lucent-text-secondary)",fontVariantNumeric:"tabular-nums"},children:y})]}),l.jsx("input",{type:"range",id:p,className:"lucent-slider",min:a,max:n,step:r,disabled:d,value:S?o:M,onChange:h,style:{"--ls-track-h":aa[s],"--ls-thumb":na[s],"--ls-fill":x},...v})]})]})}const Ye={sm:"calc(var(--lucent-space-8) * 0.5 + 18px)",md:"calc(var(--lucent-space-10) * 0.5 + 22px)",lg:"calc(var(--lucent-space-12) * 0.5 + 26px)"},oa={sm:"var(--lucent-font-size-sm)",md:"var(--lucent-font-size-md)",lg:"var(--lucent-font-size-lg)"},la={sm:"var(--lucent-space-3)",md:"var(--lucent-space-4)",lg:"var(--lucent-space-5)"};function Be({options:e,value:t,defaultValue:s,onChange:a,size:n="md",disabled:r=!1,fullWidth:o=!0,id:i,style:d}){var y;const[u,f]=b.useState(s??((y=e[0])==null?void 0:y.value)??""),g=t!==void 0?t:u,v=b.useRef(null),[p,S]=b.useState(null),M=b.useRef(!1);b.useLayoutEffect(()=>{const x=v.current;if(!x)return;const h=()=>{const $=x.querySelector(`[data-sc-value="${g}"]`);$&&(S({left:$.offsetLeft,width:$.offsetWidth,animate:M.current}),M.current=!0)};h();const D=new ResizeObserver(h);return D.observe(x),()=>D.disconnect()},[g,e]);const k=x=>{r||x.disabled||(t===void 0&&f(x.value),a==null||a(x.value))};return l.jsxs("div",{id:i,ref:v,role:"group",style:{position:"relative",display:"flex",alignItems:"center",width:o?"100%":"fit-content",height:Ye[n],background:"color-mix(in srgb, var(--lucent-text-primary) 6%, transparent)",borderRadius:"var(--lucent-radius-lg)",padding:0,gap:0,opacity:r?.5:1,...d},children:[p&&l.jsx("span",{"aria-hidden":!0,style:{position:"absolute",top:3,left:p.left+3,width:p.width-6,height:"calc(100% - 6px)",background:"var(--lucent-surface)",borderRadius:"var(--lucent-radius-lg)",boxShadow:"var(--lucent-shadow-sm)",transition:p.animate?"left var(--lucent-duration-base) cubic-bezier(0.34, 1.56, 0.64, 1), width var(--lucent-duration-base) cubic-bezier(0.22, 1, 0.36, 1)":"none",zIndex:0,pointerEvents:"none"}}),e.map(x=>{const h=x.value===g,D=r||!!x.disabled;return l.jsx("button",{"data-sc-value":x.value,type:"button",role:"radio","aria-checked":h,disabled:D,onClick:()=>k(x),style:{position:"relative",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--lucent-space-1)",flex:1,height:Ye[n],padding:`0 ${la[n]}`,fontSize:oa[n],fontFamily:"var(--lucent-font-family-base)",fontWeight:h?"var(--lucent-font-weight-medium)":"var(--lucent-font-weight-regular)",color:D?"var(--lucent-text-disabled)":h?"var(--lucent-text-primary)":"var(--lucent-text-secondary)",background:"transparent",border:"none",borderRadius:"var(--lucent-radius-lg)",cursor:D?"not-allowed":"pointer",outline:"none",whiteSpace:"nowrap",transition:["color var(--lucent-duration-fast) var(--lucent-easing-default)","font-weight var(--lucent-duration-fast) var(--lucent-easing-default)"].join(", ")},onFocus:$=>{$.currentTarget.matches(":focus-visible")&&($.currentTarget.style.boxShadow="0 0 0 2px var(--lucent-accent-subtle)")},onBlur:$=>{$.currentTarget.style.boxShadow=""},children:x.label},x.value)})]})}Be.displayName="SegmentedControl";const ca={xs:12,sm:16,md:22,lg:28,xl:36,"2xl":48},ia={xs:"var(--lucent-radius-sm)",sm:"var(--lucent-radius-sm)",md:"var(--lucent-radius-md)",lg:"var(--lucent-radius-md)",xl:"var(--lucent-radius-lg)","2xl":"var(--lucent-radius-lg)"},Ze="inset 0 0 0 1px rgba(0,0,0,0.2)",Je="inset 0 0 0 2px rgba(0,0,0,0.5)",ua="inset 0 0 0 1px rgba(0,0,0,0.2), 0 0 0 3px var(--lucent-accent-subtle)";function da(e){return{backgroundImage:[`linear-gradient(${e}, ${e})`,"linear-gradient(45deg, #e5e5e5 25%, transparent 25%)","linear-gradient(-45deg, #e5e5e5 25%, transparent 25%)","linear-gradient(45deg, transparent 75%, #e5e5e5 75%)","linear-gradient(-45deg, transparent 75%, #e5e5e5 75%)"].join(", "),backgroundSize:"auto, 8px 8px, 8px 8px, 8px 8px, 8px 8px",backgroundPosition:"0 0, 0 0, 0 4px, 4px -4px, -4px 0",backgroundColor:"#fff"}}const ne=b.forwardRef(({color:e,size:t="md",shape:s="circle",showCheckerboard:a=!1,selected:n=!1,disabled:r=!1,style:o,onFocus:i,onBlur:d,onClick:u,...f},g)=>{const v=ca[t],p=s==="circle"?"50%":ia[t];return l.jsx("button",{ref:g,type:"button",disabled:r,onClick:u,style:{width:v,height:v,flexShrink:0,...a?da(e):{background:e},border:"none",borderRadius:p,cursor:r?"not-allowed":u?"pointer":"default",padding:0,outline:"none",opacity:r?.4:1,boxShadow:n?Je:Ze,transition:"box-shadow var(--lucent-duration-fast) var(--lucent-easing-default)",...o},onFocus:S=>{r||(S.currentTarget.style.boxShadow=ua),i==null||i(S)},onBlur:S=>{S.currentTarget.style.boxShadow=n?Je:Ze,d==null||d(S)},...f})});ne.displayName="ColorSwatch";function be(e,t,s){return Math.max(t,Math.min(s,e))}function fa(e,t,s){const a=t/100,n=s/100,r=n*a,o=r*(1-Math.abs(e/60%2-1)),i=n-r;let d=0,u=0,f=0;return e<60?(d=r,u=o):e<120?(d=o,u=r):e<180?(u=r,f=o):e<240?(u=o,f=r):e<300?(d=o,f=r):(d=r,f=o),{r:Math.round((d+i)*255),g:Math.round((u+i)*255),b:Math.round((f+i)*255)}}function pa(e,t,s){const a=e/255,n=t/255,r=s/255,o=Math.max(a,n,r),i=Math.min(a,n,r),d=o-i,u=o,f=o===0?0:d/o;let g=0;return d!==0&&(o===a?g=((n-r)/d+(n<r?6:0))/6:o===n?g=((r-a)/d+2)/6:g=((a-n)/d+4)/6),{h:Math.round(g*360),s:Math.round(f*100),v:Math.round(u*100)}}function ga(e,t,s){const a=e/255,n=t/255,r=s/255,o=Math.max(a,n,r),i=Math.min(a,n,r),d=(o+i)/2;if(o===i)return{h:0,s:0,l:Math.round(d*100)};const u=o-i,f=d>.5?u/(2-o-i):u/(o+i);let g=0;return o===a?g=((n-r)/u+(n<r?6:0))/6:o===n?g=((r-a)/u+2)/6:g=((a-n)/u+4)/6,{h:Math.round(g*360),s:Math.round(f*100),l:Math.round(d*100)}}function ge(e,t,s){const a=t/100,n=s/100,r=(1-Math.abs(2*n-1))*a,o=r*(1-Math.abs(e/60%2-1)),i=n-r/2;let d=0,u=0,f=0;return e<60?(d=r,u=o):e<120?(d=o,u=r):e<180?(u=r,f=o):e<240?(u=o,f=r):e<300?(d=o,f=r):(d=r,f=o),{r:Math.round((d+i)*255),g:Math.round((u+i)*255),b:Math.round((f+i)*255)}}function Re(e){const t=e.replace("#","");return t.length===3?`#${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:t.length===6||t.length===8?`#${t}`:"#000000"}function rt(e){const t=Re(e);return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16),a:t.length===9?+(parseInt(t.slice(7,9),16)/255).toFixed(2):1}}function je({r:e,g:t,b:s,a}){const n=o=>be(Math.round(o),0,255).toString(16).padStart(2,"0"),r=`#${n(e)}${n(t)}${n(s)}`;return a<1?`${r}${n(Math.round(a*255))}`:r}function st({h:e,s:t,v:s,a}){return{...fa(e,t,s),a}}function X({r:e,g:t,b:s,a}){return{...pa(e,t,s),a}}function ue(e){return je(st(e))}function de(e){const t=e.trim();if(t.startsWith("#")){const n=Re(t);return/^#[0-9a-f]{6}([0-9a-f]{2})?$/i.test(n)?rt(n):null}const s=t.match(/^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*([\d.]+))?\s*\)$/);if(s){const n=+(s[1]??"0"),r=+(s[2]??"0"),o=+(s[3]??"0"),i=s[4]!==void 0?+s[4]:1;return[n,r,o].every(d=>d<=255)&&i>=0&&i<=1?{r:n,g:r,b:o,a:i}:null}const a=t.match(/^hsl\(\s*(\d{1,3})\s*,\s*(\d{1,3})%?\s*,\s*(\d{1,3})%?\s*\)$/);if(a){const n=+(a[1]??"0"),r=+(a[2]??"0"),o=+(a[3]??"0");return n<=360&&r<=100&&o<=100?{...ge(n,r,o),a:1}:null}return null}const ba=[{label:"Presets",colors:["#000000","#2563eb","#16a34a","#ca8a04","#dc2626","#0ea5e9","#9333ea","#4f46e5","#e11d48"]}],xa=["linear-gradient(45deg, #c0c0c0 25%, transparent 25%)","linear-gradient(-45deg, #c0c0c0 25%, transparent 25%)","linear-gradient(45deg, transparent 75%, #c0c0c0 75%)","linear-gradient(-45deg, transparent 75%, #c0c0c0 75%)"].join(", ");function Qe({value:e,min:t,max:s,onChange:a,trackStyle:n,formatTooltip:r}){const o=b.useRef(null),[i,d]=b.useState(!1),u=b.useCallback(g=>{const v=o.current.getBoundingClientRect(),p=be((g.clientX-v.left)/v.width,0,1);a(t+p*(s-t))},[t,s,a]),f=(e-t)/(s-t)*100;return l.jsx("div",{ref:o,style:{position:"relative",height:12,borderRadius:6,cursor:"crosshair",userSelect:"none",...n},onPointerDown:g=>{g.currentTarget.setPointerCapture(g.pointerId),d(!0),u(g)},onPointerMove:g=>{g.buttons>0&&u(g)},onPointerUp:()=>d(!1),onPointerCancel:()=>d(!1),children:l.jsx("div",{style:{position:"absolute",left:`${f}%`,top:"50%",transform:"translate(-50%, -50%)",width:14,height:14,borderRadius:"50%",background:"white",border:"2px solid rgba(0,0,0,0.22)",boxShadow:"0 1px 4px rgba(0,0,0,0.3)",zIndex:1,pointerEvents:"none"},children:i&&r&&l.jsx("div",{style:{position:"absolute",bottom:"100%",left:"50%",transform:"translateX(-50%)",marginBottom:6,background:"rgba(0,0,0,0.75)",color:"#fff",fontSize:11,fontFamily:"var(--lucent-font-family-base)",fontWeight:500,borderRadius:4,padding:"2px 6px",whiteSpace:"nowrap",pointerEvents:"none"},children:r(e)})})})}function ma(){return l.jsxs("svg",{width:14,height:14,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[l.jsx("path",{d:"M2 22l1-1h3l9-9"}),l.jsx("path",{d:"M3 21v-3l9-9"}),l.jsx("path",{d:"M15 6l3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z"})]})}function ot({value:e,onChange:t,label:s,size:a="md",inline:n=!1,disabled:r=!1,presetGroups:o=ba,portalContainer:i,id:d,style:u}){var T,L;const f=a==="sm"?24:40,g=b.useId(),v=d??g,[p,S]=b.useState(!1),[M,k]=b.useState("hex"),[y,x]=b.useState(0),[h,D]=b.useState(()=>{const c=e?de(e)??{r:0,g:0,b:0,a:1}:{r:0,g:0,b:0,a:1};return X(c)}),[$,A]=b.useState(()=>ue(h).slice(1).toUpperCase()),N=b.useRef(null),E=b.useRef(null),H=b.useRef(null),[Y,V]=b.useState({top:0,left:0});b.useLayoutEffect(()=>{if(!p||!N.current)return;const c=N.current.getBoundingClientRect();let m=c.left;const z=c.bottom+8;if(H.current){const I=H.current.offsetWidth;m+I>window.innerWidth&&(m=c.right-I)}V({top:z,left:m})},[p]),b.useEffect(()=>{if(!e)return;const c=de(e);c&&(D(X(c)),A(je(c).slice(1).toUpperCase()))},[e]),b.useEffect(()=>{if(!p)return;const c=m=>{var I,F;const z=m.target;(I=N.current)!=null&&I.contains(z)||(F=H.current)!=null&&F.contains(z)||S(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[p]);const B=b.useCallback(c=>{D(c);const m=ue(c);A(m.slice(1).toUpperCase()),t==null||t(m)},[t]),W=b.useCallback(c=>{const m=E.current.getBoundingClientRect(),z=Math.round(be((c.clientX-m.left)/m.width,0,1)*100),I=Math.round((1-be((c.clientY-m.top)/m.height,0,1))*100);B({...h,s:z,v:I})},[h,B]),U=b.useCallback(async()=>{if("EyeDropper"in window)try{const c=await new window.EyeDropper().open(),m=de(c.sRGBHex);m&&B(X(m))}catch{}},[B]),C=st(h),O=ga(C.r,C.g,C.b),ae=ue(h),ye=ue({...h,a:1}),_=Math.round(h.a*100),w=[{id:"hex",label:"Hex"},{id:"rgb",label:"RGB"},{id:"hsl",label:"HSL"},{id:"hsb",label:"HSB"}],R=typeof window<"u"&&"EyeDropper"in window;return l.jsxs("div",{ref:N,style:{display:"inline-flex",flexDirection:n?"row":"column",alignItems:n?"center":void 0,gap:"var(--lucent-space-1)",position:"relative",...u},children:[l.jsx("style",{children:`
|
|
102
|
-
.lucent-cp-field::-webkit-outer-spin-button,
|
|
103
|
-
.lucent-cp-field::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
|
|
104
|
-
.lucent-cp-field { -moz-appearance: textfield; }
|
|
105
|
-
`}),s&&!n&&l.jsx("label",{htmlFor:`${v}-swatch`,style:{fontSize:a==="sm"?"var(--lucent-font-size-xs)":"var(--lucent-font-size-sm)",fontWeight:"var(--lucent-font-weight-medium)",color:r?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",fontFamily:"var(--lucent-font-family-base)"},children:s}),l.jsx(ne,{id:`${v}-swatch`,color:`rgba(${C.r},${C.g},${C.b},${h.a})`,shape:"square",showCheckerboard:!0,disabled:r,onClick:()=>S(c=>!c),"aria-expanded":p,"aria-haspopup":"dialog",style:{width:f,height:f,borderRadius:a==="sm"?"var(--lucent-radius-md)":"var(--lucent-radius-lg)",boxShadow:p?"inset 0 0 0 2px var(--lucent-accent-border), 0 0 0 3px var(--lucent-accent-subtle)":"inset 0 0 0 1px rgba(0,0,0,0.2)"}}),s&&n&&l.jsx("label",{htmlFor:`${v}-swatch`,style:{fontSize:a==="sm"?"var(--lucent-font-size-xs)":"var(--lucent-font-size-sm)",fontWeight:"var(--lucent-font-weight-medium)",color:r?"var(--lucent-text-disabled)":"var(--lucent-text-primary)",fontFamily:"var(--lucent-font-family-base)",cursor:"pointer"},children:s}),p&&Rt.createPortal(l.jsxs("div",{ref:H,role:"dialog","aria-label":"Color picker",style:{position:"fixed",top:Y.top,left:Y.left,zIndex:999999,background:"color-mix(in srgb, var(--lucent-surface-overlay) 85%, transparent)",backdropFilter:"blur(6px)",WebkitBackdropFilter:"blur(6px)",border:"1px solid color-mix(in srgb, var(--lucent-accent-default) 15%, var(--lucent-border-default))",borderRadius:"var(--lucent-radius-xl)",boxShadow:"0 0 24px -4px color-mix(in srgb, var(--lucent-accent-default) 12%, transparent), var(--lucent-shadow-md)",width:280,overflow:"hidden",display:"flex",flexDirection:"column"},children:[l.jsxs("div",{ref:E,style:{position:"relative",height:160,background:`hsl(${h.h}, 100%, 50%)`,cursor:"crosshair",userSelect:"none",flexShrink:0},onPointerDown:c=>{c.currentTarget.setPointerCapture(c.pointerId),W(c)},onPointerMove:c=>{c.buttons>0&&W(c)},children:[l.jsx("div",{style:{position:"absolute",inset:0,background:"linear-gradient(to right, #fff, transparent)"}}),l.jsx("div",{style:{position:"absolute",inset:0,background:"linear-gradient(to bottom, transparent, #000)"}}),l.jsx("div",{style:{position:"absolute",left:`${h.s}%`,top:`${100-h.v}%`,transform:"translate(-50%, -50%)",width:14,height:14,borderRadius:"50%",border:"2px solid #fff",boxShadow:"0 0 0 1px rgba(0,0,0,0.25), 0 2px 4px rgba(0,0,0,0.35)",pointerEvents:"none"}})]}),l.jsxs("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:10},children:[l.jsxs("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[l.jsx(ne,{color:`rgba(${C.r},${C.g},${C.b},${h.a})`,shape:"square",showCheckerboard:!0,style:{width:44,height:44,borderRadius:8}}),l.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:8},children:[l.jsx(Qe,{value:h.h,min:0,max:360,onChange:c=>B({...h,h:Math.round(c)}),trackStyle:{background:"linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)"},formatTooltip:c=>`${Math.round(c)}°`}),l.jsxs("div",{style:{position:"relative",borderRadius:6,overflow:"hidden"},children:[l.jsx("div",{style:{position:"absolute",inset:0,backgroundImage:xa,backgroundSize:"8px 8px",backgroundPosition:"0 0, 0 4px, 4px -4px, -4px 0",backgroundColor:"#fff"}}),l.jsx("div",{style:{position:"absolute",inset:0,background:`linear-gradient(to right, transparent, ${ye})`}}),l.jsx(Qe,{value:h.a,min:0,max:1,onChange:c=>B({...h,a:Math.round(c*100)/100}),trackStyle:{background:"transparent",position:"relative",zIndex:1},formatTooltip:c=>`${Math.round(c*100)}%`})]})]})]}),l.jsx(Be,{size:"sm",value:M,onChange:c=>k(c),options:w.map(({id:c,label:m})=>({value:c,label:m}))}),M==="hex"&&l.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[l.jsx(ze,{variant:"secondary",size:"sm",onClick:U,disabled:!R,title:R?"Pick color from screen":"Not supported in this browser",leftIcon:l.jsx(ma,{}),style:{flexShrink:0,paddingLeft:8,paddingRight:8}}),l.jsx(K,{size:"sm",prefix:"#",value:$,onChange:c=>{const m=c.target.value.replace("#","");A(m.toUpperCase());const z=de(`#${m}`);if(z){const I=X(z);D(I),t==null||t(je(z))}},spellCheck:!1,placeholder:"000000",maxLength:8,style:{flex:1}}),l.jsx(K,{size:"sm",type:"number",suffix:"%",value:_,min:0,max:100,onChange:c=>{const m=+c.target.value;!isNaN(m)&&m>=0&&m<=100&&B({...h,a:m/100})},className:"lucent-cp-field",style:{width:68,flexShrink:0}})]}),M==="rgb"&&l.jsx("div",{style:{display:"flex",gap:6},children:[{label:"R",val:C.r,max:255,fn:c=>B(X({...C,r:c}))},{label:"G",val:C.g,max:255,fn:c=>B(X({...C,g:c}))},{label:"B",val:C.b,max:255,fn:c=>B(X({...C,b:c}))},{label:"A",val:_,max:100,fn:c=>B({...h,a:c/100})}].map(({label:c,val:m,max:z,fn:I})=>l.jsx(K,{size:"sm",type:"number",prefix:c,value:m,min:0,max:z,onChange:F=>{const P=+F.target.value;!isNaN(P)&&P>=0&&P<=z&&I(P)},className:"lucent-cp-field",style:{flex:1}},c))}),M==="hsl"&&l.jsx("div",{style:{display:"flex",gap:6},children:[{label:"H",val:O.h,max:360,fn:c=>{const{r:m,g:z,b:I}=ge(c,O.s,O.l);B(X({r:m,g:z,b:I,a:h.a}))}},{label:"S",val:O.s,max:100,fn:c=>{const{r:m,g:z,b:I}=ge(O.h,c,O.l);B(X({r:m,g:z,b:I,a:h.a}))}},{label:"L",val:O.l,max:100,fn:c=>{const{r:m,g:z,b:I}=ge(O.h,O.s,c);B(X({r:m,g:z,b:I,a:h.a}))}},{label:"A",val:_,max:100,fn:c=>B({...h,a:c/100})}].map(({label:c,val:m,max:z,fn:I})=>l.jsx(K,{size:"sm",type:"number",prefix:c,value:m,min:0,max:z,onChange:F=>{const P=+F.target.value;!isNaN(P)&&P>=0&&P<=z&&I(P)},className:"lucent-cp-field",style:{flex:1}},c))}),M==="hsb"&&l.jsx("div",{style:{display:"flex",gap:6},children:[{label:"H",val:h.h,max:360,fn:c=>B({...h,h:c})},{label:"S",val:h.s,max:100,fn:c=>B({...h,s:c})},{label:"B",val:h.v,max:100,fn:c=>B({...h,v:c})},{label:"A",val:_,max:100,fn:c=>B({...h,a:c/100})}].map(({label:c,val:m,max:z,fn:I})=>l.jsx(K,{size:"sm",type:"number",prefix:c,value:m,min:0,max:z,onChange:F=>{const P=+F.target.value;!isNaN(P)&&P>=0&&P<=z&&I(P)},className:"lucent-cp-field",style:{flex:1}},c))}),o.length>0&&l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[o.length>1&&l.jsx(Ie,{size:"sm",value:String(y),onChange:c=>x(Number(c.target.value)),options:o.map((c,m)=>({value:String(m),label:c.label}))}),o.length===1&&l.jsx("span",{style:{fontSize:"var(--lucent-font-size-xs)",fontWeight:"var(--lucent-font-weight-medium)",color:"var(--lucent-text-secondary)",fontFamily:"var(--lucent-font-family-base)"},children:(T=o[0])==null?void 0:T.label}),l.jsx("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:(((L=o[y])==null?void 0:L.colors)??[]).map(c=>{const m=Re(c).toLowerCase()===ae.slice(0,7).toLowerCase();return l.jsx(ne,{color:c,selected:m,onClick:()=>B(X(rt(c)))},c)})})]})]})]}),i??document.body)]})}ot.displayName="ColorPicker";function ha({tabs:e,defaultValue:t,value:s,onChange:a,variant:n="underline",style:r}){var _;const o=s!==void 0,[i,d]=b.useState(t??((_=e[0])==null?void 0:_.value)??""),u=o?s:i,[f,g]=b.useState(null),v=b.useRef([]),[p,S]=b.useState(null),M=b.useRef(!1),k=n==="pills",y=b.useRef(null),x=b.useRef(null),h=b.useRef(null),[D,$]=b.useState(e.length),[A,N]=b.useState(!1),[E,H]=b.useState(!1),[Y,V]=b.useState(null),B=e.slice(0,D),W=e.slice(D),U=W.length>0,C=W.some(w=>w.value===u),O=()=>{if(C){S(null);return}const w=e.findIndex((T,L)=>L<D&&T.value===u),R=v.current[w];if(R){if(k){const T=R.querySelector("span");if(!T)return;S({left:T.offsetLeft+R.offsetLeft,width:T.offsetWidth,animate:M.current})}else S({left:R.offsetLeft,width:R.offsetWidth,animate:M.current});M.current=!0}};b.useLayoutEffect(()=>{O(),document.fonts.ready.then(O)},[u,D,k]),b.useEffect(()=>{const w=y.current;if(!w)return;const R=()=>{const m=w.clientWidth,z=70;let I=0,F=0;for(let P=0;P<e.length;P++){const Z=v.current[P];if(!Z){F++;continue}const J=Z.offsetWidth;if(P<e.length-1){if(I+J+z>m)break}else if(I+J>m)break;I+=J,F++}if(F>=e.length-1&&F<e.length){let P=0;for(let Z=0;Z<e.length;Z++){const J=v.current[Z];J&&(P+=J.offsetWidth)}P<=m&&(F=e.length)}$(F<1?1:F)};let T;(()=>{T=requestAnimationFrame(()=>{T=requestAnimationFrame(R)})})();const c=new ResizeObserver(R);return c.observe(w),()=>{c.disconnect(),cancelAnimationFrame(T)}},[e]),b.useEffect(()=>{if(!A)return;const w=R=>{h.current&&!h.current.contains(R.target)&&x.current&&!x.current.contains(R.target)&&(N(!1),V(null))};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[A]);const ae=w=>{o||d(w),a==null||a(w)},ye=(w,R)=>{var m;const T=B.map((z,I)=>z.disabled?-1:I).filter(z=>z!==-1),L=T.indexOf(R);let c=-1;w.key==="ArrowRight"&&(c=T[(L+1)%T.length]??-1),w.key==="ArrowLeft"&&(c=T[(L-1+T.length)%T.length]??-1),w.key==="Home"&&(c=T[0]??-1),w.key==="End"&&(c=T[T.length-1]??-1),c!==-1&&(w.preventDefault(),(m=v.current[c])==null||m.focus(),ae(B[c].value))};return l.jsxs("div",{style:{display:"flex",flexDirection:"column",position:"relative",...r},children:[l.jsxs("div",{ref:y,role:"tablist",style:{position:"relative",display:"flex",overflow:"hidden",...k?{padding:"var(--lucent-space-1)"}:{borderBottom:"1px solid var(--lucent-border-default)"}},children:[e.map((w,R)=>{const T=R<D,L=w.value===u,c=w.disabled??!1;return l.jsxs("button",{ref:m=>{v.current[R]=m},role:"tab","aria-selected":L,"aria-controls":`lucent-tabpanel-${w.value}`,id:`lucent-tab-${w.value}`,disabled:c,tabIndex:L&&T?0:-1,onClick:()=>{c||ae(w.value)},onKeyDown:m=>ye(m,R),onMouseEnter:()=>{!c&&T&&g(R)},onMouseLeave:()=>g(null),style:{padding:k?"var(--lucent-space-1) var(--lucent-space-2)":"var(--lucent-space-1) var(--lucent-space-2) var(--lucent-space-3)",background:"none",border:"none",cursor:c?"not-allowed":"pointer",fontFamily:"var(--lucent-font-family-base)",fontSize:"var(--lucent-font-size-md)",fontWeight:L?"var(--lucent-font-weight-medium)":"var(--lucent-font-weight-regular)",color:c?"var(--lucent-text-disabled)":k&&L?"var(--lucent-accent-fg)":L?"var(--lucent-text-primary)":"var(--lucent-text-secondary)",transition:"color var(--lucent-duration-fast) var(--lucent-easing-default)",whiteSpace:"nowrap",outline:"none",position:T?"relative":"absolute",zIndex:L?1:0,...T?{}:{visibility:"hidden",pointerEvents:"none",left:-9999}},children:[l.jsx("span",{style:{display:"block",padding:"var(--lucent-space-1) var(--lucent-space-3)",borderRadius:"var(--lucent-radius-md)",background:!k&&f===R&&!L&&!c?"var(--lucent-surface-secondary)":"transparent",transition:"background var(--lucent-duration-fast) var(--lucent-easing-default)"},children:w.label}),k&&f===R&&!L&&!c&&T&&l.jsx("span",{"aria-hidden":!0,style:{position:"absolute",top:0,bottom:0,left:0,right:0,borderRadius:"var(--lucent-radius-md)",background:"var(--lucent-surface-secondary)",zIndex:-1,transition:"background var(--lucent-duration-fast) var(--lucent-easing-default)"}})]},w.value)}),U&&l.jsx("button",{ref:x,onClick:()=>N(w=>!w),onMouseEnter:()=>H(!0),onMouseLeave:()=>H(!1),style:{padding:k?"var(--lucent-space-1) var(--lucent-space-2)":"var(--lucent-space-1) var(--lucent-space-2) var(--lucent-space-3)",background:"none",border:"none",cursor:"pointer",fontFamily:"var(--lucent-font-family-base)",fontSize:"var(--lucent-font-size-md)",fontWeight:C?"var(--lucent-font-weight-medium)":"var(--lucent-font-weight-regular)",color:C?"var(--lucent-text-primary)":"var(--lucent-text-secondary)",whiteSpace:"nowrap",outline:"none",position:"relative",flexShrink:0},children:l.jsx("span",{style:{display:"block",padding:"var(--lucent-space-1) var(--lucent-space-3)",borderRadius:"var(--lucent-radius-md)",background:E?"var(--lucent-surface-secondary)":"transparent",transition:"background var(--lucent-duration-fast) var(--lucent-easing-default)"},children:"More…"})}),p!=null&&l.jsx("span",{"aria-hidden":!0,style:k?{position:"absolute",top:"var(--lucent-space-1)",bottom:"var(--lucent-space-1)",left:p.left,width:p.width,background:"var(--lucent-accent-default)",borderRadius:"var(--lucent-radius-md)",transition:p.animate?"left 220ms var(--lucent-easing-default), width 220ms var(--lucent-easing-default)":"none"}:{position:"absolute",bottom:0,left:p.left,width:p.width,height:2,background:"var(--lucent-accent-default)",borderRadius:"var(--lucent-radius-sm)",transition:p.animate?"left 220ms var(--lucent-easing-default), width 220ms var(--lucent-easing-default)":"none"}})]}),U&&A&&l.jsx("div",{ref:h,style:{position:"absolute",top:"100%",right:0,zIndex:50,marginTop:"var(--lucent-space-1)",background:"var(--lucent-surface-primary)",border:"1px solid var(--lucent-border-default)",borderRadius:"var(--lucent-radius-md)",boxShadow:"var(--lucent-shadow-md)",padding:"var(--lucent-space-1) 0",minWidth:140},children:W.map((w,R)=>{const T=w.value===u,L=w.disabled??!1,c=Y===R;return l.jsx("button",{disabled:L,onClick:()=>{L||(ae(w.value),N(!1))},onMouseEnter:()=>{L||V(R)},onMouseLeave:()=>V(null),style:{display:"block",width:"100%",padding:"var(--lucent-space-2) var(--lucent-space-4)",background:T||c?"var(--lucent-surface-secondary)":"none",border:"none",cursor:L?"not-allowed":"pointer",fontFamily:"var(--lucent-font-family-base)",fontSize:"var(--lucent-font-size-md)",fontWeight:T?"var(--lucent-font-weight-medium)":"var(--lucent-font-weight-regular)",color:L?"var(--lucent-text-disabled)":T||c?"var(--lucent-text-primary)":"var(--lucent-text-secondary)",textAlign:"left",outline:"none",transition:"background var(--lucent-duration-fast) var(--lucent-easing-default), color var(--lucent-duration-fast) var(--lucent-easing-default)"},children:w.label},w.value)})}),e.some(w=>w.content!=null)&&e.map(w=>l.jsx("div",{role:"tabpanel",id:`lucent-tabpanel-${w.value}`,"aria-labelledby":`lucent-tab-${w.value}`,hidden:w.value!==u,style:{padding:"var(--lucent-space-4) 0",outline:"none"},tabIndex:0,children:w.content},w.value))]})}const va={fontFamilyBase:'"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontFamilyMono:'"DM Mono", "Fira Code", "Cascadia Code", monospace',fontFamilyDisplay:'"Georama", "DM Sans", sans-serif',fontSizeXs:"0.75rem",fontSizeSm:"0.875rem",fontSizeMd:"1rem",fontSizeLg:"1.125rem",fontSizeXl:"1.25rem",fontSize2xl:"1.5rem",fontSize3xl:"1.875rem",fontWeightRegular:"400",fontWeightMedium:"500",fontWeightSemibold:"600",fontWeightBold:"700",lineHeightTight:"1.25",lineHeightBase:"1.5",lineHeightRelaxed:"1.75",letterSpacingTight:"-0.02em",letterSpacingBase:"0em",letterSpacingWide:"0.04em"},ya={space0:"0px",space1:"0.25rem",space2:"0.5rem",space3:"0.75rem",space4:"1rem",space5:"1.25rem",space6:"1.5rem",space8:"2rem",space10:"2.5rem",space12:"3rem",space16:"4rem",space20:"5rem",space24:"6rem"},wa={radiusNone:"0px",radiusSm:"0.25rem",radiusMd:"0.375rem",radiusLg:"0.5rem",radiusXl:"0.75rem",radiusFull:"9999px"},Sa={durationFast:"100ms",durationBase:"200ms",durationSlow:"350ms",easingDefault:"cubic-bezier(0.4, 0, 0.2, 1)",easingEmphasized:"cubic-bezier(0.2, 0, 0, 1)",easingDecelerate:"cubic-bezier(0, 0, 0.2, 1)"},lt={shadowNone:"none",shadowSm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",shadowMd:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",shadowLg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",shadowXl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"},ct={shadowNone:"none",shadowSm:"inset 0 1px 0 0 rgba(255, 255, 255, 0.04), 0 1px 2px 0 rgba(0, 0, 0, 0.2)",shadowMd:"inset 0 1px 0 0 rgba(255, 255, 255, 0.06), 0 2px 4px -1px rgba(0, 0, 0, 0.25)",shadowLg:"inset 0 1px 0 0 rgba(255, 255, 255, 0.08), 0 4px 8px -2px rgba(0, 0, 0, 0.3)",shadowXl:"inset 0 1px 0 0 rgba(255, 255, 255, 0.1), 0 8px 16px -4px rgba(0, 0, 0, 0.35)"},re={...va,...ya,...wa,...Sa,...lt,bgBase:"#ffffff",bgSubtle:"#f9fafb",bgOverlay:"rgb(0 0 0 / 0.4)",surface:"#ffffff",surfaceSecondary:"#f3f4f6",surfaceRaised:"#ffffff",surfaceOverlay:"#ffffff",surfaceTint:"#f2f2f2",borderDefault:"#e5e7eb",borderSubtle:"#f3f4f6",borderStrong:"#9ca3af",controlTrack:"#d1d5db",textPrimary:"#111827",textSecondary:"#6b7280",textDisabled:"#d1d5db",textInverse:"#ffffff",accentDefault:"#111827",accentHover:"#1f2937",accentSubtle:"#f3f4f6",accentBorder:"#111827",accentFg:"#ffffff",successDefault:"#16a34a",successSubtle:"#f0fdf4",successText:"#15803d",warningDefault:"#d97706",warningSubtle:"#fffbeb",warningText:"#b45309",dangerDefault:"#dc2626",dangerHover:"#b91c1c",dangerSubtle:"#fef2f2",dangerText:"#b91c1c",infoDefault:"#2563eb",infoSubtle:"#eff6ff",infoText:"#1d4ed8"};function ka(e){const t=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return{r:t,g:s,b:a}}function Da({r:e,g:t,b:s}){const a=n=>n.toString(16).padStart(2,"0");return`#${a(e)}${a(t)}${a(s)}`}function G(e){const{r:t,g:s,b:a}=ka(e),n=t/255,r=s/255,o=a/255,i=Math.max(n,r,o),d=Math.min(n,r,o);let u=0,f=0;const g=(i+d)/2;if(i!==d){const v=i-d;switch(f=g>.5?v/(2-i-d):v/(i+d),i){case n:u=(r-o)/v+(r<o?6:0);break;case r:u=(o-n)/v+2;break;case o:u=(n-r)/v+4;break}u/=6}return[u*360,f,g]}function q(e,t,s){e=(e%360+360)%360,t=Math.min(1,Math.max(0,t)),s=Math.min(1,Math.max(0,s));const a=(1-Math.abs(2*s-1))*t,n=a*(1-Math.abs(e/60%2-1)),r=s-a/2;let o=0,i=0,d=0;return e<60?(o=a,i=n):e<120?(o=n,i=a):e<180?(i=a,d=n):e<240?(i=n,d=a):e<300?(o=n,d=a):(o=a,d=n),Da({r:Math.round((o+r)*255),g:Math.round((i+r)*255),b:Math.round((d+r)*255)})}function j(e,t){const[s,a,n]=G(e);return q(s,a,Math.min(1,Math.max(0,n+t)))}const Ma=222,ja=.12;function it(e,t){return t<.04?[Ma,ja]:[e,t]}function Ta(e){const[t,s,a]=G(e),[n,r]=it(t,s);return q(n,r,Math.max(.04,Math.min(.2,.07+(1-a))))}function ke(e){const[t,s,a]=G(e),[n,r]=it(t,s);return q(n,r,Math.max(.06,Math.min(.5,(1-a)*.6+.06)))}function De(e){const[t,s,a]=G(e);return q(t,s,Math.max(.04,Math.min(.97,1-a+.04)))}function Me(e){const[t,s,a]=G(e);return q(t,s,Math.max(.02,Math.min(.98,1-a)))}function ut(e){const t=Ta(e.bgBase),[s,a,n]=G(t),r=o=>q(s,a,Math.min(.25,n+o));return{...e,...ct,bgBase:t,bgSubtle:r(.02),bgOverlay:"rgb(0 0 0 / 0.6)",surface:r(.02),surfaceSecondary:r(.05),surfaceRaised:r(.08),surfaceOverlay:r(.08),surfaceTint:r(.03),borderDefault:ke(e.borderDefault),borderSubtle:ke(e.borderSubtle),borderStrong:ke(e.borderStrong),controlTrack:r(.1),textPrimary:De(e.textPrimary),textSecondary:De(e.textSecondary),textDisabled:De(e.textDisabled),textInverse:t,accentDefault:Me(e.accentDefault),accentHover:Me(e.accentHover),accentSubtle:Me(e.accentSubtle),accentBorder:e.accentBorder,accentFg:e.accentFg,successDefault:j(e.successDefault,.1),successSubtle:j(e.successDefault,-.25),successText:j(e.successText,.15),warningDefault:j(e.warningDefault,.1),warningSubtle:j(e.warningDefault,-.25),warningText:j(e.warningText,.15),dangerDefault:j(e.dangerDefault,.1),dangerHover:j(e.dangerHover,.1),dangerSubtle:j(e.dangerDefault,-.25),dangerText:j(e.dangerText,.15),infoDefault:j(e.infoDefault,.1),infoSubtle:j(e.infoDefault,-.25),infoText:j(e.infoText,.15)}}const $e=ut(re);function dt(e){return"--lucent-"+e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`).replace(/([a-z])(\d)/g,(t,s,a)=>`${s}-${a}`)}function ft(e,t=":root"){const s=Object.entries(e).map(([a,n])=>` ${dt(a)}: ${n};`).join(`
|
|
106
|
-
`);return`${t} {
|
|
107
|
-
${s}
|
|
108
|
-
}`}function za(e){const t=parseInt(e.slice(1,3),16)/255,s=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,n=r=>r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4);return .2126*n(t)+.7152*n(s)+.0722*n(a)}const Ia=.2126729,Ba=.7151522,Ra=.072175,$a=.56,La=.57,Pa=.65,Ca=.62,et=.022,Fa=1.414,Ha=1.14,Wa=1.14,tt=.027,at=.027;function nt(e){const t=parseInt(e.slice(1,3),16)/255,s=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,n=Math.pow(t,2.4),r=Math.pow(s,2.4),o=Math.pow(a,2.4);let i=Ia*n+Ba*r+Ra*o;return i<0&&(i=0),i<et?i+Math.pow(et-i,Fa):i}function xe(e,t){const s=nt(e),a=nt(t);let n;if(s>a){const r=(Math.pow(s,$a)-Math.pow(a,La))*Ha;n=r<tt?0:r-tt}else{const r=(Math.pow(s,Pa)-Math.pow(a,Ca))*Wa;n=r>-at?0:r+at}return n*100}function pt(e){const t=Math.abs(xe(e,"#ffffff")),s=Math.abs(xe(e,"#000000"));return t>=s?"#ffffff":"#000000"}function Le(e){const t=parseInt(e.slice(1,3),16)/255,s=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,n=Math.max(t,s,a),r=Math.min(t,s,a);let o=0,i=0;if(n!==r){const u=n-r;i=(n+r)/2>.5?u/(2-n-r):u/(n+r),n===t?o=((s-a)/u+(s<a?6:0))/6:n===s?o=((a-t)/u+2)/6:o=((t-s)/u+4)/6}return pt(e)==="#000000"?Te(o,Math.min(i,.6),.12):Te(o,Math.min(i,.2),.95)}function gt(e,t,s=60){if(Math.abs(xe(e,t))>=s)return e;const a=parseInt(e.slice(1,3),16)/255,n=parseInt(e.slice(3,5),16)/255,r=parseInt(e.slice(5,7),16)/255,o=Math.max(a,n,r),i=Math.min(a,n,r);let d=0,u=0,f=(o+i)/2;if(o!==i){const p=o-i;u=f>.5?p/(2-o-i):p/(o+i),o===a?d=((n-r)/p+(n<r?6:0))/6:o===n?d=((r-a)/p+2)/6:d=((a-n)/p+4)/6}const v=za(t)>.5?-.005:.005;for(let p=0;p<100;p++){f=Math.min(1,Math.max(0,f+v));const S=Te(d,u,f);if(Math.abs(xe(S,t))>=s)return S}return e}function Te(e,t,s){const a=(d,u,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<.16666666666666666?d+(u-d)*6*f:f<.5?u:f<.6666666666666666?d+(u-d)*(.6666666666666666-f)*6:d);let n,r,o;if(t===0)n=r=o=s;else{const d=s<.5?s*(1+t):s+t-s*t,u=2*s-d;n=a(u,d,e+1/3),r=a(u,d,e),o=a(u,d,e-1/3)}const i=d=>Math.round(d*255).toString(16).padStart(2,"0");return`#${i(n)}${i(r)}${i(o)}`}function Ea(e,t){const[s,a,n]=G(e);return t?q(s,a*.3,Math.min(1,n+(1-n)*.85)):q(s,a,Math.min(.25,n+.04))}const me={subtle:{light:.95,dark:.12},text:{light:.28,dark:.78}};function fe(e,t){const[s,a]=G(e);return q(s,a*.5,t?me.subtle.light:me.subtle.dark)}function pe(e,t){const[s,a]=G(e);return q(s,a,t?me.text.light:me.text.dark)}function Pe(e,t,s){const a={},n=s==="light";if("borderDefault"in e&&("borderSubtle"in e||(a.borderSubtle=j(t.borderDefault,n?.05:-.02)),"borderStrong"in e||(a.borderStrong=j(t.borderDefault,n?-.27:.19))),"bgBase"in e&&("bgSubtle"in e||(a.bgSubtle=j(t.bgBase,n?-.02:.02)),"surfaceTint"in e||(a.surfaceTint=j(t.bgBase,n?-.04:.03)),!("surface"in e))){const r=Ea(t.bgBase,n);a.surface=r,"surfaceSecondary"in e||(a.surfaceSecondary=j(r,n?-.04:.03)),"surfaceRaised"in e||(a.surfaceRaised=j(r,n?0:.06)),"surfaceOverlay"in e||(a.surfaceOverlay=j(r,n?0:.06))}return"surface"in e&&("surfaceSecondary"in e||(a.surfaceSecondary=j(t.surface,n?-.04:.03)),"surfaceRaised"in e||(a.surfaceRaised=j(t.surface,n?0:.06)),"surfaceOverlay"in e||(a.surfaceOverlay=j(t.surface,n?0:.06))),"textPrimary"in e&&("textSecondary"in e||(a.textSecondary=j(t.textPrimary,n?.2:-.15)),"textDisabled"in e||(a.textDisabled=j(t.textPrimary,n?.58:-.62))),"accentDefault"in e&&("accentHover"in e||(a.accentHover=j(t.accentDefault,n?.05:-.07)),"accentSubtle"in e||(a.accentSubtle=j(t.accentDefault,n?.85:-.6))),"successDefault"in e&&("successSubtle"in e||(a.successSubtle=fe(t.successDefault,n)),"successText"in e||(a.successText=pe(t.successDefault,n))),"warningDefault"in e&&("warningSubtle"in e||(a.warningSubtle=fe(t.warningDefault,n)),"warningText"in e||(a.warningText=pe(t.warningDefault,n))),"dangerDefault"in e&&("dangerHover"in e||(a.dangerHover=j(t.dangerDefault,n?.05:-.07)),"dangerSubtle"in e||(a.dangerSubtle=fe(t.dangerDefault,n)),"dangerText"in e||(a.dangerText=pe(t.dangerDefault,n))),"infoDefault"in e&&("infoSubtle"in e||(a.infoSubtle=fe(t.infoDefault,n)),"infoText"in e||(a.infoText=pe(t.infoDefault,n))),a}function Ce(e,t="light"){const a={...t==="dark"?$e:re,...e},n=Pe(e,a,t),r=t==="light"?j(a.accentDefault,-.15):j(a.accentDefault,.15);return{...a,...n,accentFg:Le(a.accentDefault),accentBorder:r}}const Fe={name:"default",light:{bgBase:"#ffffff",surface:"#ffffff",borderDefault:"#e5e7eb",accentDefault:"#111827",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#111318",surface:"#181a20",borderDefault:"#2e3039",accentDefault:"#f9fafb",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},bt={name:"brand",light:{bgBase:"#fffefb",surface:"#fffdf7",borderDefault:"#e8e3d6",accentDefault:"#e9c96b",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#151310",surface:"#1c1a15",borderDefault:"#33302a",accentDefault:"#e9c96b",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},se={name:"indigo",light:{bgBase:"#fdfcff",surface:"#faf9fe",borderDefault:"#e0dde9",accentDefault:"#6366f1",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#12111a",surface:"#191820",borderDefault:"#2e2d3a",accentDefault:"#818cf8",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},xt={name:"violet",light:{bgBase:"#fdfcfe",surface:"#faf8fd",borderDefault:"#e2dce9",accentDefault:"#8b5cf6",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#13111a",surface:"#1a1822",borderDefault:"#302d3b",accentDefault:"#a78bfa",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},He={name:"emerald",light:{bgBase:"#fbfefc",surface:"#f7fcf9",borderDefault:"#dbe8df",accentDefault:"#10b981",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#0f1512",surface:"#151c18",borderDefault:"#263330",accentDefault:"#34d399",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},Na={name:"teal",light:{bgBase:"#fbfefd",surface:"#f6fcfa",borderDefault:"#d4e5e0",accentDefault:"#0d9488",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#0f1514",surface:"#161d1c",borderDefault:"#283836",accentDefault:"#2dd4bf",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},We={name:"rose",light:{bgBase:"#fffcfd",surface:"#fef9fa",borderDefault:"#ecdde1",accentDefault:"#f43f5e",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#161012",surface:"#1d1518",borderDefault:"#3a282e",accentDefault:"#fb7185",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},mt={name:"coral",light:{bgBase:"#fffcfb",surface:"#fef9f7",borderDefault:"#e9ddd8",accentDefault:"#e8624a",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#b91c1c",infoDefault:"#2563eb"},dark:{bgBase:"#171210",surface:"#1e1816",borderDefault:"#3b312c",accentDefault:"#f38b76",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},Aa={name:"amber",light:{bgBase:"#fffefb",surface:"#fefcf6",borderDefault:"#e8e1d0",accentDefault:"#d97706",successDefault:"#16a34a",warningDefault:"#b45309",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#171310",surface:"#1e1a15",borderDefault:"#3a3329",accentDefault:"#f59e0b",successDefault:"#22c55e",warningDefault:"#d97706",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},Ee={name:"ocean",light:{bgBase:"#fbfdff",surface:"#f6fafd",borderDefault:"#d9e4ec",accentDefault:"#0ea5e9",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#0e1318",surface:"#141a20",borderDefault:"#243038",accentDefault:"#38bdf8",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},ht={name:"slate",light:{bgBase:"#fafbfc",surface:"#f7f8fa",borderDefault:"#dde1e6",accentDefault:"#475569",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#0f1116",surface:"#161920",borderDefault:"#2b3040",accentDefault:"#94a3b8",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},Oa={name:"sage",light:{bgBase:"#fbfcfb",surface:"#f5f7f5",borderDefault:"#d8ddd6",accentDefault:"#5f8c6e",successDefault:"#16a34a",warningDefault:"#d97706",dangerDefault:"#dc2626",infoDefault:"#2563eb"},dark:{bgBase:"#101410",surface:"#171c17",borderDefault:"#2c372c",accentDefault:"#86b394",successDefault:"#22c55e",warningDefault:"#f59e0b",dangerDefault:"#ef4444",infoDefault:"#3b82f6"}},oe={name:"sharp",tokens:{radiusNone:"0px",radiusSm:"0.125rem",radiusMd:"0.1875rem",radiusLg:"0.25rem",radiusXl:"0.375rem",radiusFull:"9999px"}},ee={name:"rounded",tokens:{radiusNone:"0px",radiusSm:"0.25rem",radiusMd:"0.375rem",radiusLg:"0.5rem",radiusXl:"0.75rem",radiusFull:"9999px"}},le={name:"pill",tokens:{radiusNone:"0px",radiusSm:"0.5rem",radiusMd:"0.75rem",radiusLg:"1rem",radiusXl:"1.5rem",radiusFull:"9999px"}},ce={name:"compact",tokens:{space0:"0px",space1:"0.1rem",space2:"0.25rem",space3:"0.6rem",space4:"0.8rem",space5:"1rem",space6:"1.2rem",space8:"1.6rem",space10:"2rem",space12:"2.4rem",space16:"3.2rem",space20:"4rem",space24:"4.8rem"}},te={name:"default",tokens:{space0:"0px",space1:"0.25rem",space2:"0.5rem",space3:"0.75rem",space4:"1rem",space5:"1.25rem",space6:"1.5rem",space8:"2rem",space10:"2.5rem",space12:"3rem",space16:"4rem",space20:"5rem",space24:"6rem"}},ie={name:"spacious",tokens:{space0:"0px",space1:"0.375rem",space2:"0.75rem",space3:"1.125rem",space4:"1.25rem",space5:"1.5625rem",space6:"1.875rem",space8:"2.5rem",space10:"3.125rem",space12:"3.75rem",space16:"5rem",space20:"6.25rem",space24:"7.5rem"}},he={name:"flat",light:{shadowNone:"none",shadowSm:"none",shadowMd:"none",shadowLg:"none",shadowXl:"none"},dark:{shadowNone:"none",shadowSm:"none",shadowMd:"none",shadowLg:"none",shadowXl:"none"}},Ne={name:"subtle",light:{shadowNone:"none",shadowSm:"rgba(17, 17, 26, 0.04) 0px 2px 8px, rgba(17, 17, 26, 0.02) 0px 4px 16px",shadowMd:"rgba(17, 17, 26, 0.06) 0px 4px 16px, rgba(17, 17, 26, 0.03) 0px 8px 32px",shadowLg:"rgba(17, 17, 26, 0.06) 0px 8px 24px, rgba(17, 17, 26, 0.04) 0px 16px 48px",shadowXl:"rgba(17, 17, 26, 0.08) 0px 12px 32px, rgba(17, 17, 26, 0.05) 0px 24px 64px"},dark:{shadowNone:"none",shadowSm:"0 0 20px color-mix(in srgb, var(--lucent-accent-default) 5%, transparent)",shadowMd:"0 0 30px color-mix(in srgb, var(--lucent-accent-default) 7%, transparent), inset 0 1px 0 0 rgba(255, 255, 255, 0.04)",shadowLg:"0 0 40px color-mix(in srgb, var(--lucent-accent-default) 9%, transparent), inset 0 1px 0 0 rgba(255, 255, 255, 0.05)",shadowXl:"0 0 56px color-mix(in srgb, var(--lucent-accent-default) 12%, transparent), inset 0 1px 0 0 rgba(255, 255, 255, 0.06)"}},Ae={name:"elevated",light:{shadowNone:"none",shadowSm:"rgba(17, 17, 26, 0.05) 0px 2px 8px, rgba(17, 17, 26, 0.03) 0px 4px 16px",shadowMd:"rgba(17, 17, 26, 0.1) 0px 4px 16px, rgba(17, 17, 26, 0.05) 0px 8px 32px",shadowLg:"rgba(17, 17, 26, 0.1) 0px 8px 24px, rgba(17, 17, 26, 0.08) 0px 16px 48px",shadowXl:"rgba(17, 17, 26, 0.12) 0px 12px 32px, rgba(17, 17, 26, 0.1) 0px 24px 64px"},dark:{shadowNone:"none",shadowSm:"inset 0 1px 0 0 rgba(255, 255, 255, 0.06), inset 0 0 12px rgba(255, 255, 255, 0.02)",shadowMd:"inset 0 1px 0 0 rgba(255, 255, 255, 0.08), inset 0 0 20px rgba(255, 255, 255, 0.03), 0 0 1px rgba(255, 255, 255, 0.06)",shadowLg:"inset 0 1px 0 0 rgba(255, 255, 255, 0.1), inset 0 0 28px rgba(255, 255, 255, 0.04), 0 0 1px rgba(255, 255, 255, 0.08)",shadowXl:"inset 0 1px 0 0 rgba(255, 255, 255, 0.12), inset 0 0 36px rgba(255, 255, 255, 0.05), 0 0 1px rgba(255, 255, 255, 0.1)"}},Oe={name:"liquidGlass",light:{shadowNone:"none",shadowSm:"0 4px 30px rgba(0, 0, 0, 0.04)",shadowMd:"0 8px 50px rgba(0, 0, 0, 0.05), 0 2px 10px rgba(0, 0, 0, 0.02)",shadowLg:"0 12px 60px rgba(0, 0, 0, 0.06), 0 4px 20px rgba(0, 0, 0, 0.03)",shadowXl:"0 20px 80px rgba(0, 0, 0, 0.08), 0 8px 30px rgba(0, 0, 0, 0.04)"},dark:{shadowNone:"none",shadowSm:"inset 0 1px 0 0 rgba(255, 255, 255, 0.06), 0 0 30px rgba(255, 255, 255, 0.02)",shadowMd:"inset 0 1px 0 0 rgba(255, 255, 255, 0.08), inset 0 0 20px rgba(255, 255, 255, 0.02), 0 0 40px rgba(255, 255, 255, 0.03)",shadowLg:"inset 0 1px 0 0 rgba(255, 255, 255, 0.1), inset 0 0 30px rgba(255, 255, 255, 0.03), 0 0 50px rgba(255, 255, 255, 0.04)",shadowXl:"inset 0 1px 0 0 rgba(255, 255, 255, 0.12), inset 0 0 40px rgba(255, 255, 255, 0.04), 0 0 70px rgba(255, 255, 255, 0.05)"}},Xe={name:"brutalist",light:{shadowNone:"none",shadowSm:"0 0 0 2px var(--lucent-text-primary), 3px 3px 0 0 color-mix(in srgb, var(--lucent-accent-default) 50%, transparent)",shadowMd:"0 0 0 2px var(--lucent-text-primary), 5px 5px 0 0 color-mix(in srgb, var(--lucent-accent-default) 60%, transparent)",shadowLg:"0 0 0 3px var(--lucent-text-primary), 6px 6px 0 0 color-mix(in srgb, var(--lucent-accent-default) 70%, transparent)",shadowXl:"0 0 0 3px var(--lucent-text-primary), 8px 8px 0 0 color-mix(in srgb, var(--lucent-accent-default) 80%, transparent)"},dark:{shadowNone:"none",shadowSm:"0 0 0 2px color-mix(in srgb, var(--lucent-accent-default) 60%, transparent), 3px 3px 0 0 color-mix(in srgb, var(--lucent-accent-default) 30%, transparent)",shadowMd:"0 0 0 2px color-mix(in srgb, var(--lucent-accent-default) 65%, transparent), 5px 5px 0 0 color-mix(in srgb, var(--lucent-accent-default) 35%, transparent)",shadowLg:"0 0 0 3px color-mix(in srgb, var(--lucent-accent-default) 70%, transparent), 6px 6px 0 0 color-mix(in srgb, var(--lucent-accent-default) 40%, transparent)",shadowXl:"0 0 0 3px color-mix(in srgb, var(--lucent-accent-default) 75%, transparent), 8px 8px 0 0 color-mix(in srgb, var(--lucent-accent-default) 45%, transparent)"}},qe={name:"neumorphic",light:{shadowNone:"none",shadowSm:"3px 3px 8px #d1d5db, -3px -3px 8px #ffffff",shadowMd:"5px 5px 14px #d1d5db, -5px -5px 14px #ffffff",shadowLg:"8px 8px 20px #d1d5db, -8px -8px 20px #ffffff",shadowXl:"12px 12px 28px #d1d5db, -12px -12px 28px #ffffff"},dark:{shadowNone:"none",shadowSm:"3px 3px 10px color-mix(in srgb, var(--lucent-accent-default) 12%, transparent), -3px -3px 10px rgba(255, 255, 255, 0.03)",shadowMd:"5px 5px 16px color-mix(in srgb, var(--lucent-accent-default) 15%, transparent), -5px -5px 16px rgba(255, 255, 255, 0.04)",shadowLg:"8px 8px 24px color-mix(in srgb, var(--lucent-accent-default) 18%, transparent), -8px -8px 24px rgba(255, 255, 255, 0.05)",shadowXl:"12px 12px 32px color-mix(in srgb, var(--lucent-accent-default) 22%, transparent), -12px -12px 32px rgba(255, 255, 255, 0.06)"}},Ue={name:"natural",light:{shadowNone:"none",shadowSm:"0 1px 1px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.06)",shadowMd:"0 1px 2px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.06), 0 4px 8px rgba(0, 0, 0, 0.06)",shadowLg:"0 1px 2px rgba(0, 0, 0, 0.05), 0 2px 4px rgba(0, 0, 0, 0.05), 0 4px 8px rgba(0, 0, 0, 0.05), 0 8px 16px rgba(0, 0, 0, 0.05)",shadowXl:"0 1px 2px rgba(0, 0, 0, 0.04), 0 2px 4px rgba(0, 0, 0, 0.04), 0 4px 8px rgba(0, 0, 0, 0.04), 0 8px 16px rgba(0, 0, 0, 0.04), 0 16px 32px rgba(0, 0, 0, 0.04)"},dark:{shadowNone:"none",shadowSm:"inset 0 1px 0 0 rgba(255, 255, 255, 0.05), inset 0 0 0 1px rgba(255, 255, 255, 0.03)",shadowMd:"inset 0 1px 0 0 rgba(255, 255, 255, 0.07), inset 0 0 0 1px rgba(255, 255, 255, 0.04), 0 1px 3px rgba(0, 0, 0, 0.15)",shadowLg:"inset 0 1px 0 0 rgba(255, 255, 255, 0.09), inset 0 0 0 1px rgba(255, 255, 255, 0.05), inset 0 0 16px rgba(255, 255, 255, 0.02), 0 2px 6px rgba(0, 0, 0, 0.15)",shadowXl:"inset 0 1px 0 0 rgba(255, 255, 255, 0.12), inset 0 0 0 1px rgba(255, 255, 255, 0.06), inset 0 0 24px rgba(255, 255, 255, 0.03), 0 4px 10px rgba(0, 0, 0, 0.15)"}},ve={name:"glow",light:{shadowNone:"none",shadowSm:"0 1px 3px rgba(0, 0, 0, 0.06), 0 0 12px color-mix(in srgb, var(--lucent-accent-default) 12%, transparent)",shadowMd:"0 2px 6px rgba(0, 0, 0, 0.06), 0 0 20px color-mix(in srgb, var(--lucent-accent-default) 16%, transparent)",shadowLg:"0 4px 10px rgba(0, 0, 0, 0.06), 0 0 30px color-mix(in srgb, var(--lucent-accent-default) 20%, transparent)",shadowXl:"0 6px 14px rgba(0, 0, 0, 0.06), 0 0 44px color-mix(in srgb, var(--lucent-accent-default) 25%, transparent)"},dark:{shadowNone:"none",shadowSm:"0 0 16px color-mix(in srgb, var(--lucent-accent-default) 20%, transparent)",shadowMd:"0 0 24px color-mix(in srgb, var(--lucent-accent-default) 28%, transparent)",shadowLg:"0 0 36px color-mix(in srgb, var(--lucent-accent-default) 35%, transparent)",shadowXl:"0 0 50px color-mix(in srgb, var(--lucent-accent-default) 40%, transparent)"}},vt={name:"modern",palette:se,shape:ee,density:te,shadow:Ne},yt={name:"enterprise",palette:Fe,shape:oe,density:ce,shadow:he},wt={name:"playful",palette:We,shape:le,density:ie,shadow:Ae},St={name:"liquidGlass",palette:Ee,shape:le,density:ie,shadow:Oe},kt={name:"bento",palette:se,shape:ee,density:te,shadow:Ue},Dt={name:"brutalist",palette:mt,shape:oe,density:ce,shadow:Xe},Mt={name:"terminal",palette:He,shape:oe,density:ce,shadow:ve},jt={name:"softUI",palette:xt,shape:le,density:te,shadow:qe},Tt={name:"bloom",palette:se,shape:ee,density:ie,shadow:ve},zt={name:"minimal",palette:ht,shape:ee,density:te,shadow:he},Xa={default:Fe,brand:bt,indigo:se,violet:xt,emerald:He,teal:Na,rose:We,coral:mt,amber:Aa,ocean:Ee,slate:ht,sage:Oa},qa={sharp:oe,rounded:ee,pill:le},Ua={compact:ce,default:te,spacious:ie},Ga={flat:he,subtle:Ne,elevated:Ae,liquidGlass:Oe,brutalist:Xe,neumorphic:qe,natural:Ue,glow:ve},Va={modern:vt,enterprise:yt,playful:wt,liquidGlass:St,bento:kt,brutalist:Dt,terminal:Mt,softUI:jt,bloom:Tt,minimal:zt};function _a(e){return typeof e=="string"?Xa[e]:e}function Ka(e){return typeof e=="string"?qa[e]:e}function Ya(e){return typeof e=="string"?Ua[e]:e}function Za(e){return typeof e=="string"?Ga[e]:e}function It(e,t){let s,a,n,r;if(typeof e=="string"){const i=Va[e];if(!i)return{};s=i.palette,a=i.shape,n=i.density,r=i.shadow}else e.palette!==void 0&&(s=_a(e.palette)),e.shape!==void 0&&(a=Ka(e.shape)),e.density!==void 0&&(n=Ya(e.density)),e.shadow!==void 0&&(r=Za(e.shadow));const o={};if(s){const i=Ce(s[t],t);Object.assign(o,i)}return a&&Object.assign(o,a.tokens),n&&Object.assign(o,n.tokens),r&&Object.assign(o,r[t]),o}const Bt=b.createContext({theme:"light",tokens:re});function Ja({theme:e="light",preset:t,tokens:s,anchors:a,children:n}){const r=b.useId().replace(/:/g,""),o=t?It(t,e):void 0,i=(()=>{if(a){const k=Ce(a,e);if(o){const y={};for(const[x,h]of Object.entries(o))(x.startsWith("space")||x.startsWith("radius")||x.startsWith("shadow")||x.startsWith("duration")||x.startsWith("easing"))&&(y[x]=h);return{...k,...y}}return k}const u=e==="dark"?$e:re,f=o?{...o,...s}:s,g=f?{...u,...f}:u,v=f?Pe(f,g,e):{},p=(f==null?void 0:f.accentBorder)??(e==="light"?j(g.accentDefault,-.15):j(g.accentDefault,.15)),S=(f==null?void 0:f.accentFg)??Le(g.accentDefault),M=gt(g.accentDefault,S);return{...g,...v,accentDefault:M,accentFg:S,accentBorder:p}})(),d=`html { font-size: 14px; }
|
|
109
|
-
`+ft(i,":root");return b.useLayoutEffect(()=>{let u=document.getElementById(`lucent-tokens-${r}`);return u||(u=document.createElement("style"),u.id=`lucent-tokens-${r}`,document.head.appendChild(u)),u.textContent=d,()=>{var f;(f=document.getElementById(`lucent-tokens-${r}`))==null||f.remove()}},[r,d]),l.jsx(Bt.Provider,{value:{theme:e,tokens:i},children:n})}function Qa(){return b.useContext(Bt)}exports.Badge=Xt;exports.Button=ze;exports.ColorPicker=ot;exports.ColorSwatch=ne;exports.Input=K;exports.LucentProvider=Ja;exports.SegmentedControl=Be;exports.Select=Ie;exports.Slider=sa;exports.Tabs=ha;exports.Text=ta;exports.Toggle=Vt;exports.adjustLightness=j;exports.bentoPreset=kt;exports.bloomPreset=Tt;exports.brandPalette=bt;exports.brutalistPreset=Dt;exports.brutalistShadow=Xe;exports.compactDensity=ce;exports.createTheme=Ce;exports.darkShadowTokens=ct;exports.darkTokens=$e;exports.defaultDensity=te;exports.defaultPalette=Fe;exports.deriveDarkFromLight=ut;exports.deriveTokens=Pe;exports.elevatedShadow=Ae;exports.emeraldPalette=He;exports.ensureContrast=gt;exports.enterprisePreset=yt;exports.flatShadow=he;exports.getAccentFg=Le;exports.getContrastText=pt;exports.glowShadow=ve;exports.hexToHsl=G;exports.hslToHex=q;exports.indigoPalette=se;exports.lightShadowTokens=lt;exports.lightTokens=re;exports.liquidGlassPreset=St;exports.liquidGlassShadow=Oe;exports.makeLibraryCSS=ft;exports.minimalPreset=zt;exports.modernPreset=vt;exports.naturalShadow=Ue;exports.neumorphicShadow=qe;exports.oceanPalette=Ee;exports.pillShape=le;exports.playfulPreset=wt;exports.resolvePreset=It;exports.rosePalette=We;exports.roundedShape=ee;exports.sharpShape=oe;exports.softUIPreset=jt;exports.spaciousDensity=ie;exports.subtleShadow=Ne;exports.terminalPreset=Mt;exports.tokenToCssVar=dt;exports.useLucent=Qa;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RECIPE as ProfileCard } from '../src/manifest/recipes/profile-card.recipe.js';
|
|
2
|
-
import { RECIPE as SettingsPanel } from '../src/manifest/recipes/settings-panel.recipe.js';
|
|
3
|
-
import { RECIPE as StatsRow } from '../src/manifest/recipes/stats-row.recipe.js';
|
|
4
|
-
import { RECIPE as ActionBar } from '../src/manifest/recipes/action-bar.recipe.js';
|
|
5
|
-
import { RECIPE as FormLayout } from '../src/manifest/recipes/form-layout.recipe.js';
|
|
6
|
-
import { RECIPE as EmptyStateCard } from '../src/manifest/recipes/empty-state-card.recipe.js';
|
|
7
|
-
import { RECIPE as CollapsibleCard } from '../src/manifest/recipes/collapsible-card.recipe.js';
|
|
8
|
-
import { RECIPE as SearchFilterBar } from '../src/manifest/recipes/search-filter-bar.recipe.js';
|
|
9
|
-
export const ALL_RECIPES = [
|
|
10
|
-
ProfileCard,
|
|
11
|
-
SettingsPanel,
|
|
12
|
-
StatsRow,
|
|
13
|
-
ActionBar,
|
|
14
|
-
FormLayout,
|
|
15
|
-
EmptyStateCard,
|
|
16
|
-
CollapsibleCard,
|
|
17
|
-
SearchFilterBar,
|
|
18
|
-
];
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
export const RECIPE = {
|
|
2
|
-
id: 'action-bar',
|
|
3
|
-
name: 'Action Bar',
|
|
4
|
-
description: 'Page-level or card-level header pairing a title with action buttons. Page headers use breadcrumb, large display title, and a divider below; card headers are compact with small text.',
|
|
5
|
-
category: 'action',
|
|
6
|
-
components: ['text', 'button', 'row', 'stack', 'breadcrumb', 'divider', 'card'],
|
|
7
|
-
structure: `
|
|
8
|
-
Page header:
|
|
9
|
-
Stack gap="4"
|
|
10
|
-
├── Breadcrumb ← navigation context
|
|
11
|
-
├── Row justify="between" align="end"
|
|
12
|
-
│ ├── Stack gap="1"
|
|
13
|
-
│ │ ├── Text (h1, 3xl, bold, display) ← page title
|
|
14
|
-
│ │ └── Text (sm, secondary) ← subtitle
|
|
15
|
-
│ └── Row gap="2" ← actions
|
|
16
|
-
│ ├── Button (outline, sm)
|
|
17
|
-
│ └── Button (primary, sm)
|
|
18
|
-
└── Divider
|
|
19
|
-
|
|
20
|
-
Card header:
|
|
21
|
-
Row justify="between" align="start"
|
|
22
|
-
├── Stack gap="1"
|
|
23
|
-
│ ├── Text (xs, secondary, uppercase, tight) ← category label
|
|
24
|
-
│ └── Text (md, semibold, tight) ← section title
|
|
25
|
-
└── Row gap="1" ← compact actions (top-aligned)
|
|
26
|
-
└── Button[] (ghost, xs)
|
|
27
|
-
`.trim(),
|
|
28
|
-
code: `<Stack gap="4">
|
|
29
|
-
<Breadcrumb items={[
|
|
30
|
-
{ label: 'Home', href: '#' },
|
|
31
|
-
{ label: 'Projects', href: '#' },
|
|
32
|
-
{ label: 'Acme Corp' },
|
|
33
|
-
]} />
|
|
34
|
-
<Row justify="between" align="end">
|
|
35
|
-
<Stack gap="1">
|
|
36
|
-
<Text as="h1" size="3xl" weight="bold" family="display">Acme Corp</Text>
|
|
37
|
-
<Text size="sm" color="secondary">Last updated 5 minutes ago</Text>
|
|
38
|
-
</Stack>
|
|
39
|
-
<Row gap="2">
|
|
40
|
-
<Button variant="outline" size="sm">Export</Button>
|
|
41
|
-
<Button variant="primary" size="sm">New report</Button>
|
|
42
|
-
</Row>
|
|
43
|
-
</Row>
|
|
44
|
-
<Divider />
|
|
45
|
-
</Stack>`,
|
|
46
|
-
variants: [
|
|
47
|
-
{
|
|
48
|
-
title: 'Page header — danger zone',
|
|
49
|
-
code: `<Stack gap="4">
|
|
50
|
-
<Breadcrumb items={[
|
|
51
|
-
{ label: 'Home', href: '#' },
|
|
52
|
-
{ label: 'Settings', href: '#' },
|
|
53
|
-
{ label: 'Danger zone' },
|
|
54
|
-
]} />
|
|
55
|
-
<Row justify="between" align="end">
|
|
56
|
-
<Stack gap="1">
|
|
57
|
-
<Text as="h1" size="3xl" weight="bold" family="display">Danger zone</Text>
|
|
58
|
-
<Text size="sm" color="secondary">These actions are irreversible.</Text>
|
|
59
|
-
</Stack>
|
|
60
|
-
<Button variant="danger" size="sm">Delete project</Button>
|
|
61
|
-
</Row>
|
|
62
|
-
<Divider />
|
|
63
|
-
</Stack>`,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
title: 'Card header (compact with label)',
|
|
67
|
-
code: `<Card variant="outline" padding="md" style={{ width: 400 }}>
|
|
68
|
-
<Stack gap="4">
|
|
69
|
-
<Row justify="between" align="start">
|
|
70
|
-
<Stack gap="1">
|
|
71
|
-
<Text size="xs" color="secondary" weight="medium" style={{ letterSpacing: 'var(--lucent-letter-spacing-tight)', textTransform: 'uppercase' }}>Activity</Text>
|
|
72
|
-
<Text size="md" weight="semibold" style={{ letterSpacing: 'var(--lucent-letter-spacing-base)' }}>Recent activity</Text>
|
|
73
|
-
</Stack>
|
|
74
|
-
<Row gap="1">
|
|
75
|
-
<Button variant="ghost" size="xs">Filter</Button>
|
|
76
|
-
<Button variant="ghost" size="xs">Export</Button>
|
|
77
|
-
</Row>
|
|
78
|
-
</Row>
|
|
79
|
-
<Text size="xs" color="secondary">No activity to show yet.</Text>
|
|
80
|
-
</Stack>
|
|
81
|
-
</Card>`,
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
designNotes: 'Page headers and card headers have very different scales. Page headers use 3xl ' +
|
|
85
|
-
'display font for the title, Breadcrumb for navigation context, and a Divider to ' +
|
|
86
|
-
'separate the header from page content below. align="end" on the Row anchors the ' +
|
|
87
|
-
'buttons to the baseline of the title block so they sit level with the subtitle. ' +
|
|
88
|
-
'Card headers are compact: sm semibold text with xs/ghost buttons that recede ' +
|
|
89
|
-
'visually. The primary action is always rightmost following natural reading order. ' +
|
|
90
|
-
'Both patterns use justify="between" to push title and actions to opposite edges.',
|
|
91
|
-
};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
export const RECIPE = {
|
|
2
|
-
id: 'collapsible-card',
|
|
3
|
-
name: 'Collapsible Card',
|
|
4
|
-
description: 'Card with an expandable/collapsible section using smooth height animation, available in all card variants.',
|
|
5
|
-
category: 'card',
|
|
6
|
-
components: ['card', 'collapsible', 'text'],
|
|
7
|
-
structure: `
|
|
8
|
-
Card (padding="none", hoverable)
|
|
9
|
-
└── Collapsible
|
|
10
|
-
├── trigger: Text (sm, semibold) ← clickable header
|
|
11
|
-
└── children ← collapsible body
|
|
12
|
-
└── Text (sm, secondary) ← content
|
|
13
|
-
`.trim(),
|
|
14
|
-
code: `<Card variant="outline" padding="none" hoverable style={{ width: 360 }}>
|
|
15
|
-
<Collapsible
|
|
16
|
-
trigger={<Text as="span" weight="semibold" size="sm">Details</Text>}
|
|
17
|
-
defaultOpen
|
|
18
|
-
>
|
|
19
|
-
<Text size="sm" color="secondary">
|
|
20
|
-
The Collapsible auto-detects its Card parent and bleeds the trigger
|
|
21
|
-
full-width. Content inherits the card's padding.
|
|
22
|
-
</Text>
|
|
23
|
-
</Collapsible>
|
|
24
|
-
</Card>`,
|
|
25
|
-
variants: [
|
|
26
|
-
{
|
|
27
|
-
title: 'Ghost variant',
|
|
28
|
-
code: `<Card variant="ghost" padding="none" hoverable style={{ width: 360 }}>
|
|
29
|
-
<Collapsible trigger={<Text as="span" weight="semibold" size="sm">FAQ item</Text>}>
|
|
30
|
-
<Text size="sm" color="secondary">
|
|
31
|
-
Transparent container — content floats directly on the page surface.
|
|
32
|
-
</Text>
|
|
33
|
-
</Collapsible>
|
|
34
|
-
</Card>`,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
title: 'Elevated variant',
|
|
38
|
-
code: `<Card variant="elevated" padding="none" hoverable style={{ width: 360 }}>
|
|
39
|
-
<Collapsible trigger={<Text as="span" weight="semibold" size="sm">Advanced options</Text>}>
|
|
40
|
-
<Text size="sm" color="secondary">
|
|
41
|
-
Elevated cards cast a shadow — use for prominent collapsible sections.
|
|
42
|
-
</Text>
|
|
43
|
-
</Collapsible>
|
|
44
|
-
</Card>`,
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
title: 'Combo (two-tone nested cards)',
|
|
48
|
-
code: `<Card variant="filled" padding="none" hoverable style={{ width: 360 }}>
|
|
49
|
-
<Collapsible
|
|
50
|
-
padded={false}
|
|
51
|
-
trigger={<Text as="span" weight="semibold" size="sm">Combo layout</Text>}
|
|
52
|
-
>
|
|
53
|
-
<Card
|
|
54
|
-
variant="elevated"
|
|
55
|
-
padding="sm"
|
|
56
|
-
style={{ margin: 'var(--lucent-space-1) var(--lucent-space-2) var(--lucent-space-2)' }}
|
|
57
|
-
>
|
|
58
|
-
<Text size="sm" color="secondary">
|
|
59
|
-
Two-tone layout — flat trigger surface, elevated body.
|
|
60
|
-
</Text>
|
|
61
|
-
</Card>
|
|
62
|
-
</Collapsible>
|
|
63
|
-
</Card>`,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
title: 'With localStorage persistence',
|
|
67
|
-
code: `function CollapsibleSection({ id, title, children }) {
|
|
68
|
-
const storageKey = \`collapsible-\${id}\`;
|
|
69
|
-
const [open, setOpen] = React.useState(() => {
|
|
70
|
-
const saved = localStorage.getItem(storageKey);
|
|
71
|
-
return saved !== null ? saved === 'true' : true;
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
const handleChange = (next) => {
|
|
75
|
-
setOpen(next);
|
|
76
|
-
localStorage.setItem(storageKey, String(next));
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
return (
|
|
80
|
-
<Card variant="outline" padding="none" hoverable>
|
|
81
|
-
<Collapsible
|
|
82
|
-
open={open}
|
|
83
|
-
onOpenChange={handleChange}
|
|
84
|
-
trigger={<Text as="span" weight="semibold" size="sm">{title}</Text>}
|
|
85
|
-
>
|
|
86
|
-
{children}
|
|
87
|
-
</Collapsible>
|
|
88
|
-
</Card>
|
|
89
|
-
);
|
|
90
|
-
}`,
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
designNotes: 'Card uses padding="none" because the Collapsible auto-detects its Card parent ' +
|
|
94
|
-
'via CardPaddingContext and bleeds the trigger full-width while applying card ' +
|
|
95
|
-
'padding to the body content. The hoverable prop gives hover lift feedback ' +
|
|
96
|
-
'without making the card itself interactive — the Collapsible trigger handles ' +
|
|
97
|
-
'clicks. For the combo variant, padded={false} on Collapsible removes its built-in ' +
|
|
98
|
-
'content padding so the nested elevated Card can control its own spacing with ' +
|
|
99
|
-
'custom margin. This creates a two-tone visual: flat trigger + elevated body.',
|
|
100
|
-
};
|