@mirror-physics/fractal-ui 0.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button/Button.css","../src/components/Card/Card.css","../src/components/PromptCard/PromptCard.css","../src/components/Input/Input.css","../src/components/Label/Label.css","../src/components/Alert/Alert.css","../src/components/Toggle/Toggle.css","../src/components/Modal/Modal.css","../src/components/DataTable/DataTable.css","../src/components/Dropdown/Dropdown.css","../src/components/Link/Link.css","../src/components/Chip/Chip.css","../src/components/SortableTable/SortableTable.css","../src/components/Tabs/Tabs.css","../src/components/Disclosure/Disclosure.css","../src/components/Sidebar/Sidebar.css"],"sourcesContent":[".fractal-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n font-weight: 400;\n font-family: var(--font-sans);\n line-height: 1;\n text-decoration: none;\n box-sizing: border-box;\n transform: scale(1);\n transition: transform 120ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* Press: subtle shrink, then expand on release. 120ms / ease-out per motion guide. */\n.fractal-button--primary:active:not(:disabled),\n.fractal-button--secondary:active:not(:disabled),\n.fractal-button--ghost:active:not(:disabled),\n.fractal-button--danger:active:not(:disabled) {\n transform: scale(0.97);\n}\n\n/* Focus ring: 2px --border-focus, 2px offset. Per principles.md Focus section. */\n.fractal-button:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--bg-canvas, #fff), 0 0 0 4px var(--border-focus, var(--blue-500));\n}\n\n.fractal-button:disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fractal-button {\n transition-duration: 0.01ms;\n }\n}\n",".fractal-card {\n border-radius: var(--radius-lg, 8px);\n border: 1px solid var(--border-subtle);\n background-color: var(--bg-surface-1);\n color: var(--fg-primary);\n box-shadow: var(--shadow-xs);\n font-family: var(--font-sans);\n}\n\n.fractal-card-header {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: var(--space-6, 24px);\n}\n\n.fractal-card-title {\n margin: 0;\n font-size: 1.5rem;\n font-weight: 600;\n line-height: 1;\n letter-spacing: -0.02em;\n color: var(--fg-primary);\n}\n\n.fractal-card-description {\n margin: 0;\n font-size: 0.875rem;\n color: var(--fg-secondary);\n}\n\n.fractal-card-content {\n padding: 0 var(--space-6, 24px) var(--space-6, 24px);\n}\n\n.fractal-card-footer {\n display: flex;\n align-items: center;\n padding: 0 var(--space-6, 24px) var(--space-6, 24px);\n}\n\n/* ---- FeatureCard ---- */\n\n.fractal-feature-card {\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-xl, 12px);\n background: var(--bg-canvas);\n padding: 40px; /* var(--space-8) */\n display: flex;\n flex-direction: column;\n font-family: var(--font-sans);\n transition: background 200ms ease;\n}\n\n.fractal-feature-card:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-feature-card__icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n color: var(--fg-primary);\n margin-bottom: 24px; /* var(--space-6) */\n}\n\n.fractal-feature-card__title {\n margin: 0 0 8px; /* var(--space-2) below title */\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.5;\n color: var(--fg-primary);\n}\n\n.fractal-feature-card__description {\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.4;\n color: var(--fg-secondary);\n}\n\n/* ---- ProjectCard ---- */\n\n.fractal-folder-card {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-lg, 8px);\n background: var(--bg-canvas);\n cursor: pointer;\n text-align: left;\n overflow: hidden;\n font-family: var(--font-sans);\n transition: background 150ms ease, border-color 150ms ease, transform 120ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.fractal-folder-card:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-folder-card:active:not(:disabled) {\n transform: scale(0.97);\n}\n\n.fractal-folder-card--selected {\n border-color: var(--accent-default);\n}\n\n.fractal-folder-card--selected:hover {\n background: var(--accent-surface);\n}\n\n.fractal-folder-card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--bg-canvas, #fff), 0 0 0 4px var(--accent-default, var(--blue-500));\n}\n\n.fractal-folder-card__header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n}\n\n.fractal-folder-card__icon {\n flex-shrink: 0;\n color: var(--fg-secondary);\n}\n\n.fractal-folder-card__name {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--fg-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.fractal-folder-card__footer {\n padding: 8px 16px;\n}\n\n.fractal-folder-card__sessions {\n font-size: 0.75rem;\n color: var(--fg-secondary);\n}\n",".fractal-prompt-card {\n --prompt-card-bg: var(--accent-surface);\n --prompt-card-bg-hover: var(--accent-subtle);\n --prompt-card-stroke: var(--accent-surface-stroke);\n --prompt-card-icon-bg: var(--accent-subtle);\n --prompt-card-icon-color: var(--accent-default);\n --prompt-card-text: var(--accent-text);\n\n width: 100%;\n min-height: 58px;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n border: 1px solid var(--prompt-card-stroke);\n border-radius: var(--radius-lg, 8px);\n background-color: var(--prompt-card-bg);\n color: var(--prompt-card-text);\n cursor: pointer;\n font-family: var(--font-sans);\n text-align: left;\n box-sizing: border-box;\n transform: scale(1);\n transition:\n background-color 200ms ease-out,\n border-color 200ms ease-out,\n transform 120ms cubic-bezier(0.16, 1, 0.3, 1),\n opacity 150ms ease;\n}\n\n.fractal-prompt-card:hover,\n.fractal-prompt-card--highlighted {\n background-color: var(--prompt-card-bg-hover);\n}\n\n.fractal-prompt-card:active:not(:disabled) {\n transform: scale(0.97);\n}\n\n.fractal-prompt-card:disabled {\n --prompt-card-bg: var(--bg-surface-1);\n --prompt-card-bg-hover: var(--bg-surface-1);\n --prompt-card-stroke: var(--border-subtle);\n --prompt-card-icon-bg: var(--bg-surface-2);\n --prompt-card-icon-color: var(--fg-tertiary);\n --prompt-card-text: var(--fg-tertiary);\n\n cursor: not-allowed;\n opacity: 0.72;\n}\n\n.fractal-prompt-card:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--bg-canvas, #fff), 0 0 0 4px var(--border-focus, var(--blue-500));\n}\n\n.fractal-prompt-card__icon {\n width: 40px;\n height: 40px;\n min-width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-sm, 4px);\n background-color: var(--prompt-card-icon-bg);\n color: var(--prompt-card-icon-color);\n transition: background-color 200ms ease-out, color 200ms ease-out;\n}\n\n.fractal-prompt-card:hover:not(:disabled) .fractal-prompt-card__icon,\n.fractal-prompt-card--highlighted:not(:disabled) .fractal-prompt-card__icon {\n background-color: var(--prompt-card-icon-color);\n color: var(--fg-inverse);\n}\n\n.fractal-prompt-card__title {\n min-width: 0;\n color: var(--prompt-card-text);\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.35;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.fractal-prompt-card--blue {\n --prompt-card-bg: var(--accent-surface);\n --prompt-card-bg-hover: var(--accent-subtle);\n --prompt-card-stroke: var(--accent-surface-stroke);\n --prompt-card-icon-bg: var(--accent-subtle);\n --prompt-card-icon-color: var(--accent-default);\n --prompt-card-text: var(--accent-text);\n}\n\n.fractal-prompt-card--pink {\n --prompt-card-bg: var(--pink-surface);\n --prompt-card-bg-hover: var(--pink-subtle);\n --prompt-card-stroke: var(--pink-surface-stroke);\n --prompt-card-icon-bg: var(--pink-subtle);\n --prompt-card-icon-color: var(--pink-default);\n --prompt-card-text: var(--pink-text);\n}\n\n.fractal-prompt-card--orange {\n --prompt-card-bg: var(--orange-surface);\n --prompt-card-bg-hover: var(--orange-subtle);\n --prompt-card-stroke: var(--orange-surface-stroke);\n --prompt-card-icon-bg: var(--orange-subtle);\n --prompt-card-icon-color: var(--orange-default);\n --prompt-card-text: var(--orange-text);\n}\n\n.fractal-prompt-card--green {\n --prompt-card-bg: var(--success-surface);\n --prompt-card-bg-hover: var(--success-subtle);\n --prompt-card-stroke: var(--success-surface-stroke);\n --prompt-card-icon-bg: var(--success-subtle);\n --prompt-card-icon-color: var(--success-default);\n --prompt-card-text: var(--success-text);\n}\n\n.fractal-prompt-card--purple {\n --prompt-card-bg: var(--purple-surface);\n --prompt-card-bg-hover: var(--purple-subtle);\n --prompt-card-stroke: var(--purple-surface-stroke);\n --prompt-card-icon-bg: var(--purple-subtle);\n --prompt-card-icon-color: var(--purple-default);\n --prompt-card-text: var(--purple-text);\n}\n\n.fractal-prompt-card--red {\n --prompt-card-bg: var(--error-surface);\n --prompt-card-bg-hover: var(--error-subtle);\n --prompt-card-stroke: var(--error-surface-stroke);\n --prompt-card-icon-bg: var(--error-subtle);\n --prompt-card-icon-color: var(--error-default);\n --prompt-card-text: var(--error-text);\n}\n\n.fractal-prompt-card--yellow {\n --prompt-card-bg: var(--warning-surface);\n --prompt-card-bg-hover: var(--warning-subtle);\n --prompt-card-stroke: var(--warning-surface-stroke);\n --prompt-card-icon-bg: var(--warning-subtle);\n --prompt-card-icon-color: var(--warning-default);\n --prompt-card-text: var(--warning-text);\n}\n\n.fractal-prompt-card--neutral {\n --prompt-card-bg: var(--bg-canvas);\n --prompt-card-bg-hover: var(--bg-surface-1);\n --prompt-card-stroke: var(--border-subtle);\n --prompt-card-icon-bg: var(--bg-surface-2);\n --prompt-card-icon-color: var(--fg-tertiary);\n --prompt-card-text: var(--fg-primary);\n}\n\n.fractal-prompt-grid {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 8px;\n}\n\n.fractal-prompt-grid--padded {\n padding: 0.5rem calc(1rem + 1px) 2rem;\n}\n\n.fractal-prompt-grid--compact {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.fractal-prompt-grid--compact > :nth-child(n+5) {\n display: none;\n}\n\n@media (max-width: 639px) {\n .fractal-prompt-grid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (max-width: 419px) {\n .fractal-prompt-grid {\n grid-template-columns: 1fr;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fractal-prompt-card {\n transition-duration: 0.01ms;\n }\n}\n",".fractal-input {\n display: flex;\n height: 40px;\n width: 100%;\n border-radius: var(--radius-sm, 4px);\n border: 1px solid var(--border-default);\n background-color: var(--bg-canvas);\n padding: 8px 12px;\n font-size: 0.875rem;\n font-family: var(--font-sans);\n line-height: 1.5;\n color: var(--fg-primary);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n box-sizing: border-box;\n}\n\n.fractal-input::placeholder {\n color: var(--fg-placeholder);\n}\n\n.fractal-input:focus-visible {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px var(--accent-surface);\n}\n\n.fractal-input:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n background-color: var(--bg-surface-1);\n}\n\n.fractal-input[type=\"file\"] {\n border: 0;\n background: transparent;\n font-size: 0.875rem;\n height: auto;\n padding: 0;\n}\n",".fractal-label {\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1;\n color: var(--fg-primary);\n}\n\n.fractal-label[data-disabled] {\n cursor: not-allowed;\n opacity: 0.7;\n}\n",".fractal-alert {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n width: 100%;\n border-radius: var(--radius-sm, 4px);\n border: 1px solid;\n padding: var(--space-3, 12px) var(--space-4, 16px);\n font-family: var(--font-sans);\n}\n\n/* Icon cell */\n.fractal-alert-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n font-size: 0.75rem;\n font-weight: 600;\n border-radius: 50%;\n margin-top: 1px;\n}\n\n.fractal-alert-content {\n flex: 1;\n min-width: 0;\n}\n\n.fractal-alert-title {\n margin: 0 0 4px 0;\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1.4;\n}\n\n.fractal-alert-description {\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n/* ── Variants ── */\n\n.fractal-alert--default {\n background-color: var(--bg-canvas);\n border-color: var(--border-default);\n color: var(--fg-primary);\n}\n.fractal-alert--default .fractal-alert-icon {\n background: var(--bg-surface-2);\n color: var(--fg-secondary);\n}\n\n.fractal-alert--info {\n background-color: var(--accent-surface);\n border-color: var(--accent-default);\n color: var(--fg-primary);\n}\n.fractal-alert--info .fractal-alert-icon {\n background: var(--accent-default);\n color: var(--fg-inverse);\n}\n\n.fractal-alert--success {\n background-color: var(--success-surface);\n border-color: var(--success-default);\n color: var(--fg-primary);\n}\n.fractal-alert--success .fractal-alert-icon {\n background: var(--success-default);\n color: var(--fg-inverse);\n}\n\n.fractal-alert--warning {\n background-color: var(--warning-surface);\n border-color: var(--warning-default);\n color: var(--fg-primary);\n}\n.fractal-alert--warning .fractal-alert-icon {\n background: var(--warning-default);\n color: var(--fg-inverse);\n}\n\n.fractal-alert--error {\n background-color: var(--error-surface);\n border-color: var(--error-default);\n color: var(--fg-primary);\n}\n.fractal-alert--error .fractal-alert-icon {\n background: var(--error-default);\n color: var(--fg-inverse);\n}\n",".fractal-toggle {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2, 8px);\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n font-family: var(--font-sans);\n}\n\n.fractal-toggle-track {\n position: relative;\n width: 32px;\n height: 18px;\n border-radius: var(--radius-full, 9999px);\n background-color: var(--bg-surface-2);\n transition: background-color 0.2s;\n flex-shrink: 0;\n}\n\n.fractal-toggle-track--checked {\n background-color: var(--accent-default);\n}\n\n.fractal-toggle-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background-color: #fff;\n transition: left 0.2s;\n}\n\n.fractal-toggle-thumb--checked {\n left: 16px;\n}\n\n.fractal-toggle-label {\n font-size: 0.8125rem;\n color: var(--fg-primary);\n user-select: none;\n}\n",".fractal-modal-overlay {\n position: fixed;\n inset: 0;\n background-color: var(--overlay, rgba(0, 0, 0, 0.5));\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9998;\n}\n\n.fractal-modal-panel {\n background: var(--bg-canvas);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-lg, 8px);\n box-shadow: var(--shadow-lg);\n padding: var(--space-6, 24px);\n max-width: 90vw;\n font-family: var(--font-sans);\n}\n\n.fractal-modal-panel--sm {\n width: 420px;\n}\n\n.fractal-modal-panel--md {\n width: 756px;\n}\n\n.fractal-modal-panel--lg {\n width: calc(100vw - 4rem);\n height: calc(100vh - 4rem);\n max-height: 100vh;\n display: flex;\n flex-direction: column;\n}\n\n.fractal-modal-panel--danger {\n border-color: var(--error-subtle);\n}\n\n.fractal-modal-panel--warn {\n border-color: var(--warning-subtle);\n}\n\n.fractal-modal-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: var(--space-4, 16px);\n}\n\n.fractal-modal-title {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--fg-primary);\n}\n\n.fractal-modal-title--danger {\n color: var(--error-default);\n}\n\n.fractal-modal-title--warn {\n color: var(--warning-default);\n}\n\n.fractal-modal-close {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--fg-secondary);\n padding: 4px;\n border-radius: var(--radius-sm, 4px);\n display: flex;\n align-items: center;\n}\n\n.fractal-modal-close:hover {\n color: var(--fg-primary);\n background: var(--bg-surface-1);\n}\n\n.fractal-modal-body {\n font-size: 0.875rem;\n color: var(--fg-secondary);\n}\n\n.fractal-modal-body--lg {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.fractal-modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: var(--space-2, 8px);\n margin-top: var(--space-4, 16px);\n}\n",".fractal-datatable {\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n.fractal-datatable-surface {\n overflow: hidden;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-xl, 12px);\n background: var(--bg-canvas);\n}\n\n.fractal-datatable-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid var(--border-subtle);\n background: var(--bg-canvas);\n}\n\n.fractal-datatable-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-7, 32px) var(--space-4, 16px);\n font-size: 0.875rem;\n color: var(--fg-secondary);\n background: var(--bg-canvas);\n}\n\n/* ── Table ── */\n\n.fractal-datatable-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n/* Header row — neutral grey tile */\n.fractal-datatable-thead-row {\n background: var(--bg-surface-1);\n}\n\n.fractal-datatable-th {\n text-align: left;\n padding: 12px 16px;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--fg-secondary);\n border-bottom: 1px solid var(--border-subtle);\n vertical-align: middle;\n}\n\n.fractal-datatable-th + .fractal-datatable-th {\n border-left: 1px solid var(--border-subtle);\n}\n\n/* Data rows — white tiles */\n.fractal-datatable-row {\n background: var(--bg-canvas);\n transition: background 120ms ease;\n}\n\n.fractal-datatable-row:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-datatable-td {\n padding: 14px 16px;\n color: var(--fg-primary);\n line-height: 1.55;\n vertical-align: top;\n overflow-wrap: anywhere;\n}\n\n.fractal-datatable-td + .fractal-datatable-td {\n border-left: 1px solid var(--border-subtle);\n}\n\n.fractal-datatable-row + .fractal-datatable-row .fractal-datatable-td {\n border-top: 1px solid var(--border-subtle);\n}\n\n.fractal-datatable--sm .fractal-datatable-th {\n padding: 8px 12px;\n}\n\n.fractal-datatable--sm .fractal-datatable-td {\n padding: 10px 12px;\n}\n\n.fractal-datatable--lg .fractal-datatable-th {\n padding: 18px 24px;\n}\n\n.fractal-datatable--lg .fractal-datatable-td {\n padding: 22px 24px;\n}\n",".fractal-dropdown {\n position: relative;\n display: inline-block;\n}\n\n.fractal-dropdown-trigger {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n border-radius: var(--radius-md, 6px);\n border: 1px solid var(--border-subtle);\n background: var(--bg-canvas);\n padding: 8px 12px;\n text-align: left;\n font-size: 0.875rem;\n font-family: var(--font-sans);\n color: var(--fg-primary);\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.fractal-dropdown-trigger--sm {\n gap: 6px;\n padding: 4px 8px;\n font-size: 0.75rem;\n}\n\n.fractal-dropdown-trigger--tertiary {\n border-color: transparent;\n background: transparent;\n}\n\n.fractal-dropdown-trigger:hover,\n.fractal-dropdown-trigger--tertiary:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-dropdown-trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--bg-canvas), 0 0 0 4px var(--border-focus);\n}\n\n.fractal-dropdown-icon {\n display: flex;\n flex-shrink: 0;\n color: var(--fg-primary);\n}\n\n.fractal-dropdown-icon svg {\n width: 16px;\n height: 16px;\n}\n\n.fractal-dropdown-icon--trigger svg {\n width: 16px;\n height: 16px;\n}\n\n.fractal-dropdown-selected-text {\n color: var(--fg-primary);\n}\n\n.fractal-dropdown-chevron {\n display: flex;\n flex-shrink: 0;\n color: var(--fg-secondary);\n}\n\n.fractal-dropdown-panel {\n position: absolute;\n z-index: 999999;\n overflow: hidden;\n border-radius: var(--radius-md, 6px);\n border: 1px solid var(--border-subtle);\n background: var(--bg-canvas);\n white-space: nowrap;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n padding: 4px;\n}\n\n.fractal-dropdown-label {\n width: 100%;\n padding: 6px 8px;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--fg-secondary);\n box-sizing: border-box;\n}\n\n.fractal-dropdown-option {\n display: flex;\n width: 100%;\n align-items: center;\n gap: 8px;\n padding: 6px 8px;\n text-align: left;\n font-size: 0.875rem;\n font-family: var(--font-sans);\n background: none;\n border: none;\n border-radius: var(--radius-sm, 4px);\n cursor: pointer;\n color: var(--fg-primary);\n transition: background-color 0.1s;\n}\n\n.fractal-dropdown-panel--sm .fractal-dropdown-label,\n.fractal-dropdown-panel--sm .fractal-dropdown-option {\n padding: 4px 8px;\n font-size: 0.75rem;\n}\n\n.fractal-dropdown-panel--sm .fractal-dropdown-option {\n gap: 6px;\n}\n\n.fractal-dropdown-option:hover,\n.fractal-dropdown-option:focus-visible {\n background: var(--hover-canvas, var(--bg-surface-2));\n outline: none;\n}\n\n.fractal-dropdown-separator {\n height: 1px;\n margin: 4px -4px;\n background: var(--border-subtle);\n}\n\n.fractal-dropdown-option-text {\n color: var(--fg-primary);\n}\n\n.fractal-dropdown-trailing {\n margin-left: auto;\n display: flex;\n align-items: center;\n padding-left: 8px;\n color: var(--accent-default);\n}\n",".fractal-link {\n display: inline;\n font-family: var(--font-sans);\n font-weight: 500;\n text-decoration: underline;\n text-underline-offset: 2px;\n cursor: pointer;\n transition: opacity 0.15s ease;\n}\n\n.fractal-link:hover { opacity: 0.7; }\n.fractal-link:active { opacity: 0.5; }\n\n/* ── Themes ── */\n\n.fractal-link--default { color: var(--fg-primary); }\n.fractal-link--muted { color: var(--fg-secondary); }\n.fractal-link--accent { color: var(--accent-default); }\n\n/* ── Sizes ── */\n\n.fractal-link--sm { font-size: 0.75rem; }\n.fractal-link--md { font-size: 0.875rem; }\n.fractal-link--lg { font-size: 1rem; }\n",".fractal-chip {\n display: inline-flex;\n align-items: center;\n border-radius: var(--radius-full);\n padding: 1px 8px;\n font-family: var(--font-mono);\n font-size: 0.6875rem;\n font-weight: 400;\n letter-spacing: -0.01em;\n line-height: 1.5;\n white-space: nowrap;\n /* Default tone is neutral — a tone-less <Chip>...</Chip> still renders\n contained. Tone modifiers below override these defaults. */\n background: var(--bg-surface-2);\n border: 1px solid var(--border-subtle);\n color: var(--fg-secondary);\n}\n\n.fractal-chip--neutral {\n background: var(--bg-surface-2);\n border-color: var(--border-subtle);\n color: var(--fg-secondary);\n}\n\n.fractal-chip--success {\n background: var(--success-surface);\n border-color: var(--success-subtle);\n color: var(--success-default);\n}\n\n.fractal-chip--warning {\n background: var(--warning-surface);\n border-color: var(--warning-subtle);\n color: var(--warning-default);\n}\n\n.fractal-chip--error {\n background: var(--error-surface);\n border-color: var(--error-subtle);\n color: var(--error-default);\n}\n\n.fractal-chip--info {\n background: var(--accent-surface);\n border-color: var(--accent-subtle);\n color: var(--accent-default);\n}\n",".fractal-sortable-table {\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n.fractal-sortable-table-surface {\n overflow: hidden;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-xl, 12px);\n background: var(--bg-canvas);\n}\n\n.fractal-sortable-table-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid var(--border-subtle);\n background: var(--bg-canvas);\n}\n\n.fractal-sortable-table-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-7, 32px) var(--space-4, 16px);\n font-size: 0.875rem;\n color: var(--fg-secondary);\n background: var(--bg-canvas);\n}\n\n.fractal-sortable-table-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n.fractal-sortable-table-thead-row {\n background: var(--bg-surface-1);\n}\n\n.fractal-sortable-table-th {\n text-align: left;\n padding: 12px 16px;\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--fg-secondary);\n border-bottom: 1px solid var(--border-subtle);\n vertical-align: middle;\n white-space: nowrap;\n}\n\n.fractal-sortable-table-th + .fractal-sortable-table-th {\n border-left: 1px solid var(--border-subtle);\n}\n\n/* Sortable header cells delegate padding to the inner button so the entire\n cell area is part of the click + hover target. */\n.fractal-sortable-table-th--sortable {\n padding: 0;\n}\n\n.fractal-sortable-table-sort-button {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n background: none;\n border: 0;\n padding: 12px 16px;\n margin: 0;\n font: inherit;\n color: inherit;\n text-align: left;\n cursor: pointer;\n transition: color 0.15s ease, background 0.15s ease;\n}\n\n.fractal-sortable-table-sort-button:hover {\n color: var(--fg-primary);\n background: var(--hover-surface);\n}\n\n.fractal-sortable-table-sort-button--active {\n color: var(--accent-default);\n}\n\n.fractal-sortable-table-sort-button:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Sort icon: hidden at rest, revealed on hover. Active sort stays visible\n regardless of hover so the reader can always see which column is sorted. */\n.fractal-sortable-table-sort-icon {\n display: inline-flex;\n align-items: center;\n color: var(--fg-tertiary, var(--fg-secondary));\n opacity: 0;\n transition: opacity 0.15s ease, color 0.15s ease;\n}\n\n.fractal-sortable-table-sort-button:hover .fractal-sortable-table-sort-icon,\n.fractal-sortable-table-sort-button:focus-visible .fractal-sortable-table-sort-icon {\n opacity: 1;\n}\n\n.fractal-sortable-table-sort-button--active .fractal-sortable-table-sort-icon {\n opacity: 1;\n color: var(--accent-default);\n}\n\n.fractal-sortable-table-row {\n background: var(--bg-canvas);\n transition: background 120ms ease;\n}\n\n.fractal-sortable-table-row:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-sortable-table-row + .fractal-sortable-table-row .fractal-sortable-table-td {\n border-top: 1px solid var(--border-subtle);\n}\n\n.fractal-sortable-table-row--highlighted {\n background: var(--bg-surface-1);\n}\n\n.fractal-sortable-table-row--highlighted:hover {\n background: var(--bg-surface-2);\n}\n\n.fractal-sortable-table-td {\n padding: 14px 16px;\n color: var(--fg-primary);\n line-height: 1.55;\n vertical-align: top;\n overflow-wrap: anywhere;\n}\n\n.fractal-sortable-table-td + .fractal-sortable-table-td {\n border-left: 1px solid var(--border-subtle);\n}\n\n.fractal-sortable-table--sm .fractal-sortable-table-th,\n.fractal-sortable-table--sm .fractal-sortable-table-sort-button {\n padding: 8px 12px;\n}\n\n.fractal-sortable-table--sm .fractal-sortable-table-td {\n padding: 10px 12px;\n}\n\n.fractal-sortable-table--lg .fractal-sortable-table-th,\n.fractal-sortable-table--lg .fractal-sortable-table-sort-button {\n padding: 18px 24px;\n}\n\n.fractal-sortable-table--lg .fractal-sortable-table-td {\n padding: 22px 24px;\n}\n",".fractal-tabs {\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n.fractal-tabs-list {\n display: flex;\n gap: 24px;\n border-bottom: 1px solid var(--border-subtle);\n margin-bottom: 16px;\n}\n\n.fractal-tabs-trigger {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 0;\n background: none;\n border: 0;\n font: inherit;\n font-size: 0.875rem;\n font-weight: 400;\n color: var(--fg-secondary);\n cursor: pointer;\n transition: color 0.15s ease, box-shadow 0.15s ease;\n box-shadow: inset 0 -1px 0 transparent;\n margin-bottom: -1px;\n}\n\n.fractal-tabs-trigger:hover:not(.fractal-tabs-trigger--active):not(.fractal-tabs-trigger--disabled) {\n color: var(--fg-primary);\n}\n\n.fractal-tabs-trigger:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.fractal-tabs-trigger--active {\n color: var(--accent-default);\n font-weight: 500;\n box-shadow: inset 0 -1px 0 var(--accent-default);\n}\n\n.fractal-tabs-trigger--disabled {\n color: var(--fg-disabled, var(--fg-secondary));\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fractal-tabs-panel {\n font-size: 0.875rem;\n color: var(--fg-primary);\n}\n\n.fractal-tabs-panel[hidden] {\n display: none;\n}\n",".fractal-disclosure {\n font-family: var(--font-sans);\n font-size: 0.875rem;\n}\n\n.fractal-disclosure--card {\n border: 1px solid var(--border-subtle);\n border-radius: 8px;\n background: var(--bg-canvas);\n overflow: hidden;\n}\n\n.fractal-disclosure-trigger {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 12px 16px;\n background: transparent;\n border: 0;\n font: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--fg-primary);\n text-align: left;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.fractal-disclosure-trigger:hover {\n background: var(--bg-surface-1);\n}\n\n.fractal-disclosure-trigger:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: -2px;\n}\n\n.fractal-disclosure--open .fractal-disclosure-trigger {\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.fractal-disclosure-icon {\n display: inline-flex;\n align-items: center;\n color: var(--fg-secondary);\n flex-shrink: 0;\n}\n\n.fractal-disclosure-title {\n flex: 1;\n min-width: 0;\n}\n\n.fractal-disclosure-meta {\n font-size: 0.75rem;\n font-weight: 400;\n color: var(--fg-secondary);\n flex-shrink: 0;\n}\n\n.fractal-disclosure-panel[hidden] {\n display: none;\n}\n\n.fractal-disclosure-panel-inner {\n padding: 16px;\n color: var(--fg-primary);\n font-size: 0.875rem;\n line-height: 1.55;\n}\n\n/* Plain variant: no card chrome — for use inside another card or list */\n.fractal-disclosure:not(.fractal-disclosure--card) .fractal-disclosure-trigger {\n padding: 8px 0;\n}\n\n.fractal-disclosure:not(.fractal-disclosure--card).fractal-disclosure--open .fractal-disclosure-trigger {\n border-bottom: 0;\n}\n\n.fractal-disclosure:not(.fractal-disclosure--card) .fractal-disclosure-panel-inner {\n padding: 4px 0 12px 24px;\n}\n",".fractal-sidebar {\n --fractal-sidebar-width: 232px;\n\n box-sizing: border-box;\n display: flex;\n width: var(--fractal-sidebar-width);\n min-width: var(--fractal-sidebar-width);\n min-height: 100%;\n flex-direction: column;\n background: var(--bg-surface-1);\n border-right: 1px solid var(--nav-border);\n color: var(--fg-primary);\n font-family: var(--font-sans);\n}\n\n.fractal-sidebar__header {\n display: flex;\n min-height: 56px;\n align-items: center;\n padding: 0 var(--space-4);\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.fractal-sidebar__brand {\n display: inline-flex;\n min-width: 0;\n align-items: center;\n gap: var(--space-2);\n padding: var(--space-1);\n border: 0;\n border-radius: var(--radius-md);\n background: transparent;\n color: var(--fg-primary);\n cursor: pointer;\n font: inherit;\n text-align: left;\n transition: background-color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);\n}\n\n.fractal-sidebar__brand:hover {\n background: var(--nav-hover);\n}\n\n.fractal-sidebar__brand:active {\n transform: scale(0.98);\n}\n\n.fractal-sidebar__brand:focus-visible,\n.fractal-sidebar__nav-item:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n}\n\n.fractal-sidebar__nav {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--space-4);\n overflow-y: auto;\n padding: var(--space-3) var(--space-2);\n}\n\n.fractal-sidebar__section {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n}\n\n.fractal-sidebar__section + .fractal-sidebar__section {\n padding-top: var(--space-4);\n border-top: 1px solid var(--border-subtle);\n}\n\n.fractal-sidebar__nav-item {\n display: flex;\n width: 100%;\n min-height: 36px;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border: 0;\n border-radius: var(--radius-md);\n background: transparent;\n color: var(--fg-secondary);\n cursor: pointer;\n font-family: var(--font-sans);\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.25;\n text-align: left;\n transition: background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);\n}\n\n.fractal-sidebar__nav-item:hover {\n background: var(--nav-hover);\n color: var(--fg-primary);\n}\n\n.fractal-sidebar__nav-item[data-active] {\n background: var(--nav-selected);\n color: var(--fg-primary);\n font-weight: 500;\n}\n\n.fractal-sidebar__nav-item:active {\n transform: scale(0.99);\n}\n\n.fractal-sidebar__nav-item-icon {\n display: inline-flex;\n width: 18px;\n height: 18px;\n flex: 0 0 18px;\n align-items: center;\n justify-content: center;\n}\n\n.fractal-sidebar__nav-item-icon > svg {\n width: 18px;\n height: 18px;\n}\n\n.fractal-sidebar__nav-item-label {\n min-width: 0;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.fractal-sidebar__nav-item-end {\n color: var(--fg-tertiary);\n font-family: var(--font-mono);\n font-size: 0.6875rem;\n line-height: 1;\n}\n\n.fractal-sidebar__footer {\n padding: var(--space-2);\n border-top: 1px solid var(--border-subtle);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fractal-sidebar__brand,\n .fractal-sidebar__nav-item {\n transition: none;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,245 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ClassValue } from 'clsx';
4
+
5
+ type ButtonType = 'primary' | 'secondary' | 'ghost' | 'danger';
6
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
7
+ type ButtonColor = 'blue' | 'pink' | 'orange' | 'green';
8
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
9
+ /** Visual hierarchy. Primary = strongest action, Secondary = neutral bordered, Ghost = minimal, Danger = destructive. */
10
+ buttonType?: ButtonType;
11
+ /** Size preset matching the component height scale. */
12
+ buttonSize?: ButtonSize;
13
+ /** Color theme — maps to the design system's color scales. */
14
+ color?: ButtonColor;
15
+ /** Icon element. */
16
+ icon?: React.ReactNode;
17
+ /** Whether the button displays only an icon (no text). Must include aria-label. */
18
+ hasIconOnly?: boolean;
19
+ /** Position of the icon relative to the label. */
20
+ iconPosition?: 'left' | 'right';
21
+ }
22
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
23
+
24
+ declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
25
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
26
+ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
27
+ declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
28
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
29
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
30
+ interface FeatureCardProps extends React.HTMLAttributes<HTMLDivElement> {
31
+ icon?: React.ReactNode;
32
+ title: string;
33
+ description: string;
34
+ }
35
+ declare const FeatureCard: React.ForwardRefExoticComponent<FeatureCardProps & React.RefAttributes<HTMLDivElement>>;
36
+ interface FolderCardProps extends React.HTMLAttributes<HTMLDivElement> {
37
+ name: string;
38
+ sessionCount?: number;
39
+ selected?: boolean;
40
+ }
41
+ declare const FolderCard: React.ForwardRefExoticComponent<FolderCardProps & React.RefAttributes<HTMLDivElement>>;
42
+
43
+ type PromptCardTone = 'blue' | 'pink' | 'orange' | 'green' | 'purple' | 'red' | 'yellow' | 'neutral';
44
+ interface PromptCardProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'title'> {
45
+ title: React.ReactNode;
46
+ icon?: React.ReactNode;
47
+ prompt?: string;
48
+ tone?: PromptCardTone;
49
+ highlighted?: boolean;
50
+ onPromptSelect?: (prompt: string) => void;
51
+ }
52
+ declare const PromptCard: React.ForwardRefExoticComponent<PromptCardProps & React.RefAttributes<HTMLButtonElement>>;
53
+ interface PromptGridProps extends React.HTMLAttributes<HTMLDivElement> {
54
+ compact?: boolean;
55
+ padded?: boolean;
56
+ }
57
+ declare const PromptGrid: React.ForwardRefExoticComponent<PromptGridProps & React.RefAttributes<HTMLDivElement>>;
58
+
59
+ interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
60
+ }
61
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
62
+
63
+ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
64
+ }
65
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
66
+
67
+ type AlertVariant = 'default' | 'info' | 'success' | 'warning' | 'error';
68
+ interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
69
+ variant?: AlertVariant;
70
+ icon?: React.ReactNode;
71
+ }
72
+ declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
73
+ declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
74
+ declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
75
+
76
+ interface ToggleProps {
77
+ checked: boolean;
78
+ onChange: (checked: boolean) => void;
79
+ label?: string;
80
+ className?: string;
81
+ }
82
+ declare function Toggle({ checked, onChange, label, className }: ToggleProps): React.JSX.Element;
83
+
84
+ interface ModalProps {
85
+ open: boolean;
86
+ onClose: () => void;
87
+ title: React.ReactNode;
88
+ children: React.ReactNode;
89
+ /** When true, uses red accent for destructive actions. */
90
+ danger?: boolean;
91
+ /** When true, uses yellow/warning accent. */
92
+ warn?: boolean;
93
+ /** Optional footer content (e.g. action buttons). */
94
+ footer?: React.ReactNode;
95
+ /** When true, prevents closing via overlay click or Escape. */
96
+ noClose?: boolean;
97
+ /** Modal width: 'sm' (420px), 'md' (756px), 'lg' (near-fullscreen). */
98
+ size?: 'sm' | 'md' | 'lg';
99
+ className?: string;
100
+ }
101
+ declare function Modal({ open, onClose, title, children, danger, warn, footer, noClose, size, className }: ModalProps): React.ReactPortal | null;
102
+
103
+ interface DataTableColumn<T> {
104
+ key: string;
105
+ header: string;
106
+ width?: string;
107
+ render: (row: T, index: number) => ReactNode;
108
+ }
109
+ interface DataTableProps<T> {
110
+ columns: DataTableColumn<T>[];
111
+ data: T[];
112
+ emptyMessage?: string;
113
+ header?: ReactNode;
114
+ size?: 'sm' | 'md' | 'lg';
115
+ className?: string;
116
+ }
117
+ declare function DataTable<T>({ columns, data, emptyMessage, header, size, className }: DataTableProps<T>): React.JSX.Element;
118
+
119
+ interface DropdownItem {
120
+ value: string;
121
+ icon?: React.ReactNode;
122
+ description?: string | React.ReactNode;
123
+ border?: 'top' | 'bottom';
124
+ kind?: 'item' | 'header';
125
+ trailing?: React.ReactNode;
126
+ }
127
+ interface DropdownProps {
128
+ items: DropdownItem[];
129
+ selectedValue: string;
130
+ onSelect: (value: string) => void;
131
+ triggerLabel?: string;
132
+ direction?: 'up' | 'down';
133
+ align?: 'left' | 'right';
134
+ triggerContent?: React.ReactNode;
135
+ label?: React.ReactNode;
136
+ noChevron?: boolean;
137
+ size?: 'sm' | 'md';
138
+ triggerVariant?: 'outline' | 'tertiary';
139
+ className?: string;
140
+ triggerClassName?: string;
141
+ panelClassName?: string;
142
+ closeOnSelect?: boolean;
143
+ }
144
+ declare function Dropdown({ items, selectedValue, onSelect, triggerLabel, direction, align, triggerContent, label, noChevron, size, triggerVariant, className, triggerClassName, panelClassName, closeOnSelect, }: DropdownProps): React.JSX.Element | null;
145
+
146
+ type LinkTheme = 'default' | 'muted' | 'accent';
147
+ type LinkSize = 'sm' | 'md' | 'lg';
148
+ interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
149
+ theme?: LinkTheme;
150
+ size?: LinkSize;
151
+ }
152
+ declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
153
+
154
+ type ChipTone = 'neutral' | 'success' | 'warning' | 'error' | 'info';
155
+ interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {
156
+ tone?: ChipTone;
157
+ }
158
+ declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLSpanElement>>;
159
+
160
+ type SortDirection = 'asc' | 'desc' | null;
161
+ interface SortableTableColumn<T> {
162
+ key: string;
163
+ header: string;
164
+ width?: string;
165
+ sortable?: boolean;
166
+ sortAccessor?: (row: T) => string | number | null | undefined;
167
+ render: (row: T, index: number) => ReactNode;
168
+ align?: 'left' | 'right';
169
+ }
170
+ interface SortableTableProps<T> {
171
+ columns: SortableTableColumn<T>[];
172
+ data: T[];
173
+ emptyMessage?: string;
174
+ header?: ReactNode;
175
+ size?: 'sm' | 'md' | 'lg';
176
+ className?: string;
177
+ defaultSortKey?: string;
178
+ defaultSortDirection?: SortDirection;
179
+ sortKey?: string | null;
180
+ sortDirection?: SortDirection;
181
+ onSortChange?: (key: string | null, direction: SortDirection) => void;
182
+ highlightRow?: (row: T, index: number) => boolean;
183
+ }
184
+ declare function SortableTable<T>({ columns, data, emptyMessage, header, size, className, defaultSortKey, defaultSortDirection, sortKey: controlledKey, sortDirection: controlledDirection, onSortChange, highlightRow, }: SortableTableProps<T>): React.JSX.Element;
185
+
186
+ interface TabItem {
187
+ id: string;
188
+ label: ReactNode;
189
+ content: ReactNode;
190
+ disabled?: boolean;
191
+ }
192
+ interface TabsProps {
193
+ items: TabItem[];
194
+ defaultValue?: string;
195
+ value?: string;
196
+ onValueChange?: (id: string) => void;
197
+ className?: string;
198
+ ariaLabel?: string;
199
+ }
200
+ declare function Tabs({ items, defaultValue, value: controlledValue, onValueChange, className, ariaLabel, }: TabsProps): React.JSX.Element;
201
+
202
+ interface DisclosureProps {
203
+ title: ReactNode;
204
+ meta?: ReactNode;
205
+ children: ReactNode;
206
+ defaultOpen?: boolean;
207
+ open?: boolean;
208
+ onOpenChange?: (open: boolean) => void;
209
+ className?: string;
210
+ variant?: 'card' | 'plain';
211
+ }
212
+ declare function Disclosure({ title, meta, children, defaultOpen, open: controlledOpen, onOpenChange, className, variant, }: DisclosureProps): React.JSX.Element;
213
+
214
+ interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
215
+ /** Fixed sidebar width. Defaults to the standard application width. */
216
+ width?: string;
217
+ }
218
+ declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLElement>>;
219
+ declare const SidebarHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
220
+ declare const SidebarBrand: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
221
+ declare const SidebarNav: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
222
+ declare const SidebarSection: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
223
+ interface SidebarNavItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
224
+ /** Marks the current destination. */
225
+ active?: boolean;
226
+ /** Leading visual identifier. */
227
+ icon?: React.ReactNode;
228
+ /** Optional right-aligned metadata or status. */
229
+ endAdornment?: React.ReactNode;
230
+ }
231
+ declare const SidebarNavItem: React.ForwardRefExoticComponent<SidebarNavItemProps & React.RefAttributes<HTMLButtonElement>>;
232
+ declare const SidebarFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
233
+
234
+ /**
235
+ * Register an Escape-key dismiss handler with the global priority stack.
236
+ *
237
+ * @param priority Higher values are dismissed first. See header for guidelines.
238
+ * @param handler Called when this entry is the top-of-stack and Escape is pressed.
239
+ * @param enabled When false the handler is not registered.
240
+ */
241
+ declare function useEscapeDismiss(priority: number, handler: () => void, enabled?: boolean): void;
242
+
243
+ declare function cn(...inputs: ClassValue[]): string;
244
+
245
+ export { Alert, AlertDescription, AlertTitle, Button, type ButtonColor, type ButtonProps, type ButtonSize, type ButtonType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Chip, type ChipProps, type ChipTone, DataTable, type DataTableColumn, type DataTableProps, Disclosure, type DisclosureProps, Dropdown, type DropdownItem, type DropdownProps, FeatureCard, type FeatureCardProps, FolderCard, type FolderCardProps, Input, type InputProps, Label, type LabelProps, Link, type LinkProps, type LinkSize, type LinkTheme, Modal, type ModalProps, PromptCard, type PromptCardProps, type PromptCardTone, PromptGrid, type PromptGridProps, Sidebar, SidebarBrand, SidebarFooter, SidebarHeader, SidebarNav, SidebarNavItem, type SidebarNavItemProps, type SidebarProps, SidebarSection, type SortDirection, SortableTable, type SortableTableColumn, type SortableTableProps, type TabItem, Tabs, type TabsProps, Toggle, type ToggleProps, cn, useEscapeDismiss };
@@ -0,0 +1,245 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ClassValue } from 'clsx';
4
+
5
+ type ButtonType = 'primary' | 'secondary' | 'ghost' | 'danger';
6
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
7
+ type ButtonColor = 'blue' | 'pink' | 'orange' | 'green';
8
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
9
+ /** Visual hierarchy. Primary = strongest action, Secondary = neutral bordered, Ghost = minimal, Danger = destructive. */
10
+ buttonType?: ButtonType;
11
+ /** Size preset matching the component height scale. */
12
+ buttonSize?: ButtonSize;
13
+ /** Color theme — maps to the design system's color scales. */
14
+ color?: ButtonColor;
15
+ /** Icon element. */
16
+ icon?: React.ReactNode;
17
+ /** Whether the button displays only an icon (no text). Must include aria-label. */
18
+ hasIconOnly?: boolean;
19
+ /** Position of the icon relative to the label. */
20
+ iconPosition?: 'left' | 'right';
21
+ }
22
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
23
+
24
+ declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
25
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
26
+ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
27
+ declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
28
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
29
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
30
+ interface FeatureCardProps extends React.HTMLAttributes<HTMLDivElement> {
31
+ icon?: React.ReactNode;
32
+ title: string;
33
+ description: string;
34
+ }
35
+ declare const FeatureCard: React.ForwardRefExoticComponent<FeatureCardProps & React.RefAttributes<HTMLDivElement>>;
36
+ interface FolderCardProps extends React.HTMLAttributes<HTMLDivElement> {
37
+ name: string;
38
+ sessionCount?: number;
39
+ selected?: boolean;
40
+ }
41
+ declare const FolderCard: React.ForwardRefExoticComponent<FolderCardProps & React.RefAttributes<HTMLDivElement>>;
42
+
43
+ type PromptCardTone = 'blue' | 'pink' | 'orange' | 'green' | 'purple' | 'red' | 'yellow' | 'neutral';
44
+ interface PromptCardProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'title'> {
45
+ title: React.ReactNode;
46
+ icon?: React.ReactNode;
47
+ prompt?: string;
48
+ tone?: PromptCardTone;
49
+ highlighted?: boolean;
50
+ onPromptSelect?: (prompt: string) => void;
51
+ }
52
+ declare const PromptCard: React.ForwardRefExoticComponent<PromptCardProps & React.RefAttributes<HTMLButtonElement>>;
53
+ interface PromptGridProps extends React.HTMLAttributes<HTMLDivElement> {
54
+ compact?: boolean;
55
+ padded?: boolean;
56
+ }
57
+ declare const PromptGrid: React.ForwardRefExoticComponent<PromptGridProps & React.RefAttributes<HTMLDivElement>>;
58
+
59
+ interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
60
+ }
61
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
62
+
63
+ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
64
+ }
65
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
66
+
67
+ type AlertVariant = 'default' | 'info' | 'success' | 'warning' | 'error';
68
+ interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
69
+ variant?: AlertVariant;
70
+ icon?: React.ReactNode;
71
+ }
72
+ declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
73
+ declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
74
+ declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
75
+
76
+ interface ToggleProps {
77
+ checked: boolean;
78
+ onChange: (checked: boolean) => void;
79
+ label?: string;
80
+ className?: string;
81
+ }
82
+ declare function Toggle({ checked, onChange, label, className }: ToggleProps): React.JSX.Element;
83
+
84
+ interface ModalProps {
85
+ open: boolean;
86
+ onClose: () => void;
87
+ title: React.ReactNode;
88
+ children: React.ReactNode;
89
+ /** When true, uses red accent for destructive actions. */
90
+ danger?: boolean;
91
+ /** When true, uses yellow/warning accent. */
92
+ warn?: boolean;
93
+ /** Optional footer content (e.g. action buttons). */
94
+ footer?: React.ReactNode;
95
+ /** When true, prevents closing via overlay click or Escape. */
96
+ noClose?: boolean;
97
+ /** Modal width: 'sm' (420px), 'md' (756px), 'lg' (near-fullscreen). */
98
+ size?: 'sm' | 'md' | 'lg';
99
+ className?: string;
100
+ }
101
+ declare function Modal({ open, onClose, title, children, danger, warn, footer, noClose, size, className }: ModalProps): React.ReactPortal | null;
102
+
103
+ interface DataTableColumn<T> {
104
+ key: string;
105
+ header: string;
106
+ width?: string;
107
+ render: (row: T, index: number) => ReactNode;
108
+ }
109
+ interface DataTableProps<T> {
110
+ columns: DataTableColumn<T>[];
111
+ data: T[];
112
+ emptyMessage?: string;
113
+ header?: ReactNode;
114
+ size?: 'sm' | 'md' | 'lg';
115
+ className?: string;
116
+ }
117
+ declare function DataTable<T>({ columns, data, emptyMessage, header, size, className }: DataTableProps<T>): React.JSX.Element;
118
+
119
+ interface DropdownItem {
120
+ value: string;
121
+ icon?: React.ReactNode;
122
+ description?: string | React.ReactNode;
123
+ border?: 'top' | 'bottom';
124
+ kind?: 'item' | 'header';
125
+ trailing?: React.ReactNode;
126
+ }
127
+ interface DropdownProps {
128
+ items: DropdownItem[];
129
+ selectedValue: string;
130
+ onSelect: (value: string) => void;
131
+ triggerLabel?: string;
132
+ direction?: 'up' | 'down';
133
+ align?: 'left' | 'right';
134
+ triggerContent?: React.ReactNode;
135
+ label?: React.ReactNode;
136
+ noChevron?: boolean;
137
+ size?: 'sm' | 'md';
138
+ triggerVariant?: 'outline' | 'tertiary';
139
+ className?: string;
140
+ triggerClassName?: string;
141
+ panelClassName?: string;
142
+ closeOnSelect?: boolean;
143
+ }
144
+ declare function Dropdown({ items, selectedValue, onSelect, triggerLabel, direction, align, triggerContent, label, noChevron, size, triggerVariant, className, triggerClassName, panelClassName, closeOnSelect, }: DropdownProps): React.JSX.Element | null;
145
+
146
+ type LinkTheme = 'default' | 'muted' | 'accent';
147
+ type LinkSize = 'sm' | 'md' | 'lg';
148
+ interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
149
+ theme?: LinkTheme;
150
+ size?: LinkSize;
151
+ }
152
+ declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
153
+
154
+ type ChipTone = 'neutral' | 'success' | 'warning' | 'error' | 'info';
155
+ interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {
156
+ tone?: ChipTone;
157
+ }
158
+ declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLSpanElement>>;
159
+
160
+ type SortDirection = 'asc' | 'desc' | null;
161
+ interface SortableTableColumn<T> {
162
+ key: string;
163
+ header: string;
164
+ width?: string;
165
+ sortable?: boolean;
166
+ sortAccessor?: (row: T) => string | number | null | undefined;
167
+ render: (row: T, index: number) => ReactNode;
168
+ align?: 'left' | 'right';
169
+ }
170
+ interface SortableTableProps<T> {
171
+ columns: SortableTableColumn<T>[];
172
+ data: T[];
173
+ emptyMessage?: string;
174
+ header?: ReactNode;
175
+ size?: 'sm' | 'md' | 'lg';
176
+ className?: string;
177
+ defaultSortKey?: string;
178
+ defaultSortDirection?: SortDirection;
179
+ sortKey?: string | null;
180
+ sortDirection?: SortDirection;
181
+ onSortChange?: (key: string | null, direction: SortDirection) => void;
182
+ highlightRow?: (row: T, index: number) => boolean;
183
+ }
184
+ declare function SortableTable<T>({ columns, data, emptyMessage, header, size, className, defaultSortKey, defaultSortDirection, sortKey: controlledKey, sortDirection: controlledDirection, onSortChange, highlightRow, }: SortableTableProps<T>): React.JSX.Element;
185
+
186
+ interface TabItem {
187
+ id: string;
188
+ label: ReactNode;
189
+ content: ReactNode;
190
+ disabled?: boolean;
191
+ }
192
+ interface TabsProps {
193
+ items: TabItem[];
194
+ defaultValue?: string;
195
+ value?: string;
196
+ onValueChange?: (id: string) => void;
197
+ className?: string;
198
+ ariaLabel?: string;
199
+ }
200
+ declare function Tabs({ items, defaultValue, value: controlledValue, onValueChange, className, ariaLabel, }: TabsProps): React.JSX.Element;
201
+
202
+ interface DisclosureProps {
203
+ title: ReactNode;
204
+ meta?: ReactNode;
205
+ children: ReactNode;
206
+ defaultOpen?: boolean;
207
+ open?: boolean;
208
+ onOpenChange?: (open: boolean) => void;
209
+ className?: string;
210
+ variant?: 'card' | 'plain';
211
+ }
212
+ declare function Disclosure({ title, meta, children, defaultOpen, open: controlledOpen, onOpenChange, className, variant, }: DisclosureProps): React.JSX.Element;
213
+
214
+ interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
215
+ /** Fixed sidebar width. Defaults to the standard application width. */
216
+ width?: string;
217
+ }
218
+ declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLElement>>;
219
+ declare const SidebarHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
220
+ declare const SidebarBrand: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
221
+ declare const SidebarNav: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
222
+ declare const SidebarSection: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
223
+ interface SidebarNavItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
224
+ /** Marks the current destination. */
225
+ active?: boolean;
226
+ /** Leading visual identifier. */
227
+ icon?: React.ReactNode;
228
+ /** Optional right-aligned metadata or status. */
229
+ endAdornment?: React.ReactNode;
230
+ }
231
+ declare const SidebarNavItem: React.ForwardRefExoticComponent<SidebarNavItemProps & React.RefAttributes<HTMLButtonElement>>;
232
+ declare const SidebarFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
233
+
234
+ /**
235
+ * Register an Escape-key dismiss handler with the global priority stack.
236
+ *
237
+ * @param priority Higher values are dismissed first. See header for guidelines.
238
+ * @param handler Called when this entry is the top-of-stack and Escape is pressed.
239
+ * @param enabled When false the handler is not registered.
240
+ */
241
+ declare function useEscapeDismiss(priority: number, handler: () => void, enabled?: boolean): void;
242
+
243
+ declare function cn(...inputs: ClassValue[]): string;
244
+
245
+ export { Alert, AlertDescription, AlertTitle, Button, type ButtonColor, type ButtonProps, type ButtonSize, type ButtonType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Chip, type ChipProps, type ChipTone, DataTable, type DataTableColumn, type DataTableProps, Disclosure, type DisclosureProps, Dropdown, type DropdownItem, type DropdownProps, FeatureCard, type FeatureCardProps, FolderCard, type FolderCardProps, Input, type InputProps, Label, type LabelProps, Link, type LinkProps, type LinkSize, type LinkTheme, Modal, type ModalProps, PromptCard, type PromptCardProps, type PromptCardTone, PromptGrid, type PromptGridProps, Sidebar, SidebarBrand, SidebarFooter, SidebarHeader, SidebarNav, SidebarNavItem, type SidebarNavItemProps, type SidebarProps, SidebarSection, type SortDirection, SortableTable, type SortableTableColumn, type SortableTableProps, type TabItem, Tabs, type TabsProps, Toggle, type ToggleProps, cn, useEscapeDismiss };