@iris-ui-kit/react 0.2.1 → 0.2.3
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/admin.cjs +34 -27
- package/dist/admin.cjs.map +1 -1
- package/dist/admin.js +2 -2
- package/dist/behaviors.cjs +45 -0
- package/dist/behaviors.cjs.map +1 -1
- package/dist/behaviors.d.cts +38 -1
- package/dist/behaviors.d.ts +38 -1
- package/dist/behaviors.js +1 -1
- package/dist/{chunk-6BMFMCMQ.js → chunk-6S6MZC5G.js} +11 -4
- package/dist/chunk-6S6MZC5G.js.map +1 -0
- package/dist/{chunk-SJO74IB3.js → chunk-7ILMMLK6.js} +2 -2
- package/dist/chunk-7ILMMLK6.js.map +1 -0
- package/dist/{chunk-INEPOSCN.js → chunk-CYQO33XH.js} +3 -6
- package/dist/chunk-CYQO33XH.js.map +1 -0
- package/dist/{chunk-LXMTXHAS.js → chunk-KRFZ5KL4.js} +28 -28
- package/dist/chunk-KRFZ5KL4.js.map +1 -0
- package/dist/{chunk-53KFLVIZ.js → chunk-QZJXMCRR.js} +3 -2
- package/dist/chunk-QZJXMCRR.js.map +1 -0
- package/dist/{chunk-B4RS5WKC.js → chunk-V3KHE2WB.js} +137 -75
- package/dist/chunk-V3KHE2WB.js.map +1 -0
- package/dist/{chunk-BCL32KSE.js → chunk-ZE4GH2GV.js} +49 -5
- package/dist/chunk-ZE4GH2GV.js.map +1 -0
- package/dist/data.cjs +1 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.cts +4 -2
- package/dist/data.d.ts +4 -2
- package/dist/data.js +1 -1
- package/dist/floating.cjs +9 -2
- package/dist/floating.cjs.map +1 -1
- package/dist/floating.js +1 -1
- package/dist/index.cjs +4351 -2142
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +508 -23
- package/dist/index.d.ts +508 -23
- package/dist/index.js +3957 -1860
- package/dist/index.js.map +1 -1
- package/dist/layouts.cjs.map +1 -1
- package/dist/layouts.js +1 -1
- package/dist/skeletons.cjs +135 -73
- package/dist/skeletons.cjs.map +1 -1
- package/dist/skeletons.js +1 -1
- package/dist/undo.cjs +1 -4
- package/dist/undo.cjs.map +1 -1
- package/dist/undo.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-53KFLVIZ.js.map +0 -1
- package/dist/chunk-6BMFMCMQ.js.map +0 -1
- package/dist/chunk-B4RS5WKC.js.map +0 -1
- package/dist/chunk-BCL32KSE.js.map +0 -1
- package/dist/chunk-INEPOSCN.js.map +0 -1
- package/dist/chunk-LXMTXHAS.js.map +0 -1
- package/dist/chunk-SJO74IB3.js.map +0 -1
package/dist/layouts.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/layouts/Stack.tsx","../src/layouts/Container.tsx","../src/layouts/Grid.tsx","../src/layouts/SidebarLayout.tsx","../src/layouts/HeaderLayout.tsx","../src/layouts/DashboardGrid.tsx"],"names":["React","IrisStack","jsx","React2","IrisContainer","toCssSpacing","React3","IrisGrid","React4","jsxs","asLen"],"mappings":"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","file":"layouts.cjs","sourcesContent":["import * as React from 'react'\n\nexport type IrisStackDirection = 'row' | 'column'\nexport type IrisStackAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type IrisStackJustify = 'start' | 'center' | 'end' | 'between' | 'around'\n\nconst ALIGN_MAP: Record<IrisStackAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n}\n\nconst JUSTIFY_MAP: Record<IrisStackJustify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\nexport interface IrisStackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: IrisStackDirection\n spacing?: string | number\n align?: IrisStackAlign\n justify?: IrisStackJustify\n wrap?: boolean\n /** When true, renders as `inline-flex`. */\n inline?: boolean\n}\n\n/**\n * Flex container with token-driven spacing. The lightest possible layout\n * primitive — saves hand-writing `display: flex` everywhere.\n */\nexport const IrisStack = React.forwardRef<HTMLDivElement, IrisStackProps>(function IrisStack(\n {\n direction = 'column',\n spacing = 'md',\n align = 'stretch',\n justify = 'start',\n wrap = false,\n inline = false,\n style,\n children,\n ...rest\n },\n ref,\n) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-stack=\"\"\n data-iris-stack-direction={direction}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: toCssSpacing(spacing),\n alignItems: ALIGN_MAP[align],\n justifyContent: JUSTIFY_MAP[justify],\n flexWrap: wrap ? 'wrap' : 'nowrap',\n ...style,\n }}\n >\n {children}\n </div>\n )\n})\n","import * as React from 'react'\n\nexport type IrisContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full' | string\n\nconst WIDTH_MAP: Record<'sm' | 'md' | 'lg' | 'xl' | 'full', string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n full: '100%',\n}\n\nfunction resolveMaxWidth(input: IrisContainerMaxWidth): string {\n if (input === 'sm' || input === 'md' || input === 'lg' || input === 'xl' || input === 'full') {\n return WIDTH_MAP[input]\n }\n return input\n}\n\nfunction resolvePadding(input: string | number): string {\n if (typeof input === 'number') return `${input}px`\n if (input === 'sm' || input === 'md' || input === 'lg') {\n return `var(--iris-padding-${input})`\n }\n return input\n}\n\nexport interface IrisContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: IrisContainerMaxWidth\n padding?: string | number\n center?: boolean\n}\n\n/**\n * Centered max-width wrapper. Use to bound content width on large screens\n * without rewriting flex/grid plumbing.\n */\nexport const IrisContainer = React.forwardRef<HTMLDivElement, IrisContainerProps>(\n function IrisContainer(\n { maxWidth = 'lg', padding = 'md', center = true, style, children, ...rest },\n ref,\n ) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-container=\"\"\n data-iris-container-max-width={maxWidth}\n style={{\n width: '100%',\n maxWidth: resolveMaxWidth(maxWidth),\n padding: `0 ${resolvePadding(padding)}`,\n ...(center ? { marginInlineStart: 'auto', marginInlineEnd: 'auto' } : {}),\n ...style,\n }}\n >\n {children}\n </div>\n )\n },\n)\n","import * as React from 'react'\n\nexport type IrisGridColumns =\n | number\n | 'auto-fit'\n | 'auto-fill'\n | string /* raw grid-template-columns value */\n\nfunction resolveColumns(columns: IrisGridColumns, minColWidth: string): string {\n if (typeof columns === 'number') return `repeat(${columns}, minmax(0, 1fr))`\n if (columns === 'auto-fit') return `repeat(auto-fit, minmax(${minColWidth}, 1fr))`\n if (columns === 'auto-fill') return `repeat(auto-fill, minmax(${minColWidth}, 1fr))`\n return columns\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\nexport interface IrisGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: IrisGridColumns\n /** Min width per column for `auto-fit` / `auto-fill`. */\n minColWidth?: string\n rowGap?: string | number\n columnGap?: string | number\n /** Shorthand for both row + column gap. Overridden if rowGap/columnGap given. */\n gap?: string | number\n inline?: boolean\n}\n\n/**\n * Two-dimensional grid layout primitive. Three column modes:\n * - Fixed integer (`columns={3}`)\n * - Responsive auto-fit (`columns=\"auto-fit\"` + `minColWidth`)\n * - Raw CSS (`columns=\"100px 1fr 100px\"`)\n */\nexport const IrisGrid = React.forwardRef<HTMLDivElement, IrisGridProps>(function IrisGrid(\n {\n columns = 'auto-fit',\n minColWidth = '200px',\n rowGap,\n columnGap,\n gap = 'md',\n inline = false,\n style,\n children,\n ...rest\n },\n ref,\n) {\n const colTemplate = resolveColumns(columns, minColWidth)\n const resolvedRowGap = rowGap !== undefined ? toCssSpacing(rowGap) : toCssSpacing(gap)\n const resolvedColGap = columnGap !== undefined ? toCssSpacing(columnGap) : toCssSpacing(gap)\n\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-grid=\"\"\n data-iris-grid-columns={String(columns)}\n style={{\n display: inline ? 'inline-grid' : 'grid',\n gridTemplateColumns: colTemplate,\n rowGap: resolvedRowGap,\n columnGap: resolvedColGap,\n ...style,\n }}\n >\n {children}\n </div>\n )\n})\n","import * as React from 'react'\n\nexport interface IrisSidebarLayoutSidebarState {\n collapsed: boolean\n setCollapsed: (next: boolean) => void\n}\n\nexport interface IrisSidebarLayoutProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapsedChange?: (next: boolean) => void\n /** Sidebar width when expanded (px or CSS length). */\n width?: number | string\n /** Sidebar width when collapsed. */\n collapsedWidth?: number | string\n side?: 'left' | 'right'\n /** Sidebar content. May be a render function that receives `{ collapsed, setCollapsed }`. */\n sidebar?: React.ReactNode | ((state: IrisSidebarLayoutSidebarState) => React.ReactNode)\n children?: React.ReactNode\n}\n\nfunction asLen(v: number | string): string {\n return typeof v === 'number' ? `${v}px` : v\n}\n\n/**\n * Two-column layout with a collapsible sidebar. The sidebar is kept mounted\n * across collapses (only its width animates) so component state survives.\n */\nexport function IrisSidebarLayout({\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n width = 240,\n collapsedWidth = 60,\n side = 'left',\n sidebar,\n style,\n children,\n ...rest\n}: IrisSidebarLayoutProps): React.ReactElement {\n const isControlled = collapsedProp !== undefined\n const [internal, setInternal] = React.useState(defaultCollapsed)\n const collapsed = isControlled ? Boolean(collapsedProp) : internal\n\n const setCollapsed = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n },\n [isControlled, onCollapsedChange],\n )\n\n const sidebarContent =\n typeof sidebar === 'function'\n ? (sidebar as (s: IrisSidebarLayoutSidebarState) => React.ReactNode)({\n collapsed,\n setCollapsed,\n })\n : sidebar\n\n const sidebarStyle: React.CSSProperties = {\n width: collapsed ? asLen(collapsedWidth) : asLen(width),\n flexShrink: 0,\n background: 'var(--iris-surface)',\n borderRight: side === 'left' ? '1px solid var(--iris-border)' : 'none',\n borderLeft: side === 'right' ? '1px solid var(--iris-border)' : 'none',\n transition: 'width 180ms ease',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }\n\n return (\n <div\n {...rest}\n data-iris-sidebar-layout=\"\"\n data-collapsed={collapsed ? '' : undefined}\n data-side={side}\n style={{\n display: 'flex',\n flexDirection: side === 'right' ? 'row-reverse' : 'row',\n width: '100%',\n height: '100%',\n minHeight: 0,\n color: 'var(--iris-foreground)',\n ...style,\n }}\n >\n <aside\n role=\"complementary\"\n data-iris-sidebar=\"\"\n data-collapsed={collapsed ? '' : undefined}\n style={sidebarStyle}\n >\n {sidebarContent}\n </aside>\n <div\n data-iris-sidebar-main=\"\"\n style={{\n flex: 1,\n minWidth: 0,\n overflow: 'auto',\n background: 'var(--iris-background)',\n }}\n >\n {children}\n </div>\n </div>\n )\n}\n","import * as React from 'react'\n\nexport interface IrisHeaderLayoutProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Header height (px or CSS length). Default `'auto'`. */\n headerHeight?: number | string\n /** Footer height (px or CSS length). Default `'auto'`. */\n footerHeight?: number | string\n /** Header sticks via `position: sticky` instead of static. Default true. */\n sticky?: boolean\n header?: React.ReactNode\n footer?: React.ReactNode\n children?: React.ReactNode\n}\n\nfunction asLen(v: number | string): string {\n return typeof v === 'number' ? `${v}px` : v\n}\n\n/**\n * Two- (or three-) region vertical layout: a sticky header on top, a\n * scrollable main region, and an optional footer.\n */\nexport function IrisHeaderLayout({\n headerHeight = 'auto',\n footerHeight = 'auto',\n sticky = true,\n header,\n footer,\n style,\n children,\n ...rest\n}: IrisHeaderLayoutProps): React.ReactElement {\n return (\n <div\n {...rest}\n data-iris-header-layout=\"\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n minHeight: 0,\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n ...style,\n }}\n >\n {header ? (\n <header\n role=\"banner\"\n data-iris-header=\"\"\n style={{\n flexShrink: 0,\n height: asLen(headerHeight),\n borderBottom: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n position: sticky ? 'sticky' : 'static',\n top: 0,\n zIndex: 50,\n }}\n >\n {header}\n </header>\n ) : null}\n <main\n role=\"main\"\n data-iris-header-main=\"\"\n style={{ flex: 1, minHeight: 0, overflow: 'auto' }}\n >\n {children}\n </main>\n {footer ? (\n <footer\n role=\"contentinfo\"\n data-iris-footer=\"\"\n style={{\n flexShrink: 0,\n height: asLen(footerHeight),\n borderTop: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n }}\n >\n {footer}\n </footer>\n ) : null}\n </div>\n )\n}\n","import * as React from 'react'\n\nexport interface IrisDashboardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number\n gap?: number | string\n /** Use `repeat(auto-fill, minmax(<minColWidth>, 1fr))` instead of fixed `columns`. */\n minColWidth?: number | string\n}\n\n/**\n * 12-column responsive grid for dashboard composition. Each child controls\n * its span via `gridColumn` style or by wrapping with `IrisDashboardCard`.\n */\nexport function IrisDashboardGrid({\n columns = 12,\n gap = 16,\n minColWidth,\n style,\n children,\n ...rest\n}: IrisDashboardGridProps): React.ReactElement {\n const gapCss = typeof gap === 'number' ? `${gap}px` : gap\n const gridTemplateColumns = minColWidth\n ? `repeat(auto-fill, minmax(${\n typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth\n }, 1fr))`\n : `repeat(${columns}, 1fr)`\n\n return (\n <div\n {...rest}\n data-iris-dashboard-grid=\"\"\n style={{\n display: 'grid',\n gap: gapCss,\n gridTemplateColumns,\n width: '100%',\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nexport interface IrisDashboardCardProps extends React.HTMLAttributes<HTMLDivElement> {\n colSpan?: number | 'full'\n rowSpan?: number\n /** Show the styled card surface (background + border). Default true. */\n surface?: boolean\n}\n\n/**\n * A single dashboard grid cell. `colSpan='full'` makes it fill the row.\n */\nexport function IrisDashboardCard({\n colSpan = 1,\n rowSpan = 1,\n surface = true,\n style,\n children,\n ...rest\n}: IrisDashboardCardProps): React.ReactElement {\n const gridColumn = colSpan === 'full' ? '1 / -1' : `span ${colSpan}`\n const gridRow = rowSpan > 1 ? `span ${rowSpan}` : undefined\n\n return (\n <div\n {...rest}\n data-iris-dashboard-card=\"\"\n style={{\n gridColumn,\n gridRow,\n background: surface ? 'var(--iris-surface)' : 'transparent',\n border: surface ? '1px solid var(--iris-border)' : 'none',\n borderRadius: 'var(--iris-radius-md, 6px)',\n padding: surface ? 'var(--iris-padding-lg, 20px)' : 0,\n minWidth: 0,\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/layouts/Stack.tsx","../src/layouts/Container.tsx","../src/layouts/Grid.tsx","../src/layouts/SidebarLayout.tsx","../src/layouts/HeaderLayout.tsx","../src/layouts/DashboardGrid.tsx"],"names":["React","IrisStack","jsx","React2","IrisContainer","toCssSpacing","React3","IrisGrid","React4","jsxs","asLen"],"mappings":"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","file":"layouts.cjs","sourcesContent":["import * as React from 'react'\n\nexport type IrisStackDirection = 'row' | 'column'\nexport type IrisStackAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type IrisStackJustify = 'start' | 'center' | 'end' | 'between' | 'around'\n\nconst ALIGN_MAP: Record<IrisStackAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n}\n\nconst JUSTIFY_MAP: Record<IrisStackJustify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\nexport interface IrisStackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: IrisStackDirection\n spacing?: string | number\n align?: IrisStackAlign\n justify?: IrisStackJustify\n wrap?: boolean\n /** When true, renders as `inline-flex`. */\n inline?: boolean\n}\n\n/**\n * Flex container with token-driven spacing. The lightest possible layout\n * primitive — saves hand-writing `display: flex` everywhere.\n */\nexport const IrisStack = React.forwardRef<HTMLDivElement, IrisStackProps>(function IrisStack(\n {\n direction = 'column',\n spacing = 'md',\n align = 'stretch',\n justify = 'start',\n wrap = false,\n inline = false,\n style,\n children,\n ...rest\n },\n ref,\n) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-stack=\"\"\n data-iris-stack-direction={direction}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: toCssSpacing(spacing),\n alignItems: ALIGN_MAP[align],\n justifyContent: JUSTIFY_MAP[justify],\n flexWrap: wrap ? 'wrap' : 'nowrap',\n ...style,\n }}\n >\n {children}\n </div>\n )\n})\n","import * as React from 'react'\n\nexport type IrisContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full' | string\n\nconst WIDTH_MAP: Record<'sm' | 'md' | 'lg' | 'xl' | 'full', string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n full: '100%',\n}\n\nfunction resolveMaxWidth(input: IrisContainerMaxWidth): string {\n if (input === 'sm' || input === 'md' || input === 'lg' || input === 'xl' || input === 'full') {\n return WIDTH_MAP[input]\n }\n return input\n}\n\nfunction resolvePadding(input: string | number): string {\n if (typeof input === 'number') return `${input}px`\n if (input === 'sm' || input === 'md' || input === 'lg') {\n return `var(--iris-padding-${input})`\n }\n return input\n}\n\nexport interface IrisContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: IrisContainerMaxWidth\n padding?: string | number\n center?: boolean\n}\n\n/**\n * Centered max-width wrapper. Use to bound content width on large screens\n * without rewriting flex/grid plumbing.\n */\nexport const IrisContainer = React.forwardRef<HTMLDivElement, IrisContainerProps>(\n function IrisContainer(\n { maxWidth = 'lg', padding = 'md', center = true, style, children, ...rest },\n ref,\n ) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-container=\"\"\n data-iris-container-max-width={maxWidth}\n style={{\n width: '100%',\n maxWidth: resolveMaxWidth(maxWidth),\n padding: `0 ${resolvePadding(padding)}`,\n ...(center ? { marginInlineStart: 'auto', marginInlineEnd: 'auto' } : {}),\n ...style,\n }}\n >\n {children}\n </div>\n )\n },\n)\n","import * as React from 'react'\n\nexport type IrisGridColumns =\n number | 'auto-fit' | 'auto-fill' | string /* raw grid-template-columns value */\n\nfunction resolveColumns(columns: IrisGridColumns, minColWidth: string): string {\n if (typeof columns === 'number') return `repeat(${columns}, minmax(0, 1fr))`\n if (columns === 'auto-fit') return `repeat(auto-fit, minmax(${minColWidth}, 1fr))`\n if (columns === 'auto-fill') return `repeat(auto-fill, minmax(${minColWidth}, 1fr))`\n return columns\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\nexport interface IrisGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: IrisGridColumns\n /** Min width per column for `auto-fit` / `auto-fill`. */\n minColWidth?: string\n rowGap?: string | number\n columnGap?: string | number\n /** Shorthand for both row + column gap. Overridden if rowGap/columnGap given. */\n gap?: string | number\n inline?: boolean\n}\n\n/**\n * Two-dimensional grid layout primitive. Three column modes:\n * - Fixed integer (`columns={3}`)\n * - Responsive auto-fit (`columns=\"auto-fit\"` + `minColWidth`)\n * - Raw CSS (`columns=\"100px 1fr 100px\"`)\n */\nexport const IrisGrid = React.forwardRef<HTMLDivElement, IrisGridProps>(function IrisGrid(\n {\n columns = 'auto-fit',\n minColWidth = '200px',\n rowGap,\n columnGap,\n gap = 'md',\n inline = false,\n style,\n children,\n ...rest\n },\n ref,\n) {\n const colTemplate = resolveColumns(columns, minColWidth)\n const resolvedRowGap = rowGap !== undefined ? toCssSpacing(rowGap) : toCssSpacing(gap)\n const resolvedColGap = columnGap !== undefined ? toCssSpacing(columnGap) : toCssSpacing(gap)\n\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-grid=\"\"\n data-iris-grid-columns={String(columns)}\n style={{\n display: inline ? 'inline-grid' : 'grid',\n gridTemplateColumns: colTemplate,\n rowGap: resolvedRowGap,\n columnGap: resolvedColGap,\n ...style,\n }}\n >\n {children}\n </div>\n )\n})\n","import * as React from 'react'\n\nexport interface IrisSidebarLayoutSidebarState {\n collapsed: boolean\n setCollapsed: (next: boolean) => void\n}\n\nexport interface IrisSidebarLayoutProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n collapsed?: boolean\n defaultCollapsed?: boolean\n onCollapsedChange?: (next: boolean) => void\n /** Sidebar width when expanded (px or CSS length). */\n width?: number | string\n /** Sidebar width when collapsed. */\n collapsedWidth?: number | string\n side?: 'left' | 'right'\n /** Sidebar content. May be a render function that receives `{ collapsed, setCollapsed }`. */\n sidebar?: React.ReactNode | ((state: IrisSidebarLayoutSidebarState) => React.ReactNode)\n children?: React.ReactNode\n}\n\nfunction asLen(v: number | string): string {\n return typeof v === 'number' ? `${v}px` : v\n}\n\n/**\n * Two-column layout with a collapsible sidebar. The sidebar is kept mounted\n * across collapses (only its width animates) so component state survives.\n */\nexport function IrisSidebarLayout({\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n width = 240,\n collapsedWidth = 60,\n side = 'left',\n sidebar,\n style,\n children,\n ...rest\n}: IrisSidebarLayoutProps): React.ReactElement {\n const isControlled = collapsedProp !== undefined\n const [internal, setInternal] = React.useState(defaultCollapsed)\n const collapsed = isControlled ? Boolean(collapsedProp) : internal\n\n const setCollapsed = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n },\n [isControlled, onCollapsedChange],\n )\n\n const sidebarContent =\n typeof sidebar === 'function'\n ? (sidebar as (s: IrisSidebarLayoutSidebarState) => React.ReactNode)({\n collapsed,\n setCollapsed,\n })\n : sidebar\n\n const sidebarStyle: React.CSSProperties = {\n width: collapsed ? asLen(collapsedWidth) : asLen(width),\n flexShrink: 0,\n background: 'var(--iris-surface)',\n borderRight: side === 'left' ? '1px solid var(--iris-border)' : 'none',\n borderLeft: side === 'right' ? '1px solid var(--iris-border)' : 'none',\n transition: 'width 180ms ease',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }\n\n return (\n <div\n {...rest}\n data-iris-sidebar-layout=\"\"\n data-collapsed={collapsed ? '' : undefined}\n data-side={side}\n style={{\n display: 'flex',\n flexDirection: side === 'right' ? 'row-reverse' : 'row',\n width: '100%',\n height: '100%',\n minHeight: 0,\n color: 'var(--iris-foreground)',\n ...style,\n }}\n >\n <aside\n role=\"complementary\"\n data-iris-sidebar=\"\"\n data-collapsed={collapsed ? '' : undefined}\n style={sidebarStyle}\n >\n {sidebarContent}\n </aside>\n <div\n data-iris-sidebar-main=\"\"\n style={{\n flex: 1,\n minWidth: 0,\n overflow: 'auto',\n background: 'var(--iris-background)',\n }}\n >\n {children}\n </div>\n </div>\n )\n}\n","import * as React from 'react'\n\nexport interface IrisHeaderLayoutProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Header height (px or CSS length). Default `'auto'`. */\n headerHeight?: number | string\n /** Footer height (px or CSS length). Default `'auto'`. */\n footerHeight?: number | string\n /** Header sticks via `position: sticky` instead of static. Default true. */\n sticky?: boolean\n header?: React.ReactNode\n footer?: React.ReactNode\n children?: React.ReactNode\n}\n\nfunction asLen(v: number | string): string {\n return typeof v === 'number' ? `${v}px` : v\n}\n\n/**\n * Two- (or three-) region vertical layout: a sticky header on top, a\n * scrollable main region, and an optional footer.\n */\nexport function IrisHeaderLayout({\n headerHeight = 'auto',\n footerHeight = 'auto',\n sticky = true,\n header,\n footer,\n style,\n children,\n ...rest\n}: IrisHeaderLayoutProps): React.ReactElement {\n return (\n <div\n {...rest}\n data-iris-header-layout=\"\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n minHeight: 0,\n background: 'var(--iris-background)',\n color: 'var(--iris-foreground)',\n ...style,\n }}\n >\n {header ? (\n <header\n role=\"banner\"\n data-iris-header=\"\"\n style={{\n flexShrink: 0,\n height: asLen(headerHeight),\n borderBottom: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n position: sticky ? 'sticky' : 'static',\n top: 0,\n zIndex: 50,\n }}\n >\n {header}\n </header>\n ) : null}\n <main\n role=\"main\"\n data-iris-header-main=\"\"\n style={{ flex: 1, minHeight: 0, overflow: 'auto' }}\n >\n {children}\n </main>\n {footer ? (\n <footer\n role=\"contentinfo\"\n data-iris-footer=\"\"\n style={{\n flexShrink: 0,\n height: asLen(footerHeight),\n borderTop: '1px solid var(--iris-border)',\n background: 'var(--iris-surface)',\n }}\n >\n {footer}\n </footer>\n ) : null}\n </div>\n )\n}\n","import * as React from 'react'\n\nexport interface IrisDashboardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number\n gap?: number | string\n /** Use `repeat(auto-fill, minmax(<minColWidth>, 1fr))` instead of fixed `columns`. */\n minColWidth?: number | string\n}\n\n/**\n * 12-column responsive grid for dashboard composition. Each child controls\n * its span via `gridColumn` style or by wrapping with `IrisDashboardCard`.\n */\nexport function IrisDashboardGrid({\n columns = 12,\n gap = 16,\n minColWidth,\n style,\n children,\n ...rest\n}: IrisDashboardGridProps): React.ReactElement {\n const gapCss = typeof gap === 'number' ? `${gap}px` : gap\n const gridTemplateColumns = minColWidth\n ? `repeat(auto-fill, minmax(${\n typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth\n }, 1fr))`\n : `repeat(${columns}, 1fr)`\n\n return (\n <div\n {...rest}\n data-iris-dashboard-grid=\"\"\n style={{\n display: 'grid',\n gap: gapCss,\n gridTemplateColumns,\n width: '100%',\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nexport interface IrisDashboardCardProps extends React.HTMLAttributes<HTMLDivElement> {\n colSpan?: number | 'full'\n rowSpan?: number\n /** Show the styled card surface (background + border). Default true. */\n surface?: boolean\n}\n\n/**\n * A single dashboard grid cell. `colSpan='full'` makes it fill the row.\n */\nexport function IrisDashboardCard({\n colSpan = 1,\n rowSpan = 1,\n surface = true,\n style,\n children,\n ...rest\n}: IrisDashboardCardProps): React.ReactElement {\n const gridColumn = colSpan === 'full' ? '1 / -1' : `span ${colSpan}`\n const gridRow = rowSpan > 1 ? `span ${rowSpan}` : undefined\n\n return (\n <div\n {...rest}\n data-iris-dashboard-card=\"\"\n style={{\n gridColumn,\n gridRow,\n background: surface ? 'var(--iris-surface)' : 'transparent',\n border: surface ? '1px solid var(--iris-border)' : 'none',\n borderRadius: 'var(--iris-radius-md, 6px)',\n padding: surface ? 'var(--iris-padding-lg, 20px)' : 0,\n minWidth: 0,\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n"]}
|
package/dist/layouts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
export { IrisGrid } from './chunk-
|
|
2
|
+
export { IrisGrid } from './chunk-7ILMMLK6.js';
|
|
3
3
|
export { IrisContainer, IrisDashboardCard, IrisDashboardGrid, IrisStack } from './chunk-ZKBDUWUD.js';
|
|
4
4
|
export { IrisHeaderLayout, IrisSidebarLayout } from './chunk-J5FB2UB2.js';
|
|
5
5
|
//# sourceMappingURL=layouts.js.map
|
package/dist/skeletons.cjs
CHANGED
|
@@ -119,9 +119,13 @@ var IrisContainer = React9__namespace.forwardRef(
|
|
|
119
119
|
}
|
|
120
120
|
);
|
|
121
121
|
var SIZE_MAP = {
|
|
122
|
-
sm: { padding: "4px 8px", fontSize: "12px", minHeight: "28px" },
|
|
123
|
-
md: {
|
|
124
|
-
|
|
122
|
+
sm: { padding: "4px 8px", fontSize: "var(--iris-font-size-xs, 12px)", minHeight: "28px" },
|
|
123
|
+
md: {
|
|
124
|
+
padding: "var(--iris-padding-sm, 6px) var(--iris-padding-md, 12px)",
|
|
125
|
+
fontSize: "var(--iris-font-size-md, 14px)",
|
|
126
|
+
minHeight: "34px"
|
|
127
|
+
},
|
|
128
|
+
lg: { padding: "8px 12px", fontSize: "var(--iris-font-size-lg, 16px)", minHeight: "40px" }
|
|
125
129
|
};
|
|
126
130
|
var IrisInput = React9__namespace.forwardRef(function IrisInput2({
|
|
127
131
|
size = "md",
|
|
@@ -138,11 +142,11 @@ var IrisInput = React9__namespace.forwardRef(function IrisInput2({
|
|
|
138
142
|
const [focused, setFocused] = React9__namespace.useState(false);
|
|
139
143
|
const sizeStyles = SIZE_MAP[size];
|
|
140
144
|
const borderColor = invalid ? "var(--iris-danger)" : focused ? "var(--iris-primary)" : "var(--iris-border)";
|
|
141
|
-
const boxShadow = focused ? `0 0 0 3px ${invalid ? "
|
|
145
|
+
const boxShadow = focused ? `0 0 0 3px ${invalid ? "color-mix(in srgb, var(--iris-danger) 18%, transparent)" : "color-mix(in srgb, var(--iris-primary) 18%, transparent)"}` : "none";
|
|
142
146
|
const wrapperStyle = {
|
|
143
147
|
display: "inline-flex",
|
|
144
148
|
alignItems: "center",
|
|
145
|
-
gap: "
|
|
149
|
+
gap: "var(--iris-space-xs, 8px)",
|
|
146
150
|
background: "var(--iris-background)",
|
|
147
151
|
color: "var(--iris-foreground)",
|
|
148
152
|
border: `1px solid ${borderColor}`,
|
|
@@ -265,8 +269,8 @@ var IrisPasswordInput = React9__namespace.forwardRef(
|
|
|
265
269
|
border: "none",
|
|
266
270
|
cursor: disabled ? "not-allowed" : "pointer",
|
|
267
271
|
color: "var(--iris-muted)",
|
|
268
|
-
padding: "0
|
|
269
|
-
fontSize:
|
|
272
|
+
padding: "0 var(--iris-space-xxs, 4px)",
|
|
273
|
+
fontSize: "var(--iris-font-size-sm, 13px)",
|
|
270
274
|
lineHeight: 1
|
|
271
275
|
},
|
|
272
276
|
children: visible ? "\u{1F648}" : "\u{1F441}"
|
|
@@ -416,8 +420,12 @@ var CSS = `
|
|
|
416
420
|
cursor: not-allowed;
|
|
417
421
|
opacity: 0.6;
|
|
418
422
|
}
|
|
419
|
-
.iris-button[data-iris-button-variant="solid"]:not([disabled]):not([aria-busy="true"]):hover
|
|
420
|
-
|
|
423
|
+
.iris-button[data-iris-button-variant="solid"]:not([disabled]):not([aria-busy="true"]):hover,
|
|
424
|
+
.iris-button[data-iris-button-variant="danger"]:not([disabled]):not([aria-busy="true"]):hover {
|
|
425
|
+
background: color-mix(in srgb, var(--iris-danger) 92%, var(--iris-surface));
|
|
426
|
+
}
|
|
427
|
+
.iris-button:not([disabled]):not([aria-busy="true"]):active {
|
|
428
|
+
transform: scale(0.98);
|
|
421
429
|
}
|
|
422
430
|
.iris-button[data-iris-button-variant="outline"]:not([disabled]):not([aria-busy="true"]):hover,
|
|
423
431
|
.iris-button[data-iris-button-variant="ghost"]:not([disabled]):not([aria-busy="true"]):hover {
|
|
@@ -455,9 +463,18 @@ function installButtonStyles() {
|
|
|
455
463
|
installed = true;
|
|
456
464
|
}
|
|
457
465
|
var SIZE_STYLES = {
|
|
458
|
-
sm: {
|
|
459
|
-
|
|
460
|
-
|
|
466
|
+
sm: {
|
|
467
|
+
padding: "var(--iris-padding-sm) var(--iris-padding-md)",
|
|
468
|
+
fontSize: "var(--iris-font-size-xs, 12px)"
|
|
469
|
+
},
|
|
470
|
+
md: {
|
|
471
|
+
padding: "var(--iris-padding-sm) var(--iris-padding-lg)",
|
|
472
|
+
fontSize: "var(--iris-font-size-md, 14px)"
|
|
473
|
+
},
|
|
474
|
+
lg: {
|
|
475
|
+
padding: "var(--iris-padding-md) var(--iris-padding-lg)",
|
|
476
|
+
fontSize: "var(--iris-font-size-lg, 16px)"
|
|
477
|
+
}
|
|
461
478
|
};
|
|
462
479
|
var VARIANT_STYLES = {
|
|
463
480
|
solid: {
|
|
@@ -480,6 +497,11 @@ var VARIANT_STYLES = {
|
|
|
480
497
|
color: "var(--iris-primary)",
|
|
481
498
|
border: "1px solid transparent",
|
|
482
499
|
textDecoration: "none"
|
|
500
|
+
},
|
|
501
|
+
danger: {
|
|
502
|
+
background: "var(--iris-danger)",
|
|
503
|
+
color: "var(--iris-on-color, #ffffff)",
|
|
504
|
+
border: "1px solid var(--iris-danger)"
|
|
483
505
|
}
|
|
484
506
|
};
|
|
485
507
|
function buildInlineStyle(variant, size) {
|
|
@@ -627,7 +649,7 @@ var IrisFormField = React9__namespace.forwardRef(
|
|
|
627
649
|
{
|
|
628
650
|
id: hintId,
|
|
629
651
|
"data-iris-form-field-hint": "",
|
|
630
|
-
style: { fontSize:
|
|
652
|
+
style: { fontSize: "var(--iris-font-size-xs, 12px)", color: "var(--iris-muted)" },
|
|
631
653
|
children: hint
|
|
632
654
|
}
|
|
633
655
|
) : null,
|
|
@@ -637,7 +659,7 @@ var IrisFormField = React9__namespace.forwardRef(
|
|
|
637
659
|
id: errorId,
|
|
638
660
|
"data-iris-form-field-error": "",
|
|
639
661
|
role: "alert",
|
|
640
|
-
style: { fontSize:
|
|
662
|
+
style: { fontSize: "var(--iris-font-size-xs, 12px)", color: "var(--iris-danger)" },
|
|
641
663
|
children: error
|
|
642
664
|
}
|
|
643
665
|
) : null
|
|
@@ -647,7 +669,7 @@ var IrisFormField = React9__namespace.forwardRef(
|
|
|
647
669
|
}
|
|
648
670
|
);
|
|
649
671
|
var TONE_TO_VAR = {
|
|
650
|
-
info: "--iris-
|
|
672
|
+
info: "--iris-info",
|
|
651
673
|
success: "--iris-success",
|
|
652
674
|
warning: "--iris-warning",
|
|
653
675
|
danger: "--iris-danger"
|
|
@@ -728,7 +750,7 @@ function IrisAlert({
|
|
|
728
750
|
border: "none",
|
|
729
751
|
cursor: "pointer",
|
|
730
752
|
color: "var(--iris-muted)",
|
|
731
|
-
fontSize:
|
|
753
|
+
fontSize: "var(--iris-font-size-lg, 16px)",
|
|
732
754
|
padding: 0,
|
|
733
755
|
lineHeight: 1,
|
|
734
756
|
flexShrink: 0
|
|
@@ -807,9 +829,9 @@ function IrisDivider({
|
|
|
807
829
|
gap: 8,
|
|
808
830
|
margin: `${SPACING_MAP[spacing]} 0`,
|
|
809
831
|
color: "var(--iris-muted)",
|
|
810
|
-
fontSize:
|
|
832
|
+
fontSize: "var(--iris-font-size-xs, 12px)",
|
|
811
833
|
textTransform: "uppercase",
|
|
812
|
-
letterSpacing: "0.04em",
|
|
834
|
+
letterSpacing: "var(--iris-letter-spacing-wide, 0.04em)",
|
|
813
835
|
...style
|
|
814
836
|
},
|
|
815
837
|
children: [
|
|
@@ -871,18 +893,28 @@ function IrisLoginTemplate({
|
|
|
871
893
|
border: "1px solid var(--iris-border)",
|
|
872
894
|
borderRadius: "var(--iris-radius-lg, 8px)",
|
|
873
895
|
padding: 32,
|
|
874
|
-
boxShadow: "
|
|
896
|
+
boxShadow: "var(--iris-shadow-md)"
|
|
875
897
|
},
|
|
876
898
|
children: /* @__PURE__ */ jsxRuntime.jsxs(IrisStack, { spacing: "lg", children: [
|
|
877
899
|
header ?? /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "center" }, children: [
|
|
878
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
900
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
901
|
+
"h1",
|
|
902
|
+
{
|
|
903
|
+
style: {
|
|
904
|
+
margin: "0 0 4px 0",
|
|
905
|
+
fontSize: "var(--iris-font-size-2xl, 20px)",
|
|
906
|
+
fontWeight: 700
|
|
907
|
+
},
|
|
908
|
+
children: title
|
|
909
|
+
}
|
|
910
|
+
),
|
|
879
911
|
description ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
880
912
|
"p",
|
|
881
913
|
{
|
|
882
914
|
style: {
|
|
883
915
|
margin: 0,
|
|
884
916
|
color: "var(--iris-muted)",
|
|
885
|
-
fontSize:
|
|
917
|
+
fontSize: "var(--iris-font-size-md, 14px)"
|
|
886
918
|
},
|
|
887
919
|
children: description
|
|
888
920
|
}
|
|
@@ -1201,7 +1233,7 @@ function IrisDashboardTemplate({
|
|
|
1201
1233
|
{
|
|
1202
1234
|
style: {
|
|
1203
1235
|
padding: "8px 12px",
|
|
1204
|
-
fontSize:
|
|
1236
|
+
fontSize: "var(--iris-font-size-md, 14px)",
|
|
1205
1237
|
fontWeight: 600,
|
|
1206
1238
|
color: "var(--iris-foreground)",
|
|
1207
1239
|
opacity: state.collapsed ? 0 : 1,
|
|
@@ -1212,60 +1244,81 @@ function IrisDashboardTemplate({
|
|
|
1212
1244
|
children: sidebarTitle
|
|
1213
1245
|
}
|
|
1214
1246
|
) : null,
|
|
1215
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
"
|
|
1219
|
-
{
|
|
1220
|
-
|
|
1221
|
-
"
|
|
1222
|
-
"
|
|
1223
|
-
onClick: () => onActiveIdChange?.(item.id),
|
|
1224
|
-
style: {
|
|
1225
|
-
display: "flex",
|
|
1226
|
-
alignItems: "center",
|
|
1227
|
-
gap: 10,
|
|
1228
|
-
padding: "8px 12px",
|
|
1229
|
-
background: isActive ? "var(--iris-primary)" : "transparent",
|
|
1230
|
-
color: isActive ? "var(--iris-primary-foreground, #fff)" : "var(--iris-foreground)",
|
|
1231
|
-
border: "none",
|
|
1232
|
-
borderRadius: "var(--iris-radius-sm, 4px)",
|
|
1233
|
-
cursor: "pointer",
|
|
1234
|
-
fontSize: 14,
|
|
1235
|
-
fontFamily: "inherit",
|
|
1236
|
-
textAlign: "start",
|
|
1237
|
-
outline: "none"
|
|
1238
|
-
},
|
|
1239
|
-
children: [
|
|
1240
|
-
item.icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1241
|
-
"span",
|
|
1242
|
-
{
|
|
1243
|
-
"aria-hidden": "true",
|
|
1244
|
-
style: { width: 16, display: "inline-flex", justifyContent: "center" },
|
|
1245
|
-
children: item.icon
|
|
1246
|
-
}
|
|
1247
|
-
) : null,
|
|
1248
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1249
|
-
"span",
|
|
1250
|
-
{
|
|
1251
|
-
style: {
|
|
1252
|
-
opacity: state.collapsed ? 0 : 1,
|
|
1253
|
-
transition: "opacity 120ms ease",
|
|
1254
|
-
whiteSpace: "nowrap"
|
|
1255
|
-
},
|
|
1256
|
-
children: item.label
|
|
1257
|
-
}
|
|
1258
|
-
)
|
|
1259
|
-
]
|
|
1247
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1248
|
+
"nav",
|
|
1249
|
+
{
|
|
1250
|
+
"aria-label": "Primary",
|
|
1251
|
+
style: {
|
|
1252
|
+
display: "flex",
|
|
1253
|
+
flexDirection: "column",
|
|
1254
|
+
gap: "var(--iris-space-xxs, 4px)"
|
|
1260
1255
|
},
|
|
1261
|
-
item
|
|
1262
|
-
|
|
1263
|
-
|
|
1256
|
+
children: nav.map((item) => {
|
|
1257
|
+
const isActive = item.id === activeId;
|
|
1258
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1259
|
+
"button",
|
|
1260
|
+
{
|
|
1261
|
+
type: "button",
|
|
1262
|
+
"data-iris-dashboard-nav-item": item.id,
|
|
1263
|
+
"data-iris-dashboard-nav-active": isActive ? "true" : void 0,
|
|
1264
|
+
onClick: () => onActiveIdChange?.(item.id),
|
|
1265
|
+
style: {
|
|
1266
|
+
display: "flex",
|
|
1267
|
+
alignItems: "center",
|
|
1268
|
+
gap: "var(--iris-space-sm, 12px)",
|
|
1269
|
+
padding: "8px 12px",
|
|
1270
|
+
background: isActive ? "var(--iris-primary)" : "transparent",
|
|
1271
|
+
color: isActive ? "var(--iris-primary-foreground, #fff)" : "var(--iris-foreground)",
|
|
1272
|
+
border: "none",
|
|
1273
|
+
borderRadius: "var(--iris-radius-sm, 4px)",
|
|
1274
|
+
cursor: "pointer",
|
|
1275
|
+
fontSize: "var(--iris-font-size-md, 14px)",
|
|
1276
|
+
fontFamily: "inherit",
|
|
1277
|
+
textAlign: "start",
|
|
1278
|
+
outline: "none"
|
|
1279
|
+
},
|
|
1280
|
+
children: [
|
|
1281
|
+
item.icon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1282
|
+
"span",
|
|
1283
|
+
{
|
|
1284
|
+
"aria-hidden": "true",
|
|
1285
|
+
style: { width: 16, display: "inline-flex", justifyContent: "center" },
|
|
1286
|
+
children: item.icon
|
|
1287
|
+
}
|
|
1288
|
+
) : null,
|
|
1289
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1290
|
+
"span",
|
|
1291
|
+
{
|
|
1292
|
+
style: {
|
|
1293
|
+
opacity: state.collapsed ? 0 : 1,
|
|
1294
|
+
transition: "opacity 120ms ease",
|
|
1295
|
+
whiteSpace: "nowrap"
|
|
1296
|
+
},
|
|
1297
|
+
children: item.label
|
|
1298
|
+
}
|
|
1299
|
+
)
|
|
1300
|
+
]
|
|
1301
|
+
},
|
|
1302
|
+
item.id
|
|
1303
|
+
);
|
|
1304
|
+
})
|
|
1305
|
+
}
|
|
1306
|
+
)
|
|
1264
1307
|
] }),
|
|
1265
1308
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1266
1309
|
IrisHeaderLayout,
|
|
1267
1310
|
{
|
|
1268
|
-
header: header ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1311
|
+
header: header ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1312
|
+
"div",
|
|
1313
|
+
{
|
|
1314
|
+
style: {
|
|
1315
|
+
padding: "12px 20px",
|
|
1316
|
+
fontSize: "var(--iris-font-size-lg, 16px)",
|
|
1317
|
+
fontWeight: 600
|
|
1318
|
+
},
|
|
1319
|
+
children: title
|
|
1320
|
+
}
|
|
1321
|
+
),
|
|
1269
1322
|
children: children ?? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: 20 }, children: /* @__PURE__ */ jsxRuntime.jsx(IrisDashboardGrid, { columns: 12, gap: 16, children: cards.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1270
1323
|
IrisDashboardCard,
|
|
1271
1324
|
{
|
|
@@ -1278,14 +1331,23 @@ function IrisDashboardTemplate({
|
|
|
1278
1331
|
{
|
|
1279
1332
|
style: {
|
|
1280
1333
|
margin: "0 0 8px 0",
|
|
1281
|
-
fontSize:
|
|
1334
|
+
fontSize: "var(--iris-font-size-md, 14px)",
|
|
1282
1335
|
fontWeight: 600,
|
|
1283
1336
|
color: "var(--iris-foreground)"
|
|
1284
1337
|
},
|
|
1285
1338
|
children: card.title
|
|
1286
1339
|
}
|
|
1287
1340
|
),
|
|
1288
|
-
cardSlots?.[card.id] !== void 0 ? cardSlots[card.id] : card.body ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1341
|
+
cardSlots?.[card.id] !== void 0 ? cardSlots[card.id] : card.body ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1342
|
+
"div",
|
|
1343
|
+
{
|
|
1344
|
+
style: {
|
|
1345
|
+
fontSize: "var(--iris-font-size-sm, 13px)",
|
|
1346
|
+
color: "var(--iris-muted)"
|
|
1347
|
+
},
|
|
1348
|
+
children: card.body
|
|
1349
|
+
}
|
|
1350
|
+
) : null
|
|
1289
1351
|
]
|
|
1290
1352
|
},
|
|
1291
1353
|
card.id
|