@geomak/ui 7.3.3 → 7.4.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.
@@ -230,6 +230,7 @@ var vars = {
230
230
  topbar: "var(--z-topbar)",
231
231
  overlay: "var(--z-overlay)",
232
232
  modal: "var(--z-modal)",
233
+ popover: "var(--z-popover)",
233
234
  toast: "var(--z-toast)",
234
235
  tooltip: "var(--z-tooltip)"
235
236
  }
@@ -239,5 +240,5 @@ exports.PALETTE = PALETTE;
239
240
  exports.colors_default = colors_default;
240
241
  exports.semanticTokens = semanticTokens;
241
242
  exports.vars = vars;
242
- //# sourceMappingURL=chunk-OAV4TA4B.cjs.map
243
- //# sourceMappingURL=chunk-OAV4TA4B.cjs.map
243
+ //# sourceMappingURL=chunk-CNUDNGJM.cjs.map
244
+ //# sourceMappingURL=chunk-CNUDNGJM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/colors.ts","../src/tokens/index.ts"],"names":[],"mappings":"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","file":"chunk-CNUDNGJM.cjs","sourcesContent":["/**\n * Oxygen design-system colour palette.\n * Duplicated here so the published package is fully self-contained.\n */\nexport const PALETTE = {\n 'true-blue': '#0466C8',\n 'usafa-blue': '#0353A4',\n 'dark-cornflower-blue': '#023E7D',\n 'oxford-blue-700': '#002855',\n 'oxford-blue-800': '#001845',\n 'oxford-blue-900': '#001233',\n independence: '#33415C',\n 'black-coral': '#5C677D',\n 'roman-silver': '#7D8597',\n manatee: '#979DAC',\n white: '#fff',\n ice: '#DBF1FD',\n 'ice-dark': '#d0e3ed',\n 'midnight-green-eagle-900': '#013E53',\n 'midnight-green-eagle-700': '#125F6C',\n 'midnight-green-eagle-500': '#125F6C',\n 'rich-black-fogra': '#000202',\n 'rich-black-fogra-opaque': '#0000005b',\n 'prussian-blue': '#00273A',\n 'indigo-dye': '#013C54',\n ming: '#0F6372',\n skobeloff: '#217479',\n 'dark-cyan': '#2A8784',\n 'celadon-green': '#297E74',\n turquise: '#2EB8B0',\n 'oxford-blue-700-opaque': 'rgba(0, 40, 85, .3)',\n disabled: '#dee2e6',\n error: 'tomato',\n warning: 'orange',\n success: 'lightgreen',\n info: 'lightblue',\n transparent: 'rgba(255, 255, 255, .0)',\n} as const\n\nconst COLORS = { PALETTE }\nexport default COLORS\n","/**\n * @geomak/ui — Design Tokens\n *\n * Three layers, each useful in a different context:\n *\n * 1. `palette` — raw brand hex values from palette.json\n * 2. `semanticTokens` — resolved hex / px values keyed by light / dark / shared\n * 3. `vars` — CSS custom-property reference strings for inline styles / CSS-in-JS\n *\n * CSS custom properties are injected by: import '@geomak/ui/styles'\n * Tailwind utilities map to these vars via the bundled tailwind preset.\n */\n\nexport { PALETTE as palette } from '../utils/colors'\n\n// ─── Resolved values (hex / px / ms) ─────────────────────────────────────────\n\n/**\n * Resolved token values for every semantic role.\n * Use when CSS custom properties aren't available (canvas, email, SSR snapshots).\n */\nexport const semanticTokens = {\n light: {\n // Surfaces\n background: '#eef4fa',\n surface: '#ffffff',\n 'surface-raised': '#ffffff',\n // Borders\n border: '#d3dde8',\n 'border-strong': '#8898aa',\n // Text\n foreground: '#0a1929',\n 'foreground-secondary': '#2e4057',\n 'foreground-muted': '#536878',\n // Accent\n accent: '#0466C8',\n 'accent-hover': '#0353A4',\n 'accent-foreground': '#ffffff',\n // Status\n error: '#c0392b',\n warning: '#d68910',\n success: '#1e8449',\n info: '#1565c0',\n // Scrim\n backdrop: 'rgba(6, 15, 26, 0.45)',\n },\n\n dark: {\n // Surfaces\n background: '#060f1a',\n surface: '#0d1f30',\n 'surface-raised': '#152638',\n // Borders\n border: '#1e3348',\n 'border-strong': '#2e4a64',\n // Text\n foreground: '#e8f0f8',\n 'foreground-secondary': '#9ab0c4',\n 'foreground-muted': '#5c7a92',\n // Accent\n accent: '#2d88ff',\n 'accent-hover': '#4d9aff',\n 'accent-foreground': '#ffffff',\n // Status (brightened for dark backgrounds)\n error: '#ff6b6b',\n warning: '#ffb347',\n success: '#5cb85c',\n info: '#5bc0de',\n // Scrim (denser on dark backgrounds)\n backdrop: 'rgba(0, 0, 0, 0.6)',\n },\n\n // Mode-independent tokens\n shared: {\n // Radius — enterprise scale\n 'radius-sm': '2px',\n 'radius-md': '5px',\n 'radius-lg': '7px',\n 'radius-xl': '10px',\n 'radius-2xl': '12px',\n 'radius-full': '9999px',\n\n // Typography\n 'font-size-xs': '0.75rem',\n 'font-size-sm': '0.875rem',\n 'font-size-base': '1rem',\n 'font-size-lg': '1.125rem',\n 'font-size-xl': '1.25rem',\n 'font-size-2xl': '1.5rem',\n 'font-size-3xl': '1.875rem',\n 'font-weight-normal': 400,\n 'font-weight-medium': 500,\n 'font-weight-semibold': 600,\n 'font-weight-bold': 700,\n 'line-height-tight': 1.25,\n 'line-height-snug': 1.375,\n 'line-height-normal': 1.5,\n 'line-height-relaxed': 1.625,\n 'letter-spacing-tight': '-0.025em',\n 'letter-spacing-normal': '0em',\n 'letter-spacing-wide': '0.025em',\n\n // Component heights / density\n 'height-control-xs': '24px',\n 'height-control-sm': '28px',\n 'height-control-md': '36px',\n 'height-control-lg': '44px',\n 'height-topbar': '56px',\n 'sidebar-expanded': '220px',\n 'sidebar-collapsed': '52px',\n\n // Motion\n 'duration-instant': '50ms',\n 'duration-fast': '80ms',\n 'duration-normal': '150ms',\n 'duration-slow': '220ms',\n 'duration-gentle': '350ms',\n 'ease-out-expo': 'cubic-bezier(0.16, 1, 0.3, 1)',\n 'ease-out-quart': 'cubic-bezier(0.25, 1, 0.5, 1)',\n 'ease-out-cubic': 'cubic-bezier(0.33, 1, 0.68, 1)',\n 'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n 'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',\n\n // Z-index\n 'z-base': 0,\n 'z-raised': 10,\n 'z-dropdown': 100,\n 'z-sticky': 150,\n 'z-topbar': 200,\n 'z-overlay': 300,\n 'z-modal': 400,\n 'z-toast': 500,\n 'z-tooltip': 600,\n },\n} as const\n\nexport type SemanticColorKey = keyof typeof semanticTokens.light\nexport type SemanticSharedKey = keyof typeof semanticTokens.shared\n\n// ─── CSS custom-property references ──────────────────────────────────────────\n\n/**\n * CSS custom-property reference strings.\n * Use in inline styles or CSS-in-JS — values respond to light/dark automatically.\n *\n * @example\n * // Inline style\n * <div style={{ color: vars.color.foreground }}>...</div>\n *\n * @example\n * // Emotion / styled-components\n * const Card = styled.div`\n * background: ${vars.color.surface};\n * border-radius: ${vars.radius.lg};\n * box-shadow: ${vars.shadow.md};\n * `\n */\nexport const vars = {\n color: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n surfaceRaised: 'var(--color-surface-raised)',\n border: 'var(--color-border)',\n borderStrong: 'var(--color-border-strong)',\n foreground: 'var(--color-foreground)',\n foregroundSecondary: 'var(--color-foreground-secondary)',\n foregroundMuted: 'var(--color-foreground-muted)',\n accent: 'var(--color-accent)',\n accentHover: 'var(--color-accent-hover)',\n accentForeground: 'var(--color-accent-foreground)',\n error: 'var(--color-error)',\n warning: 'var(--color-warning)',\n success: 'var(--color-success)',\n info: 'var(--color-info)',\n backdrop: 'var(--color-backdrop)',\n },\n\n radius: {\n sm: 'var(--radius-sm)',\n md: 'var(--radius-md)',\n lg: 'var(--radius-lg)',\n xl: 'var(--radius-xl)',\n '2xl': 'var(--radius-2xl)',\n full: 'var(--radius-full)',\n },\n\n shadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n xl: 'var(--shadow-xl)',\n },\n\n typography: {\n fontFamily: 'var(--font-family-sans)',\n fontSizeXs: 'var(--font-size-xs)',\n fontSizeSm: 'var(--font-size-sm)',\n fontSizeBase: 'var(--font-size-base)',\n fontSizeLg: 'var(--font-size-lg)',\n fontSizeXl: 'var(--font-size-xl)',\n fontSize2xl: 'var(--font-size-2xl)',\n fontSize3xl: 'var(--font-size-3xl)',\n fontWeightNormal: 'var(--font-weight-normal)',\n fontWeightMedium: 'var(--font-weight-medium)',\n fontWeightSemibold: 'var(--font-weight-semibold)',\n fontWeightBold: 'var(--font-weight-bold)',\n lineHeightTight: 'var(--line-height-tight)',\n lineHeightSnug: 'var(--line-height-snug)',\n lineHeightNormal: 'var(--line-height-normal)',\n lineHeightRelaxed: 'var(--line-height-relaxed)',\n letterSpacingTight: 'var(--letter-spacing-tight)',\n letterSpacingNormal: 'var(--letter-spacing-normal)',\n letterSpacingWide: 'var(--letter-spacing-wide)',\n },\n\n density: {\n controlXs: 'var(--height-control-xs)',\n controlSm: 'var(--height-control-sm)',\n controlMd: 'var(--height-control-md)',\n controlLg: 'var(--height-control-lg)',\n topbar: 'var(--height-topbar)',\n sidebarExpanded: 'var(--sidebar-expanded)',\n sidebarCollapsed: 'var(--sidebar-collapsed)',\n },\n\n motion: {\n durationInstant: 'var(--duration-instant)',\n durationFast: 'var(--duration-fast)',\n durationNormal: 'var(--duration-normal)',\n durationSlow: 'var(--duration-slow)',\n durationGentle: 'var(--duration-gentle)',\n easeOutExpo: 'var(--ease-out-expo)',\n easeOutQuart: 'var(--ease-out-quart)',\n easeOutCubic: 'var(--ease-out-cubic)',\n easeInOut: 'var(--ease-in-out)',\n easeIn: 'var(--ease-in)',\n },\n\n zIndex: {\n base: 'var(--z-base)',\n raised: 'var(--z-raised)',\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n topbar: 'var(--z-topbar)',\n overlay: 'var(--z-overlay)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n toast: 'var(--z-toast)',\n tooltip: 'var(--z-tooltip)',\n },\n} as const\n\n// ─── Convenience type exports ─────────────────────────────────────────────────\nexport type VarColorKey = keyof typeof vars.color\nexport type VarRadiusKey = keyof typeof vars.radius\nexport type VarShadowKey = keyof typeof vars.shadow\nexport type VarTypoKey = keyof typeof vars.typography\nexport type VarDensityKey = keyof typeof vars.density\nexport type VarMotionKey = keyof typeof vars.motion\nexport type VarZIndexKey = keyof typeof vars.zIndex\n"]}
@@ -228,11 +228,12 @@ var vars = {
228
228
  topbar: "var(--z-topbar)",
229
229
  overlay: "var(--z-overlay)",
230
230
  modal: "var(--z-modal)",
231
+ popover: "var(--z-popover)",
231
232
  toast: "var(--z-toast)",
232
233
  tooltip: "var(--z-tooltip)"
233
234
  }
