diff --git a/babel.config.mjs b/babel.config.mjs index d5db5463..85813868 100644 --- a/babel.config.mjs +++ b/babel.config.mjs @@ -1,11 +1,12 @@ export default { + sourceType: 'unambiguous', presets: [ ['@babel/preset-env', { targets: { browsers: ['> 1%', 'last 3 versions', 'not dead'] } }], - '@babel/preset-typescript' + '@babel/preset-typescript', ], plugins: [ [ diff --git a/dev/dev-light.css b/dev/dev-light.css new file mode 100644 index 00000000..59d69a0a --- /dev/null +++ b/dev/dev-light.css @@ -0,0 +1,202 @@ +/* ---ONLY FOR LOCAL DEV--- */ +/* ---final version is in mashlib--- */ + + +/* +** Light Theme (Default) +** Default color scheme for SolidOS +*/ + +:root { + /* Background and Text */ + --color-background: white; + --color-text: ##1A1A1A; + --color-text-secondary: #666; + --color-text-light: #aaa; + --color-text-link: #3B5998; + --color-text-link-visited: #3B5998; + --color-text-link-hover: #3B5998; + --color-text-link-active: #888; + --color-text-answer: #00c; + --color-text-muted: #444; + --color-text-dark-gray: #202; + --color-text-blue: #004; + --color-text-brown: #440; + + /* Borders */ + --color-border: #ccc; + --color-border-dark: #777; + --color-border-darker: #444; + --color-border-light: #aaa; + --color-border-pale: #eee; + + /* Status Colors */ + --color-selected-bg: #8F3; + --color-warning: red; + --color-success-bg: #dfd; + --color-success-border: green; + --color-failure-bg: white; + --color-failure-border: red; + + /* Info and Alert Colors */ + --color-info-bg: #ccccff; + --color-info-border: #3399ff; + --color-alert-bg: #ffffdd; + --color-alert-border: yellow; + --color-fetch-bg: #eeffee; + --color-request-bg: yellow; + --color-error-bg: white; + --color-error-notice-bg: #fee; + --color-unparseable-bg: #ffcc00; + + /* Component Colors */ + --color-container-border: black; + --color-iframe-bg: white; + --color-main-block-bg: #fff; + --color-nav-block-bg: #eee; + --color-nav-block-border: gray; + --color-category-bg: #f8fff8; + --color-category-border: #777777; + --color-category-class-bg: #efe; + --color-category-class-border: green; + --color-pubs-pane-bg: #F2F6DA; + --color-pubs-pane-border: #777777; + --color-cv-pane-bg: LightSkyBlue; + + /* Data Content Pane */ + --color-data-pane-border-top: black; + --color-data-pane-border-side: #777; + --color-table-header-bg: #ddf; + --color-table-result-bg: #fff; + --color-table-border-dark: #777; + + /* Notification Colors */ + --color-log-normal: black; + --color-log-info: black; + --color-log-warn: black; + --color-log-warn-bg: #ffd; + --color-log-error: black; + --color-log-error-bg: #fdd; + --color-log-message: green; + --color-log-debug: black; + --color-log-debug-bg: #ddf; + + /* Suggestion List */ + --color-suggestion-bg: white; + --color-suggestion-border: navy; + --color-suggestion-link: navy; + --color-suggestion-selected-bg: navy; + --color-suggestion-selected-text: white; + + /* Photo Pane */ + --color-photo-border: #AAAAAA; + --color-photo-tag-highlight: #DDEEFF; + --color-photo-tag-highlight-border: #DDBB99; + --color-photo-thumb-border: #CCCCCC; + + /* Menu and Tab Colors */ + --color-menu-bg: #FFFFFF; + --color-menu-item-text: #654d6c; + --color-menu-item-active: #D1C6DA; + --color-view-tab-bg: #fff; + --color-view-window-bg: #ccc; + --color-query-select-bg: #ccc; + --color-tab-inactive-bg: #eee; + --color-tab-inactive-border: #ddd; + --color-tab-inactive-border-light: #aaa; + --color-tab-inactive-text: #99f; + --color-tab-active-bg: #ccc; + --color-tab-active-border: #ddd; + --color-tab-active-border-light: #aaa; + --color-tab-active-text: #22f; + + /* Special Highlights */ + --color-source-highlight: yellow; + --color-hover-visibility: visible; + --color-hidden-visibility: hidden; + --color-mild-notice-bg: #ffe; + --color-bottom-border-highlight: rgb(100%,65%,0%); + --color-col-close: #aaa; + --color-sort-arrow: #aaa; + --color-pending-edit: #bbb; + + /* Typography */ + --font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-family-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-size-base: 100%; + --font-size-strong: 120%; + --font-weight-normal: normal; + --font-weight-bold: bold; + --line-height-base: 1.5; + --line-height-tight: 1.4; + --line-height-loose: 1.6; + --letter-spacing-wide: 0.025em; + --font-size-sm: 0.875rem; + --font-size-lg: 1.125rem; + --font-size-xl: 1.25rem; + + /* Spacing and Sizing */ + --spacing-tiny: 0.05em; + --spacing-small: 0.1em; + --spacing-xs: 0.5rem; + --spacing-sm: 0.75em; + --spacing-base: 0.5em; + --spacing-md: 1em; + --spacing-lg: 1.5em; + --spacing-xl: 2em; + --spacing-2xl: 3em; + --border-width-thin: 1px; + --border-width-medium: 2px; + --border-width-bold: 5px; + --border-radius-base: 0.5em; + --border-radius-lg: 0.75em; + --border-radius-full: 1em; + + /* Primary/Accent Colors */ + --color-primary: #7C4DFF; + --color-primary-alpha: rgba(124, 77, 255, 0.25); + --color-primary-alpha-light: rgba(124, 77, 255, 0.1); + --color-secondary: #0077B6; + --color-accent: #FFD600; + --color-error: #B00020; + --color-success: #00C853; + + /* Card/Section Backgrounds */ + --color-card-bg: #FFFFFF; + --color-section-bg: #F5F5F5; + --color-zebra-stripe: rgba(0, 0, 0, 0.02); + --color-hover-bg: rgba(0, 0, 0, 0.05); + + /* Shadows */ + --box-shadow: 0 2px 8px rgba(124,77,255,0.08); + --box-shadow-sm: 0 1px 4px rgba(124,77,255,0.12); + + /* Accessibility */ + --min-touch-target: 44px; + --focus-ring-width: 2px; + --focus-indicator-width: 3px; + --animation-duration: 0.2s; + --animation-duration-slow: 0.3s; + --min-font-size: 14px; + --min-line-height: 1.4; + --high-contrast-ratio: 7:1; /* WCAG AAA standard */ + + /* Overlay and Modal */ + --overlay-bg: rgba(0, 0, 0, 0.5); + --z-index-modal: 9999; + --z-index-skip-links: 1000; + + /* Opacity */ + --opacity-disabled: 0.6; + + /* Layout Values */ + --max-width-readable: 65ch; + --max-width-readable-wide: 70ch; + --grid-min-column: 30em; + + /* Outline Offsets */ + --outline-offset-sm: 2px; + + /* Success Alpha */ + --color-success-alpha: rgba(0, 200, 83, 0.1); +} diff --git a/dev/dev-mash-utilities.css b/dev/dev-mash-utilities.css new file mode 100644 index 00000000..7a476155 --- /dev/null +++ b/dev/dev-mash-utilities.css @@ -0,0 +1,691 @@ +/* ---ONLY FOR LOCAL DEV--- */ +/* ---final version is in mashlib--- */ + +/* =========================================== + ACCESSIBILITY UTILITIES (HIGH PRIORITY) + =========================================== */ + +/* Screen reader only content - hidden visually but available to assistive tech */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* Visually hidden but can become visible on focus */ +.visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.visually-hidden.focusable:focus, +.visually-hidden.focusable:active { + position: static !important; + width: auto !important; + height: auto !important; + padding: inherit !important; + margin: inherit !important; + overflow: visible !important; + clip: auto !important; + white-space: inherit !important; +} + +/* Minimum touch target for mobile accessibility (WCAG 2.5.5) */ +.min-touch-target { + min-height: var(--min-touch-target); + min-width: var(--min-touch-target); +} + +/* Reduced motion support */ +.reduced-motion { + animation: none !important; + transition: none !important; +} + +/* Focus ring utility */ +.focus-ring { + outline: var(--focus-ring-width) solid var(--color-primary); + outline-offset: var(--outline-offset-sm); +} + +.no-focus-ring { + outline: none; +} + +/* ARIA live regions - for dynamic content announcements */ +.live-region { + position: absolute; + left: -10000px; + width: 1px; + height: 1px; + overflow: hidden; +} + +/* Skip links for keyboard navigation */ +.skip-links { + position: absolute; + top: -100px; + left: 0; + z-index: var(--z-index-skip-links); +} + +.skip-links a { + position: absolute; + left: var(--spacing-xs); + top: var(--spacing-xs); + padding: var(--spacing-sm); + background: var(--color-primary); + color: var(--color-background); + text-decoration: none; + border-radius: var(--border-radius-base); +} + +.skip-links a:focus { + top: var(--spacing-xs); +} + +/* =========================================== + LAYOUT UTILITIES + =========================================== */ + +.flex { + display: flex; +} + +.grid { + display: grid; +} + +.center { + display: flex; + justify-content: center; + align-items: center; +} + +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.flex-column-center { + display: flex; + flex-direction: column; + align-items: center; +} + +.flex-row { + display: flex; + flex-direction: row; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-1 { + flex: 1; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +/* =========================================== + SPACING UTILITIES + =========================================== */ + +/* Gap utilities */ +.gap-xs { gap: var(--spacing-xs); } +.gap-sm { gap: var(--spacing-sm); } +.gap-md { gap: var(--spacing-md); } +.gap-lg { gap: var(--spacing-lg); } +.gap-xl { gap: var(--spacing-xl); } + +/* Margin top */ +.mt-0 { margin-top: 0; } +.mt-xs { margin-top: var(--spacing-xs); } +.mt-sm { margin-top: var(--spacing-sm); } +.mt-md { margin-top: var(--spacing-md); } +.mt-lg { margin-top: var(--spacing-lg); } +.mt-xl { margin-top: var(--spacing-xl); } + +/* Margin bottom */ +.mb-0 { margin-bottom: 0; } +.mb-xs { margin-bottom: var(--spacing-xs); } +.mb-sm { margin-bottom: var(--spacing-sm); } +.mb-md { margin-bottom: var(--spacing-md); } +.mb-lg { margin-bottom: var(--spacing-lg); } +.mb-xl { margin-bottom: var(--spacing-xl); } + +/* Margin left */ +.ml-0 { margin-left: 0; } +.ml-xs { margin-left: var(--spacing-xs); } +.ml-sm { margin-left: var(--spacing-sm); } +.ml-md { margin-left: var(--spacing-md); } +.ml-lg { margin-left: var(--spacing-lg); } + +/* Margin right */ +.mr-0 { margin-right: 0; } +.mr-xs { margin-right: var(--spacing-xs); } +.mr-sm { margin-right: var(--spacing-sm); } +.mr-md { margin-right: var(--spacing-md); } +.mr-lg { margin-right: var(--spacing-lg); } + +/* Margin horizontal (left + right) */ +.mx-auto { margin-left: auto; margin-right: auto; } +.mx-xs { margin-left: var(--spacing-xs); margin-right: var(--spacing-xs); } +.mx-sm { margin-left: var(--spacing-sm); margin-right: var(--spacing-sm); } +.mx-md { margin-left: var(--spacing-md); margin-right: var(--spacing-md); } + +/* Margin vertical (top + bottom) */ +.my-xs { margin-top: var(--spacing-xs); margin-bottom: var(--spacing-xs); } +.my-sm { margin-top: var(--spacing-sm); margin-bottom: var(--spacing-sm); } +.my-md { margin-top: var(--spacing-md); margin-bottom: var(--spacing-md); } + +/* Padding */ +.p-0 { padding: 0; } +.p-xs { padding: var(--spacing-xs); } +.p-sm { padding: var(--spacing-sm); } +.p-md { padding: var(--spacing-md); } +.p-lg { padding: var(--spacing-lg); } +.p-xl { padding: var(--spacing-xl); } + +/* Padding top */ +.pt-xs { padding-top: var(--spacing-xs); } +.pt-sm { padding-top: var(--spacing-sm); } +.pt-md { padding-top: var(--spacing-md); } +.pt-lg { padding-top: var(--spacing-lg); } + +/* Padding bottom */ +.pb-xs { padding-bottom: var(--spacing-xs); } +.pb-sm { padding-bottom: var(--spacing-sm); } +.pb-md { padding-bottom: var(--spacing-md); } +.pb-lg { padding-bottom: var(--spacing-lg); } + +/* Padding horizontal */ +.px-xs { padding-left: var(--spacing-xs); padding-right: var(--spacing-xs); } +.px-sm { padding-left: var(--spacing-sm); padding-right: var(--spacing-sm); } +.px-md { padding-left: var(--spacing-md); padding-right: var(--spacing-md); } +.px-lg { padding-left: var(--spacing-lg); padding-right: var(--spacing-lg); } + +/* Padding vertical */ +.py-xs { padding-top: var(--spacing-xs); padding-bottom: var(--spacing-xs); } +.py-sm { padding-top: var(--spacing-sm); padding-bottom: var(--spacing-sm); } +.py-md { padding-top: var(--spacing-md); padding-bottom: var(--spacing-md); } +.py-lg { padding-top: var(--spacing-lg); padding-bottom: var(--spacing-lg); } + +/* =========================================== + TEXT UTILITIES + =========================================== */ + +.text-center { text-align: center; } +.text-left { text-align: left; } +.text-right { text-align: right; } + +.text-secondary { color: var(--color-text-secondary); } +.text-muted { color: var(--color-text-muted); } +.text-primary { color: var(--color-primary); } +.text-error { color: var(--color-error); } +.text-success { color: var(--color-success); } + +.text-bold { font-weight: var(--font-weight-bold); } +.text-normal { font-weight: var(--font-weight-normal); } + +.text-sm { font-size: var(--font-size-sm); } +.text-lg { font-size: var(--font-size-lg); } +.text-xl { font-size: var(--font-size-xl); } + +/* Text that respects accessibility guidelines */ +.text-readable { + line-height: var(--line-height-base); + max-width: var(--max-width-readable); +} + +.text-scale-friendly { + line-height: var(--line-height-base); + max-width: var(--max-width-readable-wide); +} + +/* Text with minimum font size safety */ +.text-small { + font-size: max(var(--font-size-sm), var(--min-font-size)); + line-height: var(--min-line-height); +} + +.text-large { + font-size: var(--font-size-lg); + line-height: var(--line-height-base); +} + +/* Text overflow handling */ +.text-truncate { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.text-wrap-anywhere { + overflow-wrap: anywhere; + word-break: break-word; +} + +.text-nowrap { + white-space: nowrap; +} + +/* High contrast text for accessibility */ +.text-contrast-high { + color: var(--color-text); + font-weight: var(--font-weight-bold); +} + +/* Better focus for text elements */ +.focusable-text:focus { + background-color: var(--color-primary-alpha-light); + outline: var(--focus-ring-width) solid var(--color-primary); + outline-offset: var(--outline-offset-sm); + border-radius: var(--outline-offset-sm); +} + +/* High contrast box */ +.high-contrast { + color: var(--color-text); + background: var(--color-background); + border: var(--border-width-thin) solid var(--color-border-pale); +} + +/* =========================================== + BORDER & SHADOW UTILITIES + =========================================== */ + +.rounded { border-radius: var(--border-radius-full); } +.rounded-sm { border-radius: var(--border-radius-base); } +.rounded-lg { border-radius: var(--border-radius-lg); } +.rounded-none { border-radius: 0; } + +.shadow { box-shadow: var(--box-shadow); } +.shadow-sm { box-shadow: var(--box-shadow-sm); } +.shadow-none { box-shadow: none; } + +.border { border: var(--border-width-thin) solid var(--color-border); } +.border-dark { border: var(--border-width-thin) solid var(--color-border-dark); } +.border-light { border: var(--border-width-thin) solid var(--color-border-light); } +.border-none { border: none; } + +/* =========================================== + BACKGROUND UTILITIES + =========================================== */ + +.bg-primary { + background: var(--color-primary); + color: var(--color-background); +} + +.bg-card { + background: var(--color-card-bg); +} + +.bg-section { + background: var(--color-section-bg); +} + +.bg-transparent { + background: transparent; +} + +.bg-white { + background: var(--color-background); +} + +/* =========================================== + BUTTON COMPONENTS + =========================================== */ + +/* Primary button */ +.btn-primary { + min-height: var(--min-touch-target); + padding: var(--spacing-sm) var(--spacing-md); + border: var(--border-width-thin) solid var(--color-primary); + border-radius: var(--border-radius-base); + background: var(--color-primary); + color: var(--color-background); + font-weight: var(--font-weight-bold); + cursor: pointer; + transition: all var(--animation-duration) ease; + text-decoration: none; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.btn-primary:hover { + background: color-mix(in srgb, var(--color-primary) 85%, black); + box-shadow: 0 2px 4px var(--color-primary-alpha); +} + +.btn-primary:active { + box-shadow: 0 1px 2px var(--color-primary-alpha); +} + +.btn-primary:focus, +.btn-primary:focus-visible { + outline: var(--focus-indicator-width) solid var(--color-primary); + outline-offset: var(--outline-offset-sm); + box-shadow: 0 0 0 var(--focus-ring-width) var(--color-background), 0 0 0 calc(var(--focus-ring-width) + var(--focus-indicator-width)) var(--color-primary-alpha); +} + +.btn-primary:disabled { + opacity: var(--opacity-disabled); + cursor: not-allowed; + transform: none; +} + +/* Secondary button */ +.btn-secondary { + min-height: var(--min-touch-target); + padding: var(--spacing-sm) var(--spacing-md); + border: var(--border-width-thin) solid var(--color-secondary); + border-radius: var(--border-radius-base); + background: var(--color-secondary); + color: var(--color-background); + font-weight: var(--font-weight-bold); + cursor: pointer; + transition: all var(--animation-duration) ease; + text-decoration: none; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.btn-secondary:hover { + background: color-mix(in srgb, var(--color-secondary) 85%, black); +} + +.btn-secondary:disabled { + opacity: var(--opacity-disabled); + cursor: not-allowed; +} + +/* Outline button */ +.btn-outline { + min-height: var(--min-touch-target); + padding: var(--spacing-sm) var(--spacing-md); + border: var(--border-width-medium) solid var(--color-primary); + border-radius: var(--border-radius-base); + background: transparent; + color: var(--color-primary); + font-weight: var(--font-weight-bold); + cursor: pointer; + transition: all var(--animation-duration) ease; + text-decoration: none; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.btn-outline:hover { + background: var(--color-primary); + color: var(--color-background); +} + +.btn-outline:disabled { + opacity: var(--opacity-disabled); + cursor: not-allowed; +} + +/* Transparent button (for solid-ui integration) */ +.btn-transparent { + background-color: transparent; + border: none; + cursor: pointer; +} + +.btn-transparent:hover { + background-color: var(--color-hover-bg); +} + +/* Button focus state */ +.action-button-focus:focus, +.action-button-focus:focus-visible { + outline: var(--focus-indicator-width) solid var(--color-primary) !important; + outline-offset: var(--outline-offset-sm) !important; + box-shadow: 0 0 0 var(--focus-ring-width) var(--color-background), 0 0 0 calc(var(--focus-ring-width) + var(--focus-indicator-width)) var(--color-primary-alpha) !important; + z-index: 1; +} + +/* =========================================== + CARD & SECTION COMPONENTS + =========================================== */ + +.module-card { + background: var(--color-card-bg); + border-radius: var(--border-radius-full); + box-shadow: var(--box-shadow); + padding: var(--spacing-lg); + margin-bottom: var(--spacing-lg); + width: 100%; + max-width: 100%; + box-sizing: border-box; +} + +.module-header { + text-align: center; + margin-bottom: var(--spacing-md); +} + +.section-centered { + display: flex; + flex-direction: column; + align-items: center; +} + +.section-bg { + background: var(--color-section-bg); + border-radius: var(--border-radius-full); + box-shadow: var(--box-shadow); + padding: var(--spacing-md); +} + +.section-title { + font-size: var(--font-size-xl); + font-weight: var(--font-weight-bold); + color: var(--color-primary); + margin: 0; +} + +/* =========================================== + LIST & TABLE UTILITIES + =========================================== */ + +.list-reset { + list-style: none; + padding: 0; + margin: 0; +} + +.zebra-stripe tr:nth-child(even), +.zebra-stripe > *:nth-child(even) { + background-color: var(--color-zebra-stripe); +} + +/* =========================================== + DISPLAY & VISIBILITY UTILITIES + =========================================== */ + +.block { display: block; } +.inline { display: inline; } +.inline-block { display: inline-block; } +.hidden { display: none; } +.visible { visibility: visible; } +.invisible { visibility: hidden; } + +/* =========================================== + WIDTH & HEIGHT UTILITIES + =========================================== */ + +.w-full { width: 100%; } +.w-auto { width: auto; } +.h-full { height: 100%; } +.h-auto { height: auto; } +.max-w-full { max-width: 100%; } + +/* =========================================== + POSITION UTILITIES + =========================================== */ + +.relative { position: relative; } +.absolute { position: absolute; } +.fixed { position: fixed; } +.sticky { position: sticky; } + +/* =========================================== + LOADING & STATUS INDICATORS + =========================================== */ + +.loading-text { + color: var(--color-primary); + text-align: center; + margin: var(--spacing-md) 0; +} + +.loading-spinner { + width: var(--min-touch-target); + height: var(--min-touch-target); + border: var(--focus-indicator-width) solid var(--color-border-pale); + border-top: var(--focus-indicator-width) solid var(--color-primary); + border-radius: var(--border-radius-full); + animation: spin var(--animation-duration-slow) linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* =========================================== + ARIA ROLE STYLING + =========================================== */ + +[role="alert"] { + padding: var(--spacing-md); + border: var(--border-width-medium) solid var(--color-error); + border-radius: var(--border-radius-base); + background-color: var(--color-primary-alpha-light); + margin: var(--spacing-md) 0; +} + +[role="status"] { + padding: var(--spacing-md); + border: var(--border-width-medium) solid var(--color-success); + border-radius: var(--border-radius-base); + background-color: var(--color-success-alpha); + margin: var(--spacing-md) 0; +} + +/* =========================================== + FOCUS TRAP FOR MODALS + =========================================== */ + +.focus-trap { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: var(--z-index-modal); + background: var(--overlay-bg); + display: flex; + justify-content: center; + align-items: center; +} + +/* =========================================== + MEDIA QUERIES + =========================================== */ + +/* Respect reduced motion preferences */ +@media (prefers-reduced-motion: reduce) { + .loading-spinner { + animation: none; + border-top-color: var(--color-primary); + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +/* High contrast mode support */ +@media (prefers-contrast: high) { + .btn-primary, + .btn-secondary, + .btn-outline { + border-width: var(--border-width-medium); + } + + .module-card, + .section-bg { + border: var(--border-width-medium) solid var(--color-border-dark); + } +} + +/* Mobile minimum font size */ +@media screen and (max-width: 768px) { + html { + font-size: max(16px, 1rem); + } +} + +/* Smooth scroll when no motion preference */ +@media (prefers-reduced-motion: no-preference) { + html { + scroll-behavior: smooth; + } +} diff --git a/dev/dev-mash.css b/dev/dev-mash.css new file mode 100644 index 00000000..8aa75274 --- /dev/null +++ b/dev/dev-mash.css @@ -0,0 +1,1411 @@ +/* ---ONLY FOR LOCAL DEV--- */ +/* ---final version is in mashlib--- */ + +/* +** ------SolidOS Styles------ +** +*/ +@import url("./dev-light.css"); +@import url("./dev-mash-utilities.css"); + +/* I couldn't find the code for the collapse image. this is a quick work around +to make the collapsing easier to use ( the triangles dont jump 20 pixels). ~cm2 +*/ +img[title="Hide details."] { + float: left; +} + +html { + height: 100%; + line-height: 1.15; +} +body { + height: 100%; + background-color: var(--color-background); + color: var(--color-text); + font-family: var(--font-family-base); +} + +/* Improved heading hierarchy */ +h1, h2, h3, h4, h5, h6 { + color: var(--color-primary); + font-weight: 600; + line-height: var(--line-height-tight); + margin-top: 0; + margin-bottom: var(--spacing-sm); +} + +h1 { font-size: 2em; } /* 32px */ +h2 { font-size: 1.5em; } /* 24px */ +h3 { font-size: 1.25em; } /* 20px */ +h4 { font-size: 1.125em; }/* 18px */ +h5, h6 { font-size: 1em; }/* 16px */ + +/* Better paragraph spacing */ +p { + margin-bottom: var(--spacing-md); + line-height: var(--line-height-base); + max-width: 65ch; /* Optimal reading width */ +} + +/* Improved link accessibility */ +a { + color: var(--color-primary); + text-decoration: underline; + text-underline-offset: 0.125em; + text-decoration-thickness: 0.0625em; +} + +a:hover, a:focus { + text-decoration-thickness: 0.125em; +} + + +/* Main page elements in databrowser.html */ +#PageBody { + display: flex; + flex-direction: column; +} +#DummyUUID { + flex: 1 0 auto; +} +#PageHeader { + flex-shrink: 0; +} +#PageFooter { + flex-shrink: 0; +} + +.warning { + color: var(--color-warning); +} +.selected { + background-color: var(--color-selected-bg); +} + +.licOkay { + background-color: var(--color-success-bg); +} + +/* +** other potential colors for CC: +** #C4FF55. "faded" version of CC +** #486d00, actual CC +** #ccff99, mit page color +*/ + +strong { + font-size: 120%; + color: var(--color-text); + font-weight: bold; +} +div.Outliner { + margin-top: 2em; + padding: 0.8em; +} +form#TabulateForm { + padding: 0.8em; +} +div#addViewForm { + padding: 0.8em; +} +iframe { + background: var(--color-iframe-bg); +} + +/* Map */ + +img.pic { + max-height: 20em; +} + +/* Sources */ + +.fetched { + background-color: var(--color-fetch-bg); +} +.requested { + background-color: var(--color-request-bg); +} +.failed { + color: var(--color-warning); + background-color: var(--color-error-bg); +} +.unparseable { + background-color: var(--color-unparseable-bg); +} + +pre#status { + font-size: 100%; +} + +/* Panes */ +/* +td.internal { } + +/* Moved into code: +div.internalPane { background-color: #ddddff; padding: 0.5em; +border-radius: 1em; border-radius: .4em; } + +div.instancePane { + border-top: solid 1px #777; border-bottom: solid 1px #777; + margin-top: 0.5em; margin-bottom: 0.5em } +*/ +/* ***************** For the Justification UI Panes **********/ + +div.container { + border-top: solid 5px var(--color-container-border); + border-left: solid 5px var(--color-container-border); + border-bottom: solid 5px var(--color-container-border); + border-right: solid 5px var(--color-container-border); + margin-top: 0.5em; + margin-bottom: 0.5em; + border-radius: 0.75em; +} +/* +div.nonCompliantPane { + border-top: solid 1px red; + border-left: solid 1px red; + border-bottom: solid 1px red; + border-right: solid 1px red; + padding: 0.5em; + background-color: #fbf0f7; + margin-top: 0.5em; margin-bottom: 0.5em; + border-radius: 1em; +} + +div.compliantPane { + border-top: solid 1px green; + border-left: solid 1px green; + border-bottom: solid 1px green; + border-right: solid 1px green; + padding: 0.5em; + background-color: #def8e0; + margin-top: 0.5em; margin-bottom: 0.5em; + border-radius: 1em; +} +*/ +div.justification { + font-size: 100%; + padding: 0 5px; + width: 80%; /* @@ Don't use pixels -- use em */ + background-color: var(--color-background); + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +div.description { + font-size: 120%; + border-top: solid 1px var(--color-alert-border); + border-left: solid 1px var(--color-alert-border); + border-bottom: solid 1px var(--color-alert-border); + border-right: solid 1px var(--color-alert-border); + padding: 15px; + width: 100%; + background-color: var(--color-alert-bg); + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0.5em; + margin-right: 0.5em; + border-radius: 0.75em; + position: relative; + left: 0%; +} + +div.premises { + font-size: 100%; + border-top: solid 1px var(--color-info-border); + border-left: solid 1px var(--color-info-border); + border-bottom: solid 1px var(--color-info-border); + border-right: solid 1px var(--color-info-border); + padding: 0.5px; + width: 100%; + background-color: var(--color-info-bg); + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 0.5em; + margin-right: 0.5em; + border-radius: 0.75em; + position: relative; + left: 0%; /*May be we could shift the left margin a bit?*/ +} + +/* ***************** Social Pane **********/ + +div.socialPane { + border-top: solid 1px var(--color-border-dark); + border-bottom: solid 1px var(--color-border-dark); + padding-top: 0.5em; + padding-bottom: 0.5em; + margin: 0; +} + +img.foafPic { + width: 100%; + border: none; + margin: 0; + padding: 0; + /*float:right; */ +} + +div.mildNotice { + border: dashed 0.1em var(--color-border-dark); + margin: 1em; + padding: 1em; + width: 80%; /* float: right; */ + background-color: var(--color-mild-notice-bg); +} + +.friendBox { + /* height: 4em; */ + border-top: solid 0.01em var(--color-border); + margin: 0; + padding: 0.3em; + /* float: left; */ +} +.friendBoxBig { + height: 20em; + border-top: solid 0.01em var(--color-text-dark-gray); /* float: left; */ +} + +.socialPane a { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.socialPane a:link { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.socialPane a:visited { + color: var(--color-text-link-visited); + text-decoration: none; + font-weight: bold; +} +.socialPane a:hover { + color: var(--color-text-link-hover); + text-decoration: underline; + font-weight: bold; +} +.socialPane a:active { + color: var(--color-text-link-active); + text-decoration: none; +} + +img.foafThumb { + height: 3em; + border: 0px; + margin: 0.1em; + padding: 0.1em; + vertical-align: middle; +} /* Thumbnail of a fiend etc */ + +.friendBox .confirmed { + font-weight: bold; +} + +table.inputForm { + font-size: 100%; +} + +.mainBlock { + background: var(--color-main-block-bg); + color: var(--color-text); + float: left; + width: 46%; + margin: 0; + border-left: 1px solid var(--color-border); + border-right: 1px solid var(--color-border); + border-bottom: 1px solid var(--color-border); + padding: 0; +} + +.navBlock { + background-color: var(--color-nav-block-bg); + float: left; + width: 25%; + border: 0; + padding: 0.5em; + margin: 0; +} + +.navBlock .navSection { + border: solid 0.05em var(--color-nav-block-border); + padding: 0.5em; + border-radius: 0.5em; /* CSS3: border-radius: .4em; */ +} + +div.socialPane h2 { + color: var(--color-text-dark-gray); +} +div.socialPane h3 { + color: var(--color-text-dark-gray); +} + +div.social_linkButton { + width: 80%; + background-color: var(--color-background); + border: solid 0.05em var(--color-border); + margin-top: 0.1em; + margin-bottom: 0.1em; + padding: 0.1em; + text-align: center; +} + +/* For question-and-answer stuff for new web id but quite reusable. +*/ +.answer { + font-style: italic; + color: var(--color-text-answer); + text-decoration: underline; +} +.tip { + font-style: normal; + color: var(--color-text); + margin: 1em; +} +.task { + font-style: normal; + color: var(--color-text); + margin: 1em; + background-color: var(--color-mild-notice-bg); + padding: 1em; + border-radius: 1em; /* CSS3: border-radius: 1em; */ +} +.success { + background-color: var(--color-success-bg); +} +.failure { + background-color: var(--color-failure-bg); + border: 0.5em var(--color-failure-border); +} +div.unknown { + display: none; +} +div.yes > div.negative { + display: none; +} +div.no > div.affirmative { + display: none; +} + +/******************* Exception Pane ******** +** +** A pane created when the loading of a pane +** throws an exception +**/ + +div.exceptionPane pre { + background-color: var(--color-error-notice-bg); +} + +/******************* Category Pane *********/ + +.categoryPane a { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.categoryPane a:link { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.categoryPane a:visited { + color: var(--color-text-link-visited); + text-decoration: none; + font-weight: bold; +} +.categoryPane a:hover { + color: var(--color-text-link-hover); + text-decoration: underline; + font-weight: bold; +} +.categoryPane a:active { + color: var(--color-text-link-active); + text-decoration: none; +} + +.categoryBottomClass { + background-color: var(--color-category-class-bg); + border: 0.1em solid var(--color-category-class-border); +} + +.categoryTable { + padding-left: 2em; +} +.categoryPane { + background-color: var(--color-category-bg); + padding: 0.5em; + border-width: 0.1em; + border-color: var(--color-category-border); + border-radius: 1em; /* CSS3: border-radius: .4em; */ +} + +.categoryPane a.categoryWhy { + color: var(--color-border-pale); +} +.categoryPane a.categoryWhy:link { + color: var(--color-border-pale); + text-decoration: none; + font-weight: bold; +} +.categoryPane a.categoryWhy:visited { + color: var(--color-border-pale); + text-decoration: none; + font-weight: bold; +} +.categoryPane a.categoryWhy:hover { + color: var(--color-text-link-hover); + text-decoration: underline; + font-weight: bold; +} +.categoryPane a.categoryWhy:active { + color: var(--color-border-pale); + text-decoration: none; +} + +.categoryPane a.categoryWhy { + color: grey; +} +/* a.categoryWhy:hover { color: #3B5998 } */ + +/******************* PubsPane *********/ + +.pubsPane { + background-color: var(--color-pubs-pane-bg); + border-width: 0.1em; + border-color: var(--color-pubs-pane-border); + border-radius: 1em; /* CSS3: border-radius: .4em; */ + padding: 1em; + + text-decoration: none; + font-weight: bold; +} + +.pubsPane h2 { + margin: 0; + padding: 0; +} + +.pubsPane form { + padding-left: 1em; +} + +/*Clear both - start things on individula lines */ +.pubsRow { + margin: 0.5em 3em 0.5em 0em; + clear: both; +} + +/*inputs float right to line up */ +.pubsRow input { + float: right; + width: 20em; + height: 1em; +} +#inpid_book_description { + float: right; + height: 8em; + width: 17em; +} + +.pubsRow button { + float: left; + height: 2em; + padding: 0.5em; + margin: 0.5em; +} + +.hideit { + display: none; +} + +.active { + /* display: visible; */ +} + +.submitRow { + clear: both; + height: 5em; +} + +.submitRow button { + width: 7em; + height: 100%; +} + +#buttonid { + display: none; +} + +#buttonid.active { + display: inline; +} + +/******************* CV Pane *****************/ + +.CVclass { + background-color: var(--color-cv-pane-bg); +} + +/******************* Data Content Pane *****************/ + +div.dataContentPane { + border-top: solid 1px var(--color-data-pane-border-top); + border-left: solid 1px var(--color-data-pane-border-top); + border-bottom: solid 1px var(--color-data-pane-border-side); + border-right: solid 1px var(--color-data-pane-border-side); + padding: 0.5em; /* color: #404; */ + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.nestedFormula { + border-top: solid 1px var(--color-data-pane-border-top); + border-left: solid 1px var(--color-data-pane-border-top); + border-bottom: solid 1px var(--color-data-pane-border-side); + border-right: solid 1px var(--color-data-pane-border-side); + padding: 0.5em; + border-radius: 0.5em; +} + +div.dataContentPane td { + padding-left: 0.2em; + padding-top: 0.1em; + padding-right: 0.2em; + padding-bottom: 0.05em; + /* vertical-align: middle; /*@@ Lalana's request*/ + vertical-align: top; /*@@ Tims's request*/ + /* With middel, you can't tell what is with what */ + /* background-color: white; */ +} + +div.dataContentPane tr { + margin-bottom: 0.6em; + padding-top: 1em; + padding-bottom: 1em; +} + +.dataContentPane a { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.dataContentPane a:link { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.dataContentPane a:visited { + color: var(--color-text-link-visited); + text-decoration: none; + font-weight: bold; +} +.dataContentPane a:hover { + color: var(--color-text-link-hover); + text-decoration: underline; + font-weight: bold; +} +.dataContentPane a:active { + color: var(--color-text-link-active); + text-decoration: none; +} + +.dataContentPane.embeddedText { + white-space: pre-wrap; +} +.dataContentPane.embeddedXHTML { +} + +/* div.dataContentPane a { text-decoration: none; color: #006} /* Only very slightly blue */ +div.dataContentPane td.pred { + min-width: 12em; +} /* Keep aligned with others better */ +div.dataContentPane td.pred a { + color: var(--color-text-muted); +} /* Greyish as form field names have less info value */ + +/* .collectionAsTables {border-right: green 1px; margin: 0.2em;} */ + +div.n3Pane { + padding: 1em; + border-top: solid 1px var(--color-data-pane-border-top); + border-left: solid 1px var(--color-data-pane-border-top); + border-bottom: solid 1px var(--color-data-pane-border-side); + border-right: solid 1px var(--color-data-pane-border-side); + color: var(--color-text-blue); +} + +.imageView { + border: 1em var(--color-background); + margin: 1em; +} + +.n3Pane pre { + font-size: 120%; +} +div.n3Pane { +} + +.RDFXMLPane pre { + font-size: 120%; +} +div.RDFXMLPane { +} + +div.RDFXMLPane { + padding: 1em; + border-top: solid 2px var(--color-data-pane-border-top); + border-left: solid 2px var(--color-data-pane-border-top); + border-bottom: solid 2px var(--color-data-pane-border-side); + border-right: solid 2px var(--color-data-pane-border-side); + color: var(--color-text-brown); +} + +/* Generic things useful anywhere */ + +img.hideTillHover { + visibility: hidden; +} +img.hideTillHover:hover { + visibility: visible; +} +.hideTillHover img { + visibility: hidden; +} +.hideTillHover:hover img { + visibility: visible; +} +.hideTillHover a { + visibility: hidden; +} +.hideTillHover:hover a { + visibility: visible; +} +.hoverControl .hoverControlHide { + visibility: hidden; +} +.hoverControl:hover .hoverControlHide { + visibility: visible; +} + +/* Pane icons: */ + +/* +.hoverControl .paneShown{ border-radius: 0.5em; + border-top: solid #222 1px; + border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; + border-right: solid #eee 0.1em; + margin-left: 1em; padding: 3px; + background-color: #ffd; + visibility: hidden;} + +.hoverControl:hover .paneShown{ border-radius: 0.5em; + border-top: solid #222 1px; + border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; + border-right: solid #eee 0.1em; + margin-left: 1em; padding: 3px; + background-color: #ffd; + visibility:visible; } + +.paneHidden { border-radius: 0.5em; margin-left: 1em; padding: 3px} + +.hoverControl .paneHidden { border-radius: 0.5em; margin-left: 1em; padding: 3px; visibility:hidden;} +.hoverControl:hover .paneHidden { border-radius: 0.5em; margin-left: 1em; padding: 3px; visibility:visible; } +*/ + +/* outline object view */ +img.outlineImage { + max-height: 20em; + max-width: 30em; +} /* save vertical space */ +/* Compare facebook which only limits width -> lots of tall images! */ + +img.phoneIcon { + border: 0; + margin-left: 1em; +} + +table#sources { + width: 100%; +} + +table { + border-spacing: 0; +} + +table { + margin: 0em; +} + +td { + font-size: 100%; + border-left: none; + border-top: none; + border-right: none; + border-bottom: none; + margin: 0.2em; + /* border-right: solid purple 0.1em ; + border-bottom: solid purple 0.1em; +*/ + vertical-align: top; + /* display: compact; Causes console errors in ffox */ +} + +td.pred { + padding-left: 0.5em; +} +/*td.optButton { display: none } +tr[parentOfSelected] > td.pred td.optButton { display: block } +*/ + +table.results { + width: 100%; +} + +table.results td { + font-size: 100%; + background-color: var(--color-table-result-bg); + border-left: none; + border-top: none; + border-right: none; + border-bottom: none; + margin: 0.1em; + border-right: solid var(--color-table-border-dark) 0.1em; + border-bottom: solid var(--color-table-border-dark) 0.1em; + + vertical-align: top; +} + +table.results th { + font-size: 100%; + background-color: var(--color-table-header-bg); + border-left: none; + border-top: none; + border-right: solid var(--color-table-border-dark) 0.1em; + border-bottom: solid var(--color-table-border-dark) 0.1em; + margin: 0.3em; + padding-top: 0.5em; + padding-right: 0.5em; + border-right: solid var(--color-table-border-dark) 0.1em; + border-bottom: solid var(--color-table-border-dark) 0.1em; + + vertical-align: top; +} + +/* Hide sections of the display. +Collpase not actually in CSS1 except for table row and col. +Supposed to leave layoutunchanged. So we float it too. */ + +.collapse { + display: none; +} +.expand { + display: block; +} + +/* log classes */ +.nrml { + color: var(--color-log-normal); +} +.info { + color: var(--color-log-info); +} +.warn { + color: var(--color-log-warn); + background-color: var(--color-log-warn-bg); +} +.eror { + color: var(--color-log-error); + background-color: var(--color-log-error-bg); +} +.mesg { + color: var(--color-log-message); +} +.dbug { + color: var(--color-log-debug); + background-color: var(--color-log-debug-bg); +} /* Blue */ + +/* Try to get the icons to flush right in the cell */ + +.sortheader { + color: var(--color-log-normal); + text-decoration: none; + position: relative; + border: none; /* Jim's commented out */ +} + +.colclose { + float: right; + color: var(--color-col-close); +} /* Should be 67% transp black */ +.sortarrow { + float: left; + color: var(--color-sort-arrow); + border: none; +} + +/* CSS Stuff for tabbed Views.. */ +table.viewTable { + padding: 0; + margin: 0; + border-style: none; + border-width: 0; + height: 40em; + width: 100%; + border-spacing: 0; +} + +div.viewTabs { + background-color: var(--color-view-tab-bg); + padding: 0; +} + +div.viewWindows { + width: 100%; + height: 100%; + overflow: auto; + margin: 0em; + padding: 0em; + border-right: solid var(--color-border-light) 0.1em; /* was 2px */ + border-left: solid var(--color-border-light) 0.1em; + border-bottom: solid var(--color-border-light) 0.1em; + background-color: var(--color-view-window-bg); +} + +div.querySelect { + background-color: var(--color-query-select-bg); + width: 100%; + height: 100%; + border-left: solid var(--color-border-light) 0.1em; + border-bottom: solid var(--color-border-light) 0.1em; + overflow: auto; + margin: 0em; + padding: 0em; +} + +td.viewTableData { + padding: 0em; + margin: 0em; + height: 100%; + width: 80%; +} + +td.queryTableData { + padding: 0em; + margin: 0em; + border-width: 0em; + height: 100%; + width: 20%; + border-style: none; +} + +table.viewTable tr { + height: 100%; + margin: 0em; + padding: 0em; + border-style: none; +} + +a { + color: var(--color-text-link); + text-decoration: none; + cursor: pointer; +} +a.inactive { + background-color: var(--color-tab-inactive-bg); + border-right: solid var(--color-tab-inactive-border) 0.1em; + border-top: solid var(--color-tab-inactive-border-light) 0.1em; + border-left: solid var(--color-tab-inactive-border-light) 0.1em; + padding-top: 0.3em; + padding-left: 0.8em; + padding-right: 0.8em; + padding-bottom: 0em; + margin-right: 0.1em; + color: var(--color-tab-inactive-text); + text-decoration: none; +} + +a.active { + background-color: var(--color-tab-active-bg); + border-right: solid var(--color-tab-active-border) 0.1em; + border-top: solid var(--color-tab-active-border-light) 0.1em; + border-left: solid var(--color-tab-active-border-light) 0.1em; + padding-top: 0.3em; + padding-left: 0.8em; + padding-right: 0.8em; + padding-bottom: 0em; + margin-right: 0.1em; + color: var(--color-tab-active-text); + text-decoration: none; +} + +input.tabQueryName { + border: solid var(--color-border-light) 0.1em; + width: 100%; + padding: 0em; +} + +input.delQueryButton { + border: none; + color: var(--color-warning); + background-color: var(--color-tab-active-bg); + cursor: pointer; + padding: 0em; +} + +td.checkboxTD { + padding-right: 0.5em; +} + +.sourceHighlight { + background-color: var(--color-source-highlight); +} + +#MenuBar { + padding: 0.5em; + position: fixed; + top: 0; + bottom: auto; + left: 0; + right: 0; + background-color: var(--color-nav-block-bg); + border: 0.1em solid var(--color-border-light); +} + +#TabulatorStatusWidget { + position: fixed; + top: 0; + bottom: auto; + left: auto; + right: 0; +} + +div.mapKeyDiv { + position: relative; + float: right; + margin: 0.3em; + color: var(--color-border-dark); + background: var(--color-background); + border: solid var(--color-border-dark) 0.1em; + padding: 0.1em; +} + +span.closeQuerySpan { + float: right; + text-align: right; + height: 0.1em; + overflow: visible; +} + +span.openQuerySpan { + float: left; + overflow: visible; + height: 0em; + text-align: left; + position: relative; + top: 0em; + z-index: 1; +} + +input.textinput { + width: 100%; + border: none; + font-size: 95%; + padding: 0em; + margin: 0; +} + +textarea.textinput { + border: none; +} + +.pendingedit { + color: var(--color-pending-edit); +} + +td.undetermined { + color: var(--color-nav-block-border); + font-style: italic; +} + +/*revert back*/ +td.undetermined table { + color: var(--color-text); + font-style: normal; +} + +/*color style from http://developer.yahoo.com/yui/docs/module_menu.html*/ +.outlineMenu { + position: absolute; + /*width:10em;*/ + height: 10em; /* Jim's commented out */ + background: var(--color-menu-bg) none repeat scroll 0%; + overflow-x: hidden; + overflow-y: auto; + border: 1px solid; + /*padding:.2em;*/ +} +.outlineMenu table { + cursor: default; + width: 100%; + text-align: left; + padding: 5px 5px; +} +.outlineMenu div { + /*width:6em;*/ + overflow: auto; + white-space: nowrap; +} +.outlineMenu td { + color: var(--color-menu-item-text); +} +.outlineMenu .activeItem { + background: var(--color-menu-item-active); +} /* @@ Jim's: #f4e8fc; */ +.outlineMenu input { + margin: 0.2em; +} + +div.bottom-border { + border: 0.2em solid transparent; + width: 100%; +} + +div.bottom-border-active { + cursor: copy; + border: 0.2em solid; + border-color: var(--color-bottom-border-highlight); +} + +/* The thing below was for the kenny's orange bar*/ +/* @@@ This is not specific enough +td{ + margin: 0; + padding: 0; +} +*/ + +.deleteIcon { + margin-left: 0.1em; +} + +.deleteCol { + float: right; + display: inline; +} + +.suggestion_list { + background: var(--color-suggestion-bg); + border: 1px solid var(--color-suggestion-border); + padding: 4px; +} + +.suggestion_list ul { + padding: 0; + margin: 0; + list-style-type: none; +} + +.suggestion_list a { + text-decoration: none; + color: var(--color-suggestion-link); +} + +.suggestion_list .selected { + background: var(--color-suggestion-selected-bg); + color: var(--color-suggestion-selected-text); +} + +.suggestion_list .selected a { + color: var(--color-suggestion-selected-text); +} + +#autosuggest { + display: none; +} + +/* +Start of styles for the photoPane, by albert08@csail.mit.edu +*/ +div.PhotoContentPane { + float: left; + width: 900px; + border: 1px solid var(--color-photo-border); + padding: 10px; +} +div.PhotoListPanel { + float: left; + padding: 5px; + border: 1px solid var(--color-photo-border); + width: 540px; + min-height: 300px; +} +div.PhotoInfoPanel { + float: left; + padding: 10px; + border: 1px solid var(--color-photo-border); + width: 300px; + text-align: center; + margin: 0px 0px 10px 10px; +} +div.TagMenu { + float: left; + padding: 10px; + border: 1px solid var(--color-photo-border); + width: 300px; + margin: 0px 0px 0px 10px; + text-align: justify; +} +.tagItem { + float: left; + padding: 2px; + margin: 2px; + cursor: pointer; +} +.tagItem_h { + float: left; + padding: 2px; + margin: 1px; + border: 1px solid var(--color-photo-tag-highlight-border); + background-color: var(--color-photo-tag-highlight); + cursor: pointer; +} +div.photoItem { + float: left; + width: 100%; +} +div.photoFrame { + border-right: 1px solid var(--color-photo-border); + width: 260px; + padding: 10px; + margin: 10px 10px 10px 10px; + text-align: center; + float: left; +} +img.photoThumbnail { + border: 1px solid var(--color-photo-thumb-border); + margin: auto auto auto auto; +} +.photoListTags { + width: 200px; + margin-top: 10px; + padding-top: 10px; + float: left; +} +.photoList_tag { + background: transparent + url("https://solidos.github.io/solid-ui/src/originalIcons/tag_tiny.png") 0px + 1px no-repeat; + padding: 1px 0px 1px 18px; + margin-left: 5px; +} +.TagMenu_tag { + background: transparent + url("https://solidos.github.io/solid-ui/src/originalIcons/tag_tiny.png") 0px + 1px no-repeat; + padding: 1px 0px 1px 18px; + margin-left: 5px; +} +div.photoImportContentPane { + float: left; + padding: 0px; + width: 930px; + border: 1px solid var(--color-photo-border); + padding: 10px; +} +.photoImportTitle { + font-size: 1rem; + font-weight: bold; +} +.photoItemPanel { + width: 260px; + height: 300px; + float: left; + padding: 10px; + border: 1px solid var(--color-photo-border); + margin: 0px 10px 10px 0px; +} +.photoControlImg { + border: 0px; + cursor: pointer; +} +.photoControlImgInactive { + opacity: 0.5; + border: 0px; +} +#photoPageInfo { + font-family: var(--font-family-ui); + font-size: 0.875rem; + font-weight: bold; +} +.controls { + clear: both; + text-align: right; + margin: 15px 15px 0px 0px; +} +.controlButton { + margin: 0px 0px 0px 10px; +} +div.TagPane { + min-width: 500px; + border: 1px solid var(--color-photo-border); + padding: 10px; +} +div.TagSemanticsPanel { + margin: 5px 0px 20px 0px; +} +div.TagSemanticsTable { + width: 100%; + font-family: var(--font-family-ui); + font-size: 0.75rem; +} +div.AddTagSemantics { + margin: 50px 0px 10px 0px; +} +.controlSelect { + margin: 5px; + font-family: var(--font-family-ui); + font-size: 0.75rem; +} +.tagURIInput { + margin: 5px; + font-family: var(--font-family-ui); + font-size: 0.75rem; + width: 300px; +} +div.TagPane hr { + border: 1px solid var(--color-photo-border); +} +/* +End of styles for the photoPane +*/ + +/* +Styles for tableViewPane +*/ + +.tableViewPane table th { + background-color: var(--color-tab-inactive-bg); + color: var(--color-log-normal); +} + +.tableViewPane table th a { + color: var(--color-text-secondary); +} + +.tableViewPane table .selectors td { + background-color: var(--color-tab-active-bg); +} + +.tableViewPane table td { + border-bottom: 1px solid var(--color-data-pane-border-top); + border-right: 1px solid var(--color-data-pane-border-top); +} + +.tableViewPane .toolbar td { + border: none; +} + +.tableViewPane .sparqlButton { + width: 16px; + height: 16px; + border: 1px solid var(--color-data-pane-border-top); +} + +.tableViewPane .sparqlDialog { + position: fixed; + top: 40px; + left: 100px; + width: 600px; + background: var(--color-background); + border: 1px solid var(--color-data-pane-border-top); + padding: 5px; +} + +.tableViewPane .sparqlDialog textarea { + width: 590px; + height: 250px; +} + +/* These should be the same as with hthe dataContentPane */ +.tableViewPane a { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.tableViewPane a:link { + color: var(--color-text-link); + text-decoration: none; + font-weight: bold; +} +.tableViewPane a:visited { + color: var(--color-text-link-visited); + text-decoration: none; + font-weight: bold; +} +.tableViewPane a:hover { + color: var(--color-text-link-hover); + text-decoration: underline; + font-weight: bold; +} +.tableViewPane a:active { + color: var(--color-text-link-active); + text-decoration: none; +} + +.tableViewPane tr { + border-color: var(--color-border-darker); + padding-left: 0.3em; + padding-right: 0.3em; +} + +/*The 'display explanation' feature*/ +.inquiry { + padding-left: 0.2em; + color: var(--color-warning); + font-family: var(--font-family-ui); + font-weight: bold; +} + +/* +End of styles for tableViewPane +*/ + +/* Styles for FORM PANE +** +** Colors from data cotent pane +*/ + +.formPane a { + color: var(--color-text-link); + text-decoration: none; +} +.formPane a:link { + color: var(--color-text-link); + text-decoration: none; +} +.formPane a:visited { + color: var(--color-text-link-visited); + text-decoration: none; +} +.formPane a:hover { + color: var(--color-text-link-hover); + font-weight: bold; +} /* was text-decoration: underline; */ +.formPane a:active { + color: var(--color-text-link-active); + text-decoration: none; +} + +/* ends */ + +@mixin box-shadow($x-axis: 0, $y-axis: 1px, $blur: 4px, $color: $default) { + box-shadow: $x-axis $y-axis $blur $color; + -webkit-box-shadow: $x-axis $y-axis $blur $color; + -moz-box-shadow: $x-axis $y-axis $blur $color; + -o-box-shadow: $x-axis $y-axis $blur $color; +} diff --git a/dev/index.html b/dev/index.html index 515ef587..e3ee4f64 100644 --- a/dev/index.html +++ b/dev/index.html @@ -14,15 +14,16 @@ if (typeof UI !== 'undefined') window.UI = UI; @@ -30,7 +31,7 @@

Solid Pane Tester

A handy tool for pane developers. Put your JS or TS file in dev/pane/. - Run renderPane('https://solidos.solidcommunity.net/profile/card#me') from the console. + Run renderPane('https://testingsolidos.solidcommunity.net/profile/card#me') from the console. Don't forget that the resource owner needs to add http://localhost:9000 as a trusted app.

HTML element from pane.render will be inserted here ...
diff --git a/dev/loader.ts b/dev/loader.ts index 14eebf04..207e35db 100644 --- a/dev/loader.ts +++ b/dev/loader.ts @@ -1,11 +1,20 @@ + import * as paneRegistry from 'pane-registry' import * as $rdf from 'rdflib' import { solidLogicSingleton, store, authSession } from 'solid-logic' import { getOutliner } from '../src' import Pane from 'profile-pane' +import './dev-mash.css' -// FIXME: -window.$rdf = $rdf +// Add custom properties to the Window interface for TypeScript +declare global { + interface Window { + logout: () => void; + login: () => Promise; + renderPane: typeof renderPane; + Pane: typeof Pane; + } +} async function renderPane (uri: string) { if (!uri) { @@ -28,17 +37,22 @@ async function renderPane (uri: string) { logic: solidLogicSingleton } } - const options = {} - console.log(subject, Pane) + + console.log(subject, context) const icon = createIconElement(Pane) - const paneDiv = Pane.render(subject, context, options) + const paneDiv = Pane.render(subject, context) + const target = document.getElementById('render') - target.innerHTML = '' - target.appendChild(icon) - target.appendChild(paneDiv) + if (target) { + target.innerHTML = '' + target.appendChild(icon) + target.appendChild(paneDiv) + } else { + console.error("Element with id 'render' not found.") + } } -function createIconElement (Pane) { +function createIconElement (Pane: { icon: string }) { const icon = Pane.icon const img = document.createElement('img') img.src = icon @@ -46,12 +60,6 @@ function createIconElement (Pane) { return img } -document.addEventListener('DOMContentLoaded', () => { - renderPane( - 'https://solidos.solidcommunity.net/Team/SolidOs%20team%20chat/index.ttl#this' - ) -}) - window.onload = async () => { console.log('document ready') // registerPanes((cjsOrEsModule: any) => paneRegistry.register(cjsOrEsModule.default || cjsOrEsModule)) @@ -62,30 +70,38 @@ window.onload = async () => { const session = await authSession if (!session.info.isLoggedIn) { console.log('The user is not logged in') - document.getElementById('loginBanner').innerHTML = - '' - } else { - console.log(`Logged in as ${session.info.webId}`) - - document.getElementById( - 'loginBanner' - ).innerHTML = `Logged in as ${session.info.webId} ` + const loginBanner = document.getElementById('loginBanner'); + if (loginBanner) { + loginBanner.innerHTML = ''; + } + } else { + console.log(`Logged in as ${session.info.webId}`) + + const loginBanner = document.getElementById('loginBanner'); + if (loginBanner) { + loginBanner.innerHTML = `Logged in as ${session.info.webId} `; + } } - renderPane() + renderPane('https://testingsolidos.solidcommunity.net/profile/card#me') } window.logout = () => { authSession.logout() - window.location = '' + window.location.href = '' } window.login = async function () { const session = await authSession if (!session.info.isLoggedIn) { const issuer = prompt('Please enter an issuer URI', 'https://solidcommunity.net') - await authSession.login({ - oidcIssuer: issuer, - redirectUrl: window.location.href, - clientName: 'Solid Panes Dev Loader' - }) + if (issuer) { + await authSession.login({ + oidcIssuer: issuer, + redirectUrl: window.location.href, + clientName: 'Solid Panes Dev Loader' + }) + } else { + console.warn('Login cancelled: No issuer provided.') + } } }; (window as any).renderPane = renderPane +console.log("Pane at runtime:", Pane); window.Pane = Pane; diff --git a/eslint.config.mjs b/eslint.config.mjs index 427d7dbf..b97e1bab 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,11 +7,11 @@ export default [ { ignores: [ 'dist/**', + 'dist-dev/**', 'lib/**', 'docs/**', 'node_modules/**', 'dev/**', - 'dev-dist/**', 'coverage/**', ], }, @@ -84,10 +84,21 @@ export default [ { files: ['test/**/**/*.js', 'test/**/*.js'], rules: { + // Code style - match TypeScript settings semi: ['error', 'never'], quotes: ['error', 'single'], - 'no-console': 'off', // Allow console in tests - 'no-undef': 'off', // Tests may define globals - } + + // Strict checking - match TypeScript strictness + 'no-console': 'warn', + 'no-unused-vars': 'warn', // Match TypeScript noUnusedLocals: true + 'no-undef': 'error', + strict: ['error', 'global'], // Match TypeScript alwaysStrict: true + + // Additional strictness to match TypeScript behavior + 'no-implicit-globals': 'error', + 'prefer-const': 'error', // Encourage immutability + 'no-var': 'error', // Use let/const only + 'no-redeclare': 'error' + }, } ] diff --git a/package-lock.json b/package-lock.json index f4e73f70..752dbdac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "solid-panes", - "version": "4.0.0", + "version": "4.0.0-newStyle", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "solid-panes", - "version": "4.0.0", + "version": "4.0.0-newStyle", "license": "MIT", "dependencies": { "@solid/better-simple-slideshow": "^0.1.0", @@ -20,7 +20,7 @@ "meeting-pane": "^3.0.0", "mime-types": "^3.0.1", "pane-registry": "^3.0.0", - "profile-pane": "^2.0.0", + "profile-pane": "2.0.0-newStyle-6806a782", "solid-namespace": "^0.5.4", "source-pane": "^3.0.0" }, @@ -39,6 +39,7 @@ "babel-loader": "^10.0.0", "babel-plugin-inline-import": "^3.0.0", "buffer": "^6.0.3", + "css-loader": "^7.1.2", "eslint": "^9.33.0", "globals": "^17.0.0", "html-webpack-plugin": "^5.6.3", @@ -48,16 +49,19 @@ "neostandard": "^0.12.2", "node-polyfill-webpack-plugin": "^4.1.0", "path-browserify": "^1.0.1", + "raw-loader": "^4.0.2", "rdflib": "^2.3.0", "react": "^19.1.1", "react-dom": "^19.1.1", - "solid-logic": "^4.0.0", - "solid-ui": "^3.0.0", + "solid-logic": "^4.0.1", + "solid-ui": "^3.0.1", + "style-loader": "^4.0.0", "ts-jest": "^29.4.1", + "ts-loader": "^9.5.4", "typescript": "^5.9.2", - "webpack": "^5.101.0", + "webpack": "^5.104.1", "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.2.2" + "webpack-dev-server": "^5.2.3" } }, "node_modules/@adobe/css-tools": { @@ -693,13 +697,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -819,13 +823,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1641,17 +1645,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", - "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1848,9 +1852,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2050,9 +2054,9 @@ } }, "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, "license": "MIT", "optional": true, @@ -2062,9 +2066,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, "license": "MIT", "optional": true, @@ -2099,9 +2103,9 @@ "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3560,9 +3564,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", "dev": true, "license": "MIT" }, @@ -3819,9 +3823,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", - "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", "dependencies": { @@ -3955,9 +3959,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz", + "integrity": "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -4092,21 +4096,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz", - "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", + "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/type-utils": "8.48.0", - "@typescript-eslint/utils": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/type-utils": "8.53.0", + "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4116,7 +4119,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.48.0", + "@typescript-eslint/parser": "^8.53.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -4156,7 +4159,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/project-service": { + "node_modules/@typescript-eslint/project-service": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==", @@ -4178,7 +4181,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", @@ -4196,7 +4199,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/tsconfig-utils": { + "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==", @@ -4213,35 +4216,17 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", - "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/type-utils": { "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", - "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", + "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.0", - "@typescript-eslint/tsconfig-utils": "8.53.0", "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/utils": "8.53.0", "debug": "^4.4.3", - "minimatch": "^9.0.5", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "engines": { @@ -4251,127 +4236,15 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", - "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.53.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz", - "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.48.0", - "@typescript-eslint/types": "^8.48.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz", - "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz", - "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz", - "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0", - "@typescript-eslint/utils": "8.48.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz", - "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", "dev": true, "license": "MIT", "engines": { @@ -4383,21 +4256,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz", - "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", + "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.48.0", - "@typescript-eslint/tsconfig-utils": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", + "@typescript-eslint/project-service": "8.53.0", + "@typescript-eslint/tsconfig-utils": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/visitor-keys": "8.53.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4424,16 +4297,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz", - "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", + "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.53.0", + "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4448,13 +4321,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz", - "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", + "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/types": "8.53.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -5154,6 +5027,16 @@ "dev": true, "license": "MIT" }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -5666,9 +5549,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.11", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", - "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5682,6 +5565,16 @@ "dev": true, "license": "MIT" }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -5737,27 +5630,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5765,16 +5637,6 @@ "dev": true, "license": "MIT" }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -6185,9 +6047,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001761", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", - "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "version": "1.0.30001764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", "dev": true, "funding": [ { @@ -6319,9 +6181,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", - "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, "license": "MIT" }, @@ -6555,9 +6417,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -6565,9 +6427,9 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, "license": "MIT" }, @@ -6726,6 +6588,55 @@ "jss-preset-default": "^10.10.0" } }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -6773,6 +6684,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -6896,9 +6820,9 @@ "license": "MIT" }, "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -7313,6 +7237,16 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -7324,9 +7258,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7374,9 +7308,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { @@ -7463,27 +7397,27 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.24.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", + "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" }, "engines": { @@ -7808,9 +7742,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", - "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "version": "17.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.2.tgz", + "integrity": "sha512-RhWBeb7YVPmNa2eggvJooiuehdL76/bbfj/OJewyoGT80qn5PXdz8zMOTO6YHOsI7byPt7+Ighh/i/4a5/v7hw==", "dev": true, "license": "MIT", "dependencies": { @@ -8054,9 +7988,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8359,18 +8293,18 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -8870,13 +8804,6 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -9238,20 +9165,24 @@ "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-parser-js": { @@ -9375,6 +9306,19 @@ "node": ">=0.10.0" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -11733,9 +11677,9 @@ } }, "node_modules/ky": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.1.tgz", - "integrity": "sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.2.tgz", + "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==", "license": "MIT", "engines": { "node": ">=18" @@ -11787,9 +11731,9 @@ "license": "MIT" }, "node_modules/lit-html": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", - "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" @@ -11809,6 +11753,21 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -11992,9 +11951,9 @@ } }, "node_modules/memfs": { - "version": "4.51.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", - "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", + "version": "4.51.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz", + "integrity": "sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -12230,6 +12189,25 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-postinstall": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", @@ -12523,9 +12501,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true, "license": "MIT" }, @@ -13216,6 +13194,119 @@ "node": ">= 0.4" } }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13282,20 +13373,20 @@ "license": "MIT" }, "node_modules/profile-pane": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/profile-pane/-/profile-pane-2.0.0.tgz", - "integrity": "sha512-YOaG9Ep9IM05HjognsPenfPzjvgqnftQyieUY46ASxpp84VvPx8sPC8w4+jvms6gqtyRkf5+LRn/u32Fkvb1VQ==", + "version": "2.0.0-newStyle-6806a782", + "resolved": "https://registry.npmjs.org/profile-pane/-/profile-pane-2.0.0-newStyle-6806a782.tgz", + "integrity": "sha512-tG7wtQNrj5iYIL5nfofsN957qgJ8m5YS0hHFhc3teIV1/3oq5fyDqk/5IrcDhZucXjjga0jvQi0bj6LJsLOkiQ==", "license": "MIT", "dependencies": { - "lit-html": "^3.2.1", + "lit-html": "^3.3.2", "pane-registry": "^3.0.0", "qrcode": "^1.5.4", "validate-color": "^2.2.4" }, "peerDependencies": { "rdflib": "^2.3.0", - "solid-logic": "^4.0.0", - "solid-ui": "^3.0.0" + "solid-logic": "^4.0.1", + "solid-ui": "^3.0.1" } }, "node_modules/promise-polyfill": { @@ -13618,35 +13709,44 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-body/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/rdf-canonize": { @@ -14323,25 +14423,25 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -14364,16 +14464,6 @@ "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -14493,16 +14583,16 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -14805,7 +14895,7 @@ }, "peerDependencies": { "rdflib": "^2.3.0", - "solid-logic": "^4.0.0" + "solid-logic": "^4.0.1" } }, "node_modules/source-map": { @@ -14818,6 +14908,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -14920,9 +15020,9 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { @@ -15190,6 +15290,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15233,9 +15350,9 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15775,6 +15892,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -15975,41 +16136,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.48.0.tgz", - "integrity": "sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.48.0", - "@typescript-eslint/parser": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0", - "@typescript-eslint/utils": "8.48.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz", - "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.0.tgz", + "integrity": "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "debug": "^4.3.4" + "@typescript-eslint/eslint-plugin": "8.53.0", + "@typescript-eslint/parser": "8.53.0", + "@typescript-eslint/typescript-estree": "8.53.0", + "@typescript-eslint/utils": "8.53.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16338,9 +16474,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", "dev": true, "license": "MIT", "dependencies": { @@ -16662,6 +16798,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -16915,9 +17052,9 @@ } }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index ccac58ad..36f37a42 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ { "name": "solid-panes", - "version": "4.0.0", + "version": "4.0.0-newStyle", "description": "Solid-compatible Panes: applets and views for the mashlib and databrowser", "main": "dist/index.js", "types": "dist/index.d.ts", - "sideEffects": false, + "sideEffects": [ + "*.css" + ], "files": [ "dist/", "README.md", @@ -13,7 +15,7 @@ "scripts": { "clean": "rm -rf dist src/versionInfo.ts", "build": "npm run clean && npm run build-version && npm run typecheck && npm run build-dist && npm run postbuild-js", - "build-version": "./timestamp.sh > src/versionInfo.ts && eslint 'src/versionInfo.ts' --fix", + "build-version": "bash timestamp.sh > src/versionInfo.ts && ./node_modules/.bin/eslint 'src/versionInfo.ts' --fix", "build-dist": "npm run build-js && npm run build-types", "build-js": "babel src --out-dir dist --extensions '.ts,.js' --source-maps", "build-types": "tsc --emitDeclarationOnly", @@ -26,11 +28,11 @@ "test-watch": "npm run lint && jest --onlyChanged --watch", "test-coverage": "jest --coverage --collectCoverageFrom=src/**/*.[jt]s", "test-debug": "node --inspect-brk ./node_modules/.bin/jest -i --env jest-environment-node-debug", - "prepublishOnly": "npm test && npm run build", + "prepublishOnly": "npm run build && npm run lint && npm test", "preversion": "npm run lint && npm run typecheck && npm test", "postversion": "git push origin main --follow-tags", "watch": "npm run build-version && babel src -d dist --source-maps --extensions '.ts,.js' --watch", - "start": "webpack serve --config webpack.dev.config.js --open" + "start": "webpack serve --config webpack.dev.config.mjs --open" }, "repository": { "type": "git", @@ -67,7 +69,7 @@ "meeting-pane": "^3.0.0", "mime-types": "^3.0.1", "pane-registry": "^3.0.0", - "profile-pane": "^2.0.0", + "profile-pane": "2.0.0-newStyle-6806a782", "solid-namespace": "^0.5.4", "source-pane": "^3.0.0" }, @@ -91,6 +93,7 @@ "babel-loader": "^10.0.0", "babel-plugin-inline-import": "^3.0.0", "buffer": "^6.0.3", + "css-loader": "^7.1.2", "eslint": "^9.33.0", "globals": "^17.0.0", "html-webpack-plugin": "^5.6.3", @@ -100,15 +103,18 @@ "neostandard": "^0.12.2", "node-polyfill-webpack-plugin": "^4.1.0", "path-browserify": "^1.0.1", + "raw-loader": "^4.0.2", "rdflib": "^2.3.0", "react": "^19.1.1", "react-dom": "^19.1.1", - "solid-logic": "^4.0.0", - "solid-ui": "^3.0.0", + "solid-logic": "^4.0.1", + "solid-ui": "^3.0.1", + "style-loader": "^4.0.0", "ts-jest": "^29.4.1", + "ts-loader": "^9.5.4", "typescript": "^5.9.2", - "webpack": "^5.101.0", + "webpack": "^5.104.1", "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.2.2" + "webpack-dev-server": "^5.2.3" } } diff --git a/test/unit/test-import-export/edit-importer.js b/test/unit/test-import-export/edit-importer.js index 9934d158..597d4b29 100644 --- a/test/unit/test-import-export/edit-importer.js +++ b/test/unit/test-import-export/edit-importer.js @@ -1,4 +1,3 @@ -'use strict' // Suspect this is unsed test code /* Profile Editing Appp Pane diff --git a/timestamp.sh b/timestamp.sh index 88d51254..75356bb8 100755 --- a/timestamp.sh +++ b/timestamp.sh @@ -1,13 +1,22 @@ #!/bin/bash echo "export default {" -date -u '+buildTime: "%Y-%m-%dT%H:%M:%SZ",' -git log | grep commit | head -1 | sed -e 's/ /: "/' | sed -e 's/$/",/' +date -u '+ buildTime: "%Y-%m-%dT%H:%M:%SZ",' +if [ -d .git ]; then + commit=$(git log --pretty=format:'%H' -n 1) +else + commit="unknown" +fi +echo " commit: \"$commit\"," echo " npmInfo: {" - npm version | sed 's/\x1b\[[0-9;:]*[mG]//g' | grep -v '^{' | while read line; do - key=$(echo "$line" | cut -d ':' -f 1 | tr -d ' ') - value=$(echo "$line" | cut -d ':' -f 2- | tr -d ' ') - echo " \"${key}\": \"${value}\"," - done +npm version | grep -v '^{' | while IFS=: read key value; do + key=$(echo "$key" | xargs) + value=$(echo $value | xargs) + # Remove any trailing comma from value + value=$(echo "$value" | sed 's/,$//') + if [ "$key" != "}" ]; then + echo " '$key': '$value'," + fi +done echo " }" echo "}" \ No newline at end of file diff --git a/tsconfig.dev.json b/tsconfig.dev.json new file mode 100644 index 00000000..8a4f7fa3 --- /dev/null +++ b/tsconfig.dev.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "." + }, + "include": ["dev/index.ts", "dev/**/*.ts", "typings/**/*"] +} diff --git a/tsconfig.json b/tsconfig.json index 9ab6e381..cce40837 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -53,8 +53,7 @@ "node_modules/@types", "node_modules/@testing-library", "typings", - "src/types.ts", - "declarations.d.ts", + "src/types.ts" ] /* List of folders to include type definitions from. */, // "types": [], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ @@ -73,8 +72,7 @@ }, "include": [ "src/**/*", - "typings/**/*", - "declarations.d.ts" + "typings/**/*" ], "exclude": ["node_modules", "dist"] } diff --git a/declarations.d.ts b/typings/declarations.d.ts similarity index 76% rename from declarations.d.ts rename to typings/declarations.d.ts index ca8ebec2..a3d226c8 100644 --- a/declarations.d.ts +++ b/typings/declarations.d.ts @@ -1,3 +1,4 @@ +declare module '*.css'; declare module '*.ttl' { const content: string export default content diff --git a/typings/raw-loader.d.ts b/typings/raw-loader.d.ts deleted file mode 100644 index ca8ebec2..00000000 --- a/typings/raw-loader.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.ttl' { - const content: string - export default content -} diff --git a/webpack.dev.config.js b/webpack.dev.config.mjs similarity index 52% rename from webpack.dev.config.js rename to webpack.dev.config.mjs index 6ffe580d..0ed1a44e 100644 --- a/webpack.dev.config.js +++ b/webpack.dev.config.mjs @@ -23,11 +23,32 @@ export default [ module: { rules: [ { - test: /\.(mjs|js|ts)$/, + test: /\.(mjs|js)$/, exclude: /(node_modules)/, use: { - loader: 'babel-loader' + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'], + }, } + }, + { + test: /\.ts$/, + exclude: /node_modules/, + use: { + loader: 'ts-loader', + options: { + configFile: 'tsconfig.dev.json' + } + }, + }, + { + test: /\.css$/i, + use: ['style-loader', 'css-loader'] + }, + { + test: /\.ttl$/, + use: 'raw-loader' } ] }, @@ -40,7 +61,12 @@ export default [ } ], compress: true, - port: 9000 + port: 9001, + headers: { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS', + 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization' + } }, devtool: 'source-map' }]