234
235
  };
235
236
 
236
237
  export { PALETTE, colors_default, semanticTokens, vars };
237
- //# sourceMappingURL=chunk-I2P4JJDB.js.map
238
- //# sourceMappingURL=chunk-I2P4JJDB.js.map
238
+ //# sourceMappingURL=chunk-DXOWXLKK.js.map
239
+ //# sourceMappingURL=chunk-DXOWXLKK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/colors.ts","../src/tokens/index.ts"],"names":[],"mappings":"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","file":"chunk-DXOWXLKK.js","sourcesContent":["/**\n * Oxygen design-system colour palette.\n * Duplicated here so the published package is fully self-contained.\n */\nexport const PALETTE = {\n 'true-blue': '#0466C8',\n 'usafa-blue': '#0353A4',\n 'dark-cornflower-blue': '#023E7D',\n 'oxford-blue-700': '#002855',\n 'oxford-blue-800': '#001845',\n 'oxford-blue-900': '#001233',\n independence: '#33415C',\n 'black-coral': '#5C677D',\n 'roman-silver': '#7D8597',\n manatee: '#979DAC',\n white: '#fff',\n ice: '#DBF1FD',\n 'ice-dark': '#d0e3ed',\n 'midnight-green-eagle-900': '#013E53',\n 'midnight-green-eagle-700': '#125F6C',\n 'midnight-green-eagle-500': '#125F6C',\n 'rich-black-fogra': '#000202',\n 'rich-black-fogra-opaque': '#0000005b',\n 'prussian-blue': '#00273A',\n 'indigo-dye': '#013C54',\n ming: '#0F6372',\n skobeloff: '#217479',\n 'dark-cyan': '#2A8784',\n 'celadon-green': '#297E74',\n turquise: '#2EB8B0',\n 'oxford-blue-700-opaque': 'rgba(0, 40, 85, .3)',\n disabled: '#dee2e6',\n error: 'tomato',\n warning: 'orange',\n success: 'lightgreen',\n info: 'lightblue',\n transparent: 'rgba(255, 255, 255, .0)',\n} as const\n\nconst COLORS = { PALETTE }\nexport default COLORS\n","/**\n * @geomak/ui — Design Tokens\n *\n * Three layers, each useful in a different context:\n *\n * 1. `palette` — raw brand hex values from palette.json\n * 2. `semanticTokens` — resolved hex / px values keyed by light / dark / shared\n * 3. `vars` — CSS custom-property reference strings for inline styles / CSS-in-JS\n *\n * CSS custom properties are injected by: import '@geomak/ui/styles'\n * Tailwind utilities map to these vars via the bundled tailwind preset.\n */\n\nexport { PALETTE as palette } from '../utils/colors'\n\n// ─── Resolved values (hex / px / ms) ─────────────────────────────────────────\n\n/**\n * Resolved token values for every semantic role.\n * Use when CSS custom properties aren't available (canvas, email, SSR snapshots).\n */\nexport const semanticTokens = {\n light: {\n // Surfaces\n background: '#eef4fa',\n surface: '#ffffff',\n 'surface-raised': '#ffffff',\n // Borders\n border: '#d3dde8',\n 'border-strong': '#8898aa',\n // Text\n foreground: '#0a1929',\n 'foreground-secondary': '#2e4057',\n 'foreground-muted': '#536878',\n // Accent\n accent: '#0466C8',\n 'accent-hover': '#0353A4',\n 'accent-foreground': '#ffffff',\n // Status\n error: '#c0392b',\n warning: '#d68910',\n success: '#1e8449',\n info: '#1565c0',\n // Scrim\n backdrop: 'rgba(6, 15, 26, 0.45)',\n },\n\n dark: {\n // Surfaces\n background: '#060f1a',\n surface: '#0d1f30',\n 'surface-raised': '#152638',\n // Borders\n border: '#1e3348',\n 'border-strong': '#2e4a64',\n // Text\n foreground: '#e8f0f8',\n 'foreground-secondary': '#9ab0c4',\n 'foreground-muted': '#5c7a92',\n // Accent\n accent: '#2d88ff',\n 'accent-hover': '#4d9aff',\n 'accent-foreground': '#ffffff',\n // Status (brightened for dark backgrounds)\n error: '#ff6b6b',\n warning: '#ffb347',\n success: '#5cb85c',\n info: '#5bc0de',\n // Scrim (denser on dark backgrounds)\n backdrop: 'rgba(0, 0, 0, 0.6)',\n },\n\n // Mode-independent tokens\n shared: {\n // Radius — enterprise scale\n 'radius-sm': '2px',\n 'radius-md': '5px',\n 'radius-lg': '7px',\n 'radius-xl': '10px',\n 'radius-2xl': '12px',\n 'radius-full': '9999px',\n\n // Typography\n 'font-size-xs': '0.75rem',\n 'font-size-sm': '0.875rem',\n 'font-size-base': '1rem',\n 'font-size-lg': '1.125rem',\n 'font-size-xl': '1.25rem',\n 'font-size-2xl': '1.5rem',\n 'font-size-3xl': '1.875rem',\n 'font-weight-normal': 400,\n 'font-weight-medium': 500,\n 'font-weight-semibold': 600,\n 'font-weight-bold': 700,\n 'line-height-tight': 1.25,\n 'line-height-snug': 1.375,\n 'line-height-normal': 1.5,\n 'line-height-relaxed': 1.625,\n 'letter-spacing-tight': '-0.025em',\n 'letter-spacing-normal': '0em',\n 'letter-spacing-wide': '0.025em',\n\n // Component heights / density\n 'height-control-xs': '24px',\n 'height-control-sm': '28px',\n 'height-control-md': '36px',\n 'height-control-lg': '44px',\n 'height-topbar': '56px',\n 'sidebar-expanded': '220px',\n 'sidebar-collapsed': '52px',\n\n // Motion\n 'duration-instant': '50ms',\n 'duration-fast': '80ms',\n 'duration-normal': '150ms',\n 'duration-slow': '220ms',\n 'duration-gentle': '350ms',\n 'ease-out-expo': 'cubic-bezier(0.16, 1, 0.3, 1)',\n 'ease-out-quart': 'cubic-bezier(0.25, 1, 0.5, 1)',\n 'ease-out-cubic': 'cubic-bezier(0.33, 1, 0.68, 1)',\n 'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n 'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',\n\n // Z-index\n 'z-base': 0,\n 'z-raised': 10,\n 'z-dropdown': 100,\n 'z-sticky': 150,\n 'z-topbar': 200,\n 'z-overlay': 300,\n 'z-modal': 400,\n 'z-toast': 500,\n 'z-tooltip': 600,\n },\n} as const\n\nexport type SemanticColorKey = keyof typeof semanticTokens.light\nexport type SemanticSharedKey = keyof typeof semanticTokens.shared\n\n// ─── CSS custom-property references ──────────────────────────────────────────\n\n/**\n * CSS custom-property reference strings.\n * Use in inline styles or CSS-in-JS — values respond to light/dark automatically.\n *\n * @example\n * // Inline style\n * <div style={{ color: vars.color.foreground }}>...</div>\n *\n * @example\n * // Emotion / styled-components\n * const Card = styled.div`\n * background: ${vars.color.surface};\n * border-radius: ${vars.radius.lg};\n * box-shadow: ${vars.shadow.md};\n * `\n */\nexport const vars = {\n color: {\n background: 'var(--color-background)',\n surface: 'var(--color-surface)',\n surfaceRaised: 'var(--color-surface-raised)',\n border: 'var(--color-border)',\n borderStrong: 'var(--color-border-strong)',\n foreground: 'var(--color-foreground)',\n foregroundSecondary: 'var(--color-foreground-secondary)',\n foregroundMuted: 'var(--color-foreground-muted)',\n accent: 'var(--color-accent)',\n accentHover: 'var(--color-accent-hover)',\n accentForeground: 'var(--color-accent-foreground)',\n error: 'var(--color-error)',\n warning: 'var(--color-warning)',\n success: 'var(--color-success)',\n info: 'var(--color-info)',\n backdrop: 'var(--color-backdrop)',\n },\n\n radius: {\n sm: 'var(--radius-sm)',\n md: 'var(--radius-md)',\n lg: 'var(--radius-lg)',\n xl: 'var(--radius-xl)',\n '2xl': 'var(--radius-2xl)',\n full: 'var(--radius-full)',\n },\n\n shadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n xl: 'var(--shadow-xl)',\n },\n\n typography: {\n fontFamily: 'var(--font-family-sans)',\n fontSizeXs: 'var(--font-size-xs)',\n fontSizeSm: 'var(--font-size-sm)',\n fontSizeBase: 'var(--font-size-base)',\n fontSizeLg: 'var(--font-size-lg)',\n fontSizeXl: 'var(--font-size-xl)',\n fontSize2xl: 'var(--font-size-2xl)',\n fontSize3xl: 'var(--font-size-3xl)',\n fontWeightNormal: 'var(--font-weight-normal)',\n fontWeightMedium: 'var(--font-weight-medium)',\n fontWeightSemibold: 'var(--font-weight-semibold)',\n fontWeightBold: 'var(--font-weight-bold)',\n lineHeightTight: 'var(--line-height-tight)',\n lineHeightSnug: 'var(--line-height-snug)',\n lineHeightNormal: 'var(--line-height-normal)',\n lineHeightRelaxed: 'var(--line-height-relaxed)',\n letterSpacingTight: 'var(--letter-spacing-tight)',\n letterSpacingNormal: 'var(--letter-spacing-normal)',\n letterSpacingWide: 'var(--letter-spacing-wide)',\n },\n\n density: {\n controlXs: 'var(--height-control-xs)',\n controlSm: 'var(--height-control-sm)',\n controlMd: 'var(--height-control-md)',\n controlLg: 'var(--height-control-lg)',\n topbar: 'var(--height-topbar)',\n sidebarExpanded: 'var(--sidebar-expanded)',\n sidebarCollapsed: 'var(--sidebar-collapsed)',\n },\n\n motion: {\n durationInstant: 'var(--duration-instant)',\n durationFast: 'var(--duration-fast)',\n durationNormal: 'var(--duration-normal)',\n durationSlow: 'var(--duration-slow)',\n durationGentle: 'var(--duration-gentle)',\n easeOutExpo: 'var(--ease-out-expo)',\n easeOutQuart: 'var(--ease-out-quart)',\n easeOutCubic: 'var(--ease-out-cubic)',\n easeInOut: 'var(--ease-in-out)',\n easeIn: 'var(--ease-in)',\n },\n\n zIndex: {\n base: 'var(--z-base)',\n raised: 'var(--z-raised)',\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n topbar: 'var(--z-topbar)',\n overlay: 'var(--z-overlay)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n toast: 'var(--z-toast)',\n tooltip: 'var(--z-tooltip)',\n },\n} as const\n\n// ─── Convenience type exports ─────────────────────────────────────────────────\nexport type VarColorKey = keyof typeof vars.color\nexport type VarRadiusKey = keyof typeof vars.radius\nexport type VarShadowKey = keyof typeof vars.shadow\nexport type VarTypoKey = keyof typeof vars.typography\nexport type VarDensityKey = keyof typeof vars.density\nexport type VarMotionKey = keyof typeof vars.motion\nexport type VarZIndexKey = keyof typeof vars.zIndex\n"]}
@@ -281,6 +281,7 @@ declare const vars: {
281
281
  readonly topbar: "var(--z-topbar)";
282
282
  readonly overlay: "var(--z-overlay)";
283
283
  readonly modal: "var(--z-modal)";
284
+ readonly popover: "var(--z-popover)";
284
285
  readonly toast: "var(--z-toast)";
285
286
  readonly tooltip: "var(--z-tooltip)";
286
287
  };
@@ -281,6 +281,7 @@ declare const vars: {
281
281
  readonly topbar: "var(--z-topbar)";
282
282
  readonly overlay: "var(--z-overlay)";
283
283
  readonly modal: "var(--z-modal)";
284
+ readonly popover: "var(--z-popover)";
284
285
  readonly toast: "var(--z-toast)";
285
286
  readonly tooltip: "var(--z-tooltip)";
286
287
  };
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk4V4U2W7K_cjs = require('./chunk-4V4U2W7K.cjs');
4
- var chunkOAV4TA4B_cjs = require('./chunk-OAV4TA4B.cjs');
4
+ var chunkCNUDNGJM_cjs = require('./chunk-CNUDNGJM.cjs');
5
5
  var React30 = require('react');
6
6
  var reactDom = require('react-dom');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -4577,6 +4577,10 @@ function List2({
4577
4577
  );
4578
4578
  }) });
4579
4579
  }
4580
+ var rectOf = (el) => {
4581
+ const r = el.getBoundingClientRect();
4582
+ return { left: r.left, top: r.top, width: r.width, height: r.height };
4583
+ };
4580
4584
  var TOGGLE_POSITION_CLASS = {
4581
4585
  "top-left": "top-2 left-2",
4582
4586
  "top-right": "top-2 right-2",
@@ -4595,17 +4599,56 @@ function ScalableContainer({
4595
4599
  expandIcon,
4596
4600
  collapseIcon,
4597
4601
  togglePosition = "top-right",
4602
+ expandContainerRef,
4598
4603
  className = ""
4599
4604
  }) {
4600
4605
  const containerRef = React30.useRef(null);
4601
4606
  const [internalScaled, setInternalScaled] = React30.useState(false);
4602
4607
  const isScaled = expanded ?? internalScaled;
4603
4608
  const reduced = framerMotion.useReducedMotion();
4609
+ const usePortal = expandContainerRef != null;
4610
+ const [overlay, setOverlay] = React30.useState("closed");
4611
+ const [fromRect, setFromRect] = React30.useState(null);
4612
+ const [targetRect, setTargetRect] = React30.useState(null);
4613
+ const prevScaled = React30.useRef(isScaled);
4614
+ React30.useEffect(() => {
4615
+ if (!usePortal || isScaled === prevScaled.current) return;
4616
+ prevScaled.current = isScaled;
4617
+ if (isScaled) {
4618
+ const src = containerRef.current ? rectOf(containerRef.current) : null;
4619
+ const tgt = expandContainerRef.current ? rectOf(expandContainerRef.current) : null;
4620
+ if (src && tgt) {
4621
+ setFromRect(src);
4622
+ setTargetRect(tgt);
4623
+ setOverlay("open");
4624
+ }
4625
+ } else if (containerRef.current) {
4626
+ setTargetRect(rectOf(containerRef.current));
4627
+ setOverlay("closing");
4628
+ }
4629
+ }, [isScaled, usePortal, expandContainerRef]);
4630
+ React30.useEffect(() => {
4631
+ if (overlay !== "closing") return;
4632
+ const t = window.setTimeout(() => setOverlay("closed"), reduced ? 0 : 360);
4633
+ return () => window.clearTimeout(t);
4634
+ }, [overlay, reduced]);
4635
+ React30.useEffect(() => {
4636
+ if (overlay !== "open" || !expandContainerRef?.current) return;
4637
+ const update = () => {
4638
+ if (expandContainerRef.current) setTargetRect(rectOf(expandContainerRef.current));
4639
+ };
4640
+ window.addEventListener("resize", update);
4641
+ window.addEventListener("scroll", update, true);
4642
+ return () => {
4643
+ window.removeEventListener("resize", update);
4644
+ window.removeEventListener("scroll", update, true);
4645
+ };
4646
+ }, [overlay, expandContainerRef]);
4604
4647
  const onToggle = () => {
4605
4648
  const next = !isScaled;
4606
4649
  if (expanded === void 0) setInternalScaled(next);
4607
4650
  onExpandedChange?.(next);
4608
- if (next) {
4651
+ if (next && !usePortal) {
4609
4652
  window.setTimeout(
4610
4653
  () => containerRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" }),
4611
4654
  reduced ? 0 : 340
@@ -4613,50 +4656,79 @@ function ScalableContainer({
4613
4656
  }
4614
4657
  };
4615
4658
  const wrapperClass = isScaled ? assignClassOnClick : void 0;
4616
- return /* @__PURE__ */ jsxRuntime.jsxs(
4617
- framerMotion.motion.div,
4659
+ const overlayActive = usePortal && overlay !== "closed";
4660
+ const toggleButton = (scaled) => /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { placement: "bottom", title: scaled ? "Collapse" : "Expand", children: /* @__PURE__ */ jsxRuntime.jsx(
4661
+ "button",
4618
4662
  {
4619
- ref: containerRef,
4620
- animate: {
4621
- width: isScaled ? expandedWidth : width,
4622
- height: isScaled ? expandedHeight : height
4623
- },
4624
- transition: reduced ? { duration: 0 } : {
4625
- width: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] },
4626
- height: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] }
4627
- },
4628
- className: cx(
4629
- "relative rounded-lg overflow-hidden",
4630
- // OS-window aesthetic: subtle elevation at rest, lifted shadow
4631
- // when expanded. No background colour change.
4632
- isScaled ? "shadow-2xl" : "shadow-md",
4633
- "transition-shadow duration-300",
4634
- className
4635
- ),
4636
- children: [
4637
- /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { placement: "bottom", title: isScaled ? "Collapse" : "Expand", children: /* @__PURE__ */ jsxRuntime.jsx(
4638
- "button",
4639
- {
4640
- type: "button",
4641
- onClick: onToggle,
4642
- "aria-label": isScaled ? "Collapse container" : "Expand container",
4643
- "aria-expanded": isScaled,
4644
- className: [
4645
- "absolute z-10",
4646
- TOGGLE_POSITION_CLASS[togglePosition],
4647
- "w-7 h-7 inline-flex items-center justify-center",
4648
- "rounded-md bg-surface/80 backdrop-blur-sm border border-border",
4649
- "text-foreground-secondary hover:text-foreground hover:bg-surface",
4650
- "shadow-sm transition-colors duration-150",
4651
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent"
4652
- ].join(" "),
4653
- children: isScaled ? collapseIcon ?? /* @__PURE__ */ jsxRuntime.jsx(CollapseIcon, {}) : expandIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, {})
4654
- }
4655
- ) }),
4656
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: wrapperClass, children })
4657
- ]
4663
+ type: "button",
4664
+ onClick: onToggle,
4665
+ "aria-label": scaled ? "Collapse container" : "Expand container",
4666
+ "aria-expanded": scaled,
4667
+ className: [
4668
+ "absolute z-10",
4669
+ TOGGLE_POSITION_CLASS[togglePosition],
4670
+ "w-7 h-7 inline-flex items-center justify-center",
4671
+ "rounded-md bg-surface/80 backdrop-blur-sm border border-border",
4672
+ "text-foreground-secondary hover:text-foreground hover:bg-surface",
4673
+ "shadow-sm transition-colors duration-150",
4674
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent"
4675
+ ].join(" "),
4676
+ children: scaled ? collapseIcon ?? /* @__PURE__ */ jsxRuntime.jsx(CollapseIcon, {}) : expandIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, {})
4658
4677
  }
4659
- );
4678
+ ) });
4679
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4680
+ /* @__PURE__ */ jsxRuntime.jsxs(
4681
+ framerMotion.motion.div,
4682
+ {
4683
+ ref: containerRef,
4684
+ animate: {
4685
+ // Breakout mode never grows in place — the in-flow box stays
4686
+ // at its resting size and acts as the collapse target.
4687
+ width: isScaled && !usePortal ? expandedWidth : width,
4688
+ height: isScaled && !usePortal ? expandedHeight : height
4689
+ },
4690
+ transition: reduced ? { duration: 0 } : {
4691
+ width: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] },
4692
+ height: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] }
4693
+ },
4694
+ className: cx(
4695
+ "relative rounded-lg overflow-hidden",
4696
+ // OS-window aesthetic: subtle elevation at rest, lifted shadow
4697
+ // when expanded. No background colour change.
4698
+ isScaled && !usePortal ? "shadow-2xl" : "shadow-md",
4699
+ "transition-shadow duration-300",
4700
+ className
4701
+ ),
4702
+ children: [
4703
+ !overlayActive && toggleButton(isScaled),
4704
+ !overlayActive && /* @__PURE__ */ jsxRuntime.jsx("div", { className: wrapperClass, children })
4705
+ ]
4706
+ }
4707
+ ),
4708
+ overlayActive && fromRect && targetRect && reactDom.createPortal(
4709
+ /* @__PURE__ */ jsxRuntime.jsxs(
4710
+ framerMotion.motion.div,
4711
+ {
4712
+ initial: { ...fromRect },
4713
+ animate: { ...targetRect },
4714
+ transition: reduced ? { duration: 0 } : { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] },
4715
+ onAnimationComplete: () => {
4716
+ if (overlay === "closing") setOverlay("closed");
4717
+ },
4718
+ style: { position: "fixed" },
4719
+ className: cx(
4720
+ "z-dropdown rounded-lg overflow-hidden bg-surface shadow-2xl",
4721
+ className
4722
+ ),
4723
+ children: [
4724
+ toggleButton(isScaled),
4725
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx("h-full w-full", wrapperClass), children })
4726
+ ]
4727
+ }
4728
+ ),
4729
+ document.body
4730
+ )
4731
+ ] });
4660
4732
  }
4661
4733
  function CollapseIcon() {
4662
4734
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "w-4 h-4", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 9L4 4M9 9V4M9 9H4M15 9L20 4M15 9V4M15 9H20M9 15L4 20M9 15V20M9 15H4M15 15L20 20M15 15V20M15 15H20" }) });
@@ -4780,7 +4852,7 @@ function CatalogCarousel({ items, buttonText, onOpen, className = "" }) {
4780
4852
  onClick: previousApp,
4781
4853
  "aria-label": "Previous",
4782
4854
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence rotate-180",
4783
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: chunkOAV4TA4B_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
4855
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: chunkCNUDNGJM_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
4784
4856
  }
4785
4857
  ),
4786
4858
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: indexPool.map((index, id) => {
@@ -4817,7 +4889,7 @@ function CatalogCarousel({ items, buttonText, onOpen, className = "" }) {
4817
4889
  onClick: nextApp,
4818
4890
  "aria-label": "Next",
4819
4891
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence",
4820
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: chunkOAV4TA4B_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
4892
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: chunkCNUDNGJM_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
4821
4893
  }
4822
4894
  )
4823
4895
  ] }) });
@@ -7581,8 +7653,9 @@ function Dropdown({
7581
7653
  {
7582
7654
  align: "start",
7583
7655
  sideOffset: 4,
7656
+ collisionPadding: 8,
7584
7657
  style: { width: style?.width || 240 },
7585
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-2 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
7658
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-2 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
7586
7659
  onInteractOutside: () => setOpen(false),
7587
7660
  children: [
7588
7661
  hasSearch && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -7765,8 +7838,9 @@ function AutoComplete({
7765
7838
  {
7766
7839
  align: "start",
7767
7840
  sideOffset: 4,
7841
+ collisionPadding: 8,
7768
7842
  onOpenAutoFocus: (e) => e.preventDefault(),
7769
- className: "w-64 bg-surface border border-border rounded-lg mt-1 shadow-md z-50 overflow-y-auto max-h-36 animate-in fade-in-0 zoom-in-95",
7843
+ className: "w-64 bg-surface border border-border rounded-lg mt-1 shadow-md z-popover overflow-y-auto max-h-36 animate-in fade-in-0 zoom-in-95",
7770
7844
  children: loading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full w-full flex items-center justify-center gap-2 py-4 text-sm text-foreground-secondary", children: [
7771
7845
  /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, { inline: true, size: "xs" }),
7772
7846
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: loadingText })
@@ -7950,8 +8024,9 @@ function TreeSelect({
7950
8024
  {
7951
8025
  align: "start",
7952
8026
  sideOffset: 4,
8027
+ collisionPadding: 8,
7953
8028
  style: { width: style?.width || 280 },
7954
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-1 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
8029
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-1 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
7955
8030
  onOpenAutoFocus: (e) => {
7956
8031
  e.preventDefault();
7957
8032
  listRef.current?.focus();
@@ -8399,7 +8474,8 @@ function DatePicker({
8399
8474
  {
8400
8475
  align: "start",
8401
8476
  sideOffset: 4,
8402
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-3 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
8477
+ collisionPadding: 8,
8478
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-3 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
8403
8479
  onOpenAutoFocus: (e) => {
8404
8480
  e.preventDefault();
8405
8481
  },
@@ -9198,7 +9274,8 @@ function TimePicker({
9198
9274
  {
9199
9275
  align: "start",
9200
9276
  sideOffset: 4,
9201
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-2 flex gap-1 animate-in fade-in-0 zoom-in-95",
9277
+ collisionPadding: 8,
9278
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-2 flex gap-1 animate-in fade-in-0 zoom-in-95",
9202
9279
  children: [
9203
9280
  /* @__PURE__ */ jsxRuntime.jsx(
9204
9281
  Column,
@@ -9371,7 +9448,8 @@ function DateRangePicker({
9371
9448
  {
9372
9449
  align: "start",
9373
9450
  sideOffset: 4,
9374
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-3 flex flex-col gap-3 sm:flex-row max-w-[calc(100vw-1rem)] max-h-[calc(100vh-2rem)] overflow-auto animate-in fade-in-0 zoom-in-95",
9451
+ collisionPadding: 8,
9452
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-3 flex flex-col gap-3 sm:flex-row max-w-[calc(100vw-1rem)] max-h-[calc(100vh-2rem)] overflow-auto animate-in fade-in-0 zoom-in-95",
9375
9453
  children: [
9376
9454
  presets && presets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1 min-w-[120px] sm:pr-3 sm:border-r sm:border-border", children: presets.map((p) => /* @__PURE__ */ jsxRuntime.jsx(
9377
9455
  "button",
@@ -9494,7 +9572,8 @@ function ColorPicker({
9494
9572
  {
9495
9573
  align: "start",
9496
9574
  sideOffset: 4,
9497
- className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-50 p-3 w-56 animate-in fade-in-0 zoom-in-95",
9575
+ collisionPadding: 8,
9576
+ className: "bg-surface text-foreground border border-border rounded-lg shadow-md z-popover p-3 w-56 animate-in fade-in-0 zoom-in-95",
9498
9577
  children: [
9499
9578
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-2 mb-3", children: swatches.map((sw) => /* @__PURE__ */ jsxRuntime.jsx(
9500
9579
  "button",
@@ -10199,19 +10278,19 @@ Object.defineProperty(exports, "createIcon", {
10199
10278
  });
10200
10279
  Object.defineProperty(exports, "COLORS", {
10201
10280
  enumerable: true,
10202
- get: function () { return chunkOAV4TA4B_cjs.colors_default; }
10281
+ get: function () { return chunkCNUDNGJM_cjs.colors_default; }
10203
10282
  });
10204
10283
  Object.defineProperty(exports, "palette", {
10205
10284
  enumerable: true,
10206
- get: function () { return chunkOAV4TA4B_cjs.PALETTE; }
10285
+ get: function () { return chunkCNUDNGJM_cjs.PALETTE; }
10207
10286
  });
10208
10287
  Object.defineProperty(exports, "semanticTokens", {
10209
10288
  enumerable: true,
10210
- get: function () { return chunkOAV4TA4B_cjs.semanticTokens; }
10289
+ get: function () { return chunkCNUDNGJM_cjs.semanticTokens; }
10211
10290
  });
10212
10291
  Object.defineProperty(exports, "vars", {
10213
10292
  enumerable: true,
10214
- get: function () { return chunkOAV4TA4B_cjs.vars; }
10293
+ get: function () { return chunkCNUDNGJM_cjs.vars; }
10215
10294
  });
10216
10295
  exports.Accordion = Accordion_default;
10217
10296
  exports.AppShell = AppShell;