photon-grid-core 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -304
- package/chart/chart-config/chart-controls.d.ts +49 -0
- package/chart/chart-config/chart-controls.d.ts.map +1 -0
- package/chart/chart-config/chart-controls.js +229 -0
- package/chart/chart-config/chart-controls.js.map +1 -0
- package/chart/chart-config/chart-tool-panel.d.ts +86 -0
- package/chart/chart-config/chart-tool-panel.d.ts.map +1 -0
- package/chart/chart-config/chart-tool-panel.js +402 -0
- package/chart/chart-config/chart-tool-panel.js.map +1 -0
- package/chart/chart-panel.d.ts +97 -0
- package/chart/chart-panel.d.ts.map +1 -1
- package/chart/chart-panel.js +211 -58
- package/chart/chart-panel.js.map +1 -1
- package/chart/chart-renderer.d.ts +97 -0
- package/chart/chart-renderer.d.ts.map +1 -1
- package/chart/chart-renderer.js +335 -72
- package/chart/chart-renderer.js.map +1 -1
- package/chart/chart-theme.d.ts +38 -0
- package/chart/chart-theme.d.ts.map +1 -0
- package/chart/chart-theme.js +47 -0
- package/chart/chart-theme.js.map +1 -0
- package/chart/model/chart-model-mapper.d.ts +38 -0
- package/chart/model/chart-model-mapper.d.ts.map +1 -0
- package/chart/model/chart-model-mapper.js +128 -0
- package/chart/model/chart-model-mapper.js.map +1 -0
- package/chart/model/chart-model.d.ts +153 -0
- package/chart/model/chart-model.d.ts.map +1 -0
- package/chart/model/chart-model.js +79 -0
- package/chart/model/chart-model.js.map +1 -0
- package/chart/range-chart-controller.d.ts +68 -0
- package/chart/range-chart-controller.d.ts.map +1 -0
- package/chart/range-chart-controller.js +209 -0
- package/chart/range-chart-controller.js.map +1 -0
- package/chart/range-chart-service.d.ts +78 -0
- package/chart/range-chart-service.d.ts.map +1 -0
- package/chart/range-chart-service.js +162 -0
- package/chart/range-chart-service.js.map +1 -0
- package/core/grid-api.d.ts +20 -0
- package/core/grid-api.d.ts.map +1 -1
- package/core/grid-api.js +41 -0
- package/core/grid-api.js.map +1 -1
- package/core/grid-context.d.ts +7 -0
- package/core/grid-context.d.ts.map +1 -1
- package/core/grid-core.d.ts.map +1 -1
- package/core/grid-core.js +21 -9
- package/core/grid-core.js.map +1 -1
- package/icons/icon-sets/core-icons.js +1 -1
- package/icons/icon-sets/core-icons.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/package.json +57 -70
- package/renderer/body-renderer.d.ts.map +1 -1
- package/renderer/body-renderer.js +21 -4
- package/renderer/body-renderer.js.map +1 -1
- package/renderer/cell-renderer.js +1 -1
- package/renderer/cell-renderer.js.map +1 -1
- package/renderer/column-menu.js +24 -25
- package/renderer/column-menu.js.map +1 -1
- package/renderer/column-style-manager.d.ts.map +1 -1
- package/renderer/column-style-manager.js +11 -2
- package/renderer/column-style-manager.js.map +1 -1
- package/renderer/grid-renderer.js +1 -1
- package/renderer/grid-renderer.js.map +1 -1
- package/renderer/header-renderer.d.ts.map +1 -1
- package/renderer/header-renderer.js +17 -3
- package/renderer/header-renderer.js.map +1 -1
- package/renderer/row-drag-renderer.d.ts +18 -0
- package/renderer/row-drag-renderer.d.ts.map +1 -1
- package/renderer/row-drag-renderer.js +53 -0
- package/renderer/row-drag-renderer.js.map +1 -1
- package/styles/base/cells.css.d.ts +9 -0
- package/styles/base/cells.css.d.ts.map +1 -0
- package/styles/base/cells.css.js +233 -0
- package/styles/base/cells.css.js.map +1 -0
- package/styles/base/chart-config.css.d.ts +10 -0
- package/styles/base/chart-config.css.d.ts.map +1 -0
- package/styles/base/chart-config.css.js +126 -0
- package/styles/base/chart-config.css.js.map +1 -0
- package/styles/base/chart-controls.css.d.ts +7 -0
- package/styles/base/chart-controls.css.d.ts.map +1 -0
- package/styles/base/chart-controls.css.js +165 -0
- package/styles/base/chart-controls.css.js.map +1 -0
- package/styles/base/chart-panel.css.d.ts +9 -0
- package/styles/base/chart-panel.css.d.ts.map +1 -0
- package/styles/base/chart-panel.css.js +148 -0
- package/styles/base/chart-panel.css.js.map +1 -0
- package/styles/base/column-context-menu.css.d.ts +9 -0
- package/styles/base/column-context-menu.css.d.ts.map +1 -0
- package/styles/base/column-context-menu.css.js +153 -0
- package/styles/base/column-context-menu.css.js.map +1 -0
- package/styles/base/column-group-header.css.d.ts +9 -0
- package/styles/base/column-group-header.css.d.ts.map +1 -0
- package/styles/base/column-group-header.css.js +270 -0
- package/styles/base/column-group-header.css.js.map +1 -0
- package/styles/base/context-menu.css.d.ts +9 -0
- package/styles/base/context-menu.css.d.ts.map +1 -0
- package/styles/base/context-menu.css.js +103 -0
- package/styles/base/context-menu.css.js.map +1 -0
- package/styles/base/editors.css.d.ts +9 -0
- package/styles/base/editors.css.d.ts.map +1 -0
- package/styles/base/editors.css.js +291 -0
- package/styles/base/editors.css.js.map +1 -0
- package/styles/base/filter.css.d.ts +9 -0
- package/styles/base/filter.css.d.ts.map +1 -0
- package/styles/base/filter.css.js +312 -0
- package/styles/base/filter.css.js.map +1 -0
- package/styles/base/footer.css.d.ts +9 -0
- package/styles/base/footer.css.d.ts.map +1 -0
- package/styles/base/footer.css.js +78 -0
- package/styles/base/footer.css.js.map +1 -0
- package/styles/base/group-bar-search.css.d.ts +9 -0
- package/styles/base/group-bar-search.css.d.ts.map +1 -0
- package/styles/base/group-bar-search.css.js +86 -0
- package/styles/base/group-bar-search.css.js.map +1 -0
- package/styles/base/group-drop-zone.css.d.ts +9 -0
- package/styles/base/group-drop-zone.css.d.ts.map +1 -0
- package/styles/base/group-drop-zone.css.js +173 -0
- package/styles/base/group-drop-zone.css.js.map +1 -0
- package/styles/base/header.css.d.ts +9 -0
- package/styles/base/header.css.d.ts.map +1 -0
- package/styles/base/header.css.js +206 -0
- package/styles/base/header.css.js.map +1 -0
- package/styles/base/master-detail.css.d.ts +9 -0
- package/styles/base/master-detail.css.d.ts.map +1 -0
- package/styles/base/master-detail.css.js +202 -0
- package/styles/base/master-detail.css.js.map +1 -0
- package/styles/base/misc.css.d.ts +9 -0
- package/styles/base/misc.css.d.ts.map +1 -0
- package/styles/base/misc.css.js +65 -0
- package/styles/base/misc.css.js.map +1 -0
- package/styles/base/panels.css.d.ts +9 -0
- package/styles/base/panels.css.d.ts.map +1 -0
- package/styles/base/panels.css.js +162 -0
- package/styles/base/panels.css.js.map +1 -0
- package/styles/base/photon-ai.css.d.ts +9 -0
- package/styles/base/photon-ai.css.d.ts.map +1 -0
- package/styles/base/photon-ai.css.js +200 -0
- package/styles/base/photon-ai.css.js.map +1 -0
- package/styles/base/root.css.d.ts +9 -0
- package/styles/base/root.css.d.ts.map +1 -0
- package/styles/base/root.css.js +56 -0
- package/styles/base/root.css.js.map +1 -0
- package/styles/base/row-drag.css.d.ts +9 -0
- package/styles/base/row-drag.css.d.ts.map +1 -0
- package/styles/base/row-drag.css.js +93 -0
- package/styles/base/row-drag.css.js.map +1 -0
- package/styles/base/row-group.css.d.ts +9 -0
- package/styles/base/row-group.css.d.ts.map +1 -0
- package/styles/base/row-group.css.js +79 -0
- package/styles/base/row-group.css.js.map +1 -0
- package/styles/base/rows.css.d.ts +9 -0
- package/styles/base/rows.css.d.ts.map +1 -0
- package/styles/base/rows.css.js +83 -0
- package/styles/base/rows.css.js.map +1 -0
- package/styles/base/scrollbars.css.d.ts +9 -0
- package/styles/base/scrollbars.css.d.ts.map +1 -0
- package/styles/base/scrollbars.css.js +56 -0
- package/styles/base/scrollbars.css.js.map +1 -0
- package/styles/base/sparkline.css.d.ts +9 -0
- package/styles/base/sparkline.css.d.ts.map +1 -0
- package/styles/base/sparkline.css.js +109 -0
- package/styles/base/sparkline.css.js.map +1 -0
- package/styles/base/tooltip.css.d.ts +9 -0
- package/styles/base/tooltip.css.d.ts.map +1 -0
- package/styles/base/tooltip.css.js +39 -0
- package/styles/base/tooltip.css.js.map +1 -0
- package/styles/base/tree.css.d.ts +9 -0
- package/styles/base/tree.css.d.ts.map +1 -0
- package/styles/base/tree.css.js +78 -0
- package/styles/base/tree.css.js.map +1 -0
- package/styles/base-styles.d.ts.map +1 -1
- package/styles/base-styles.js +60 -3026
- package/styles/base-styles.js.map +1 -1
- package/styles/themes/theme-alpine.d.ts +1 -1
- package/styles/themes/theme-alpine.d.ts.map +1 -1
- package/styles/themes/theme-alpine.js +1 -1
- package/styles/themes/theme-balham.d.ts +1 -1
- package/styles/themes/theme-balham.d.ts.map +1 -1
- package/styles/themes/theme-balham.js +0 -1
- package/styles/themes/theme-balham.js.map +1 -1
- package/styles/themes/theme-dark.d.ts +1 -1
- package/styles/themes/theme-dark.d.ts.map +1 -1
- package/styles/themes/theme-dark.js +1 -1
- package/styles/themes/theme-material.d.ts +1 -1
- package/styles/themes/theme-material.d.ts.map +1 -1
- package/styles/themes/theme-material.js +0 -1
- package/styles/themes/theme-material.js.map +1 -1
- package/styles/themes/theme-quartz.d.ts +1 -1
- package/styles/themes/theme-quartz.d.ts.map +1 -1
- package/styles/themes/theme-quartz.js +1 -1
- package/types/event.types.d.ts +29 -0
- package/types/event.types.d.ts.map +1 -1
- package/types/event.types.js +1 -0
- package/types/event.types.js.map +1 -1
- package/types/grid.types.d.ts +51 -0
- package/types/grid.types.d.ts.map +1 -1
- package/LICENSE +0 -1
- package/chart/chart-analyzer.d.ts +0 -12
- package/chart/chart-analyzer.d.ts.map +0 -1
- package/chart/chart-analyzer.js +0 -77
- package/chart/chart-analyzer.js.map +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — misc section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const miscCss = `/* ──────────────────── Overlay ──────────────────── */
|
|
9
|
+
.pg-overlay {
|
|
10
|
+
position: absolute;
|
|
11
|
+
inset: 0;
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
gap: 12px;
|
|
17
|
+
background: var(--pg-colors-surface, #fff);
|
|
18
|
+
z-index: 20;
|
|
19
|
+
}
|
|
20
|
+
.pg-overlay--loading { background: rgba(255,255,255,0.85); }
|
|
21
|
+
.pg-overlay__text { color: var(--pg-colors-text-secondary, #475569); font-size: var(--pg-typography-font-size-md, 13px); }
|
|
22
|
+
.pg-overlay__icon { color: var(--pg-colors-text-disabled, #94a3b8); }
|
|
23
|
+
|
|
24
|
+
/* ──────────────────── Drag ──────────────────── */
|
|
25
|
+
.pg-dragging { opacity: 0.5; }
|
|
26
|
+
.pg-drop-before { box-shadow: 0 -2px 0 0 var(--pg-colors-primary, #2563eb); }
|
|
27
|
+
.pg-drop-after { box-shadow: 0 2px 0 0 var(--pg-colors-primary, #2563eb); }
|
|
28
|
+
.pg-drop-over { background: var(--pg-colors-drag-over-highlight, rgba(37,99,235,0.06)) !important; }
|
|
29
|
+
|
|
30
|
+
/* ──────────────────── Fullscreen ──────────────────── */
|
|
31
|
+
.pg-grid--fullscreen { position: fixed; inset: 0; z-index: 9999; border-radius: 0; }
|
|
32
|
+
|
|
33
|
+
/* ──────────────────── Chart ──────────────────── */
|
|
34
|
+
.pg-chart { display: flex; flex-direction: column; gap: 8px; }
|
|
35
|
+
.pg-chart__title { font-size: var(--pg-typography-font-size-lg, 14px); font-weight: var(--pg-typography-font-weight-semi-bold, 600); color: var(--pg-colors-text-primary); padding: 4px 0; }
|
|
36
|
+
.pg-chart__canvas { display: block; max-width: 100%; }
|
|
37
|
+
|
|
38
|
+
/* ──────────────────── Icon ──────────────────── */
|
|
39
|
+
.pg-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
40
|
+
.pg-icon svg { display: block; }
|
|
41
|
+
|
|
42
|
+
/* ──────────────────── Auto Row Height ──────────────────── */
|
|
43
|
+
.pg-grid--auto-row-height .pg-row {
|
|
44
|
+
height: auto;
|
|
45
|
+
}
|
|
46
|
+
.pg-grid--auto-row-height .pg-cell {
|
|
47
|
+
overflow: visible;
|
|
48
|
+
}
|
|
49
|
+
.pg-grid--auto-row-height .pg-cell__inner {
|
|
50
|
+
height: auto;
|
|
51
|
+
overflow: visible;
|
|
52
|
+
align-items: flex-start;
|
|
53
|
+
padding-top: 10px;
|
|
54
|
+
padding-bottom: 10px;
|
|
55
|
+
}
|
|
56
|
+
.pg-grid--auto-row-height .pg-cell__value {
|
|
57
|
+
white-space: normal;
|
|
58
|
+
overflow: visible;
|
|
59
|
+
text-overflow: initial;
|
|
60
|
+
overflow-wrap: break-word;
|
|
61
|
+
word-break: break-word;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
`;
|
|
65
|
+
//# sourceMappingURL=misc.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.css.js","sourceRoot":"","sources":["../../../src/styles/base/misc.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — panels section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const panelsCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Three-panel header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid__header {\n display: flex;\n flex-direction: row;\n flex-shrink: 0;\n border-bottom: 1px solid var(--pg-colors-header-border, #e2e8f0);\n background: var(--pg-colors-header-background, #f8fafc);\n overflow: hidden;\n z-index: 10;\n position: relative;\n}\n/* Mirrors the vertical-scrollbar flex item that lives in the body row so that\n the center header panel is exactly as wide as the center body panel.\n Without this spacer the header center is scrollbar_width wider and the right\n pinned-column header is shifted right relative to the body cells.\n Uses the *live* scrollbar width (--pg-scrollbar-v-live-width: 0 when the body\n has no scrollbar showing, the real width when it does \u2014 kept in sync every\n scroll/resize by ScrollController.syncScrollbars) rather than the constant\n --pg-scrollbar-v-width, so header\u2194body alignment stays exact whether or not a\n vertical scrollbar is currently present. */\n.pg-header-vscroll-spacer {\n flex-shrink: 0;\n width: var(--pg-scrollbar-v-live-width, 0px);\n background: var(--pg-colors-header-background, #f8fafc);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Three-panel body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid__body {\n display: flex;\n flex-direction: row;\n flex: 1 1 0;\n min-height: 0;\n overflow: hidden;\n position: relative;\n transform: translateZ(10px)\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex-shrink: 0;\n position: relative;\n}\n.pg-panel--left {\n z-index: 2;\n width: var(--pg-left-panel-width, auto);\n}\n.pg-panel--center {\n flex: 1 1 0;\n min-width: 0;\n overflow: hidden;\n}\n.pg-panel--right {\n z-index: 2;\n width: var(--pg-right-panel-width, auto);\n padding-inline: 1px\n}\n/* \u2500\u2500 Pinned-region divider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Structural boundary between a frozen (pinned) column region and the\n scrollable center. Deliberately independent of showVerticalBorders (which\n only governs interior column grid-lines) \u2014 the frozen edge must stay visible\n even when interior lines are off, otherwise pinned columns visually merge\n into the scrolling area.\n Implemented as an absolutely-positioned 1px overlay (::after) rather than a\n real border or an inset shadow:\n \u2022 a real border would consume 1px of the border-box width and clip the\n last pinned column;\n \u2022 an inset box-shadow paints behind the panel's descendant rows, whose\n opaque backgrounds (--pg-colors-row-background) would hide it.\n The overlay adds no layout box (zero reflow, no width shift) and paints above\n the rows. It only renders while the panel is displayed, i.e. that side\n actually has pinned columns (empty panels are display:none). */\n.pg-panel--left::after,\n.pg-panel--right::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n width: 1px;\n background: var(--pg-colors-pinned-border, var(--pg-colors-border, #e2e8f0));\n z-index: 4;\n pointer-events: none;\n}\n.pg-panel--left::after { right: 0; }\n.pg-panel--right::after { left: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__header {\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n z-index: 2;\n}\n/* Center panel header sits behind pinned-panel headers so that center\n content translated by the scroll transform cannot visually overlap the\n left / right pinned column headers when scrolled near their edges. */\n.pg-panel--center .pg-panel__header {\n z-index: 1;\n}\n.pg-panel__header-inner {\n display: flex;\n flex-direction: column;\n}\n.pg-panel--center .pg-panel__header-inner {\n transform: translateX(var(--pg-scroll-x, 0px));\n width: var(--pg-center-content-width, 100%);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__body {\n flex: 1 1 0;\n min-height: 0;\n overflow: hidden;\n position: relative;\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel content (virtual scroll) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__content {\n position: relative;\n height: var(--pg-content-height, 0px);\n will-change: transform;\n}\n.pg-panel--left .pg-panel__content,\n.pg-panel--right .pg-panel__content {\n transform: translateY(var(--pg-scroll-y, 0px));\n}\n.pg-panel--center .pg-panel__content {\n transform: translate(var(--pg-scroll-x, 0px), var(--pg-scroll-y, 0px));\n width: var(--pg-center-content-width, 100%);\n}\n/* Master/Detail only (see GridRenderer's pg-grid--has-master-detail class):\n a BODY panel (left/center/right \u2014 scoped via .pg-grid__body so the\n *header* panels, which share the same .pg-panel classes, are untouched\n and stay fully interactive for sort/resize/filter) is a full-height block\n regardless of whether it has a row at a given Y \u2014 including the Y range\n where the full-width detail/nested grid layer shows through underneath.\n Without this, empty panel space (there is no row there \u2014 a detail row\n renders nothing in these panels by design) still geometrically blocks\n clicks meant for whatever is showing through from that layer.\n pointer-events is inherited, so every actual row must explicitly opt\n back in \u2014 scoped to Master/Detail grids only, this has no effect on the\n vast majority of grids that never use it. */\n.pg-grid--has-master-detail .pg-grid__body > .pg-panel,\n.pg-grid--has-master-detail .pg-panel__body,\n.pg-grid--has-master-detail .pg-panel__content {\n pointer-events: none;\n}\n.pg-grid--has-master-detail .pg-row {\n pointer-events: auto;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=panels.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/panels.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,i+NAyJrB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — panels section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const panelsCss = `/* ──────────────────── Three-panel header ──────────────────── */
|
|
9
|
+
.pg-grid__header {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: row;
|
|
12
|
+
flex-shrink: 0;
|
|
13
|
+
border-bottom: 1px solid var(--pg-colors-header-border, #e2e8f0);
|
|
14
|
+
background: var(--pg-colors-header-background, #f8fafc);
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
z-index: 10;
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
/* Mirrors the vertical-scrollbar flex item that lives in the body row so that
|
|
20
|
+
the center header panel is exactly as wide as the center body panel.
|
|
21
|
+
Without this spacer the header center is scrollbar_width wider and the right
|
|
22
|
+
pinned-column header is shifted right relative to the body cells.
|
|
23
|
+
Uses the *live* scrollbar width (--pg-scrollbar-v-live-width: 0 when the body
|
|
24
|
+
has no scrollbar showing, the real width when it does — kept in sync every
|
|
25
|
+
scroll/resize by ScrollController.syncScrollbars) rather than the constant
|
|
26
|
+
--pg-scrollbar-v-width, so header↔body alignment stays exact whether or not a
|
|
27
|
+
vertical scrollbar is currently present. */
|
|
28
|
+
.pg-header-vscroll-spacer {
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
width: var(--pg-scrollbar-v-live-width, 0px);
|
|
31
|
+
background: var(--pg-colors-header-background, #f8fafc);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* ──────────────────── Three-panel body ──────────────────── */
|
|
35
|
+
.pg-grid__body {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: row;
|
|
38
|
+
flex: 1 1 0;
|
|
39
|
+
min-height: 0;
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
position: relative;
|
|
42
|
+
transform: translateZ(10px)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ──────────────────── Panel base ──────────────────── */
|
|
46
|
+
.pg-panel {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
flex-shrink: 0;
|
|
51
|
+
position: relative;
|
|
52
|
+
}
|
|
53
|
+
.pg-panel--left {
|
|
54
|
+
z-index: 2;
|
|
55
|
+
width: var(--pg-left-panel-width, auto);
|
|
56
|
+
}
|
|
57
|
+
.pg-panel--center {
|
|
58
|
+
flex: 1 1 0;
|
|
59
|
+
min-width: 0;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
}
|
|
62
|
+
.pg-panel--right {
|
|
63
|
+
z-index: 2;
|
|
64
|
+
width: var(--pg-right-panel-width, auto);
|
|
65
|
+
padding-inline: 1px
|
|
66
|
+
}
|
|
67
|
+
/* ── Pinned-region divider ──────────────────────────────────────────────
|
|
68
|
+
Structural boundary between a frozen (pinned) column region and the
|
|
69
|
+
scrollable center. Deliberately independent of showVerticalBorders (which
|
|
70
|
+
only governs interior column grid-lines) — the frozen edge must stay visible
|
|
71
|
+
even when interior lines are off, otherwise pinned columns visually merge
|
|
72
|
+
into the scrolling area.
|
|
73
|
+
Implemented as an absolutely-positioned 1px overlay (::after) rather than a
|
|
74
|
+
real border or an inset shadow:
|
|
75
|
+
• a real border would consume 1px of the border-box width and clip the
|
|
76
|
+
last pinned column;
|
|
77
|
+
• an inset box-shadow paints behind the panel's descendant rows, whose
|
|
78
|
+
opaque backgrounds (--pg-colors-row-background) would hide it.
|
|
79
|
+
The overlay adds no layout box (zero reflow, no width shift) and paints above
|
|
80
|
+
the rows. It only renders while the panel is displayed, i.e. that side
|
|
81
|
+
actually has pinned columns (empty panels are display:none). */
|
|
82
|
+
.pg-panel--left::after,
|
|
83
|
+
.pg-panel--right::after {
|
|
84
|
+
content: "";
|
|
85
|
+
position: absolute;
|
|
86
|
+
top: 0;
|
|
87
|
+
bottom: 0;
|
|
88
|
+
width: 1px;
|
|
89
|
+
background: var(--pg-colors-pinned-border, var(--pg-colors-border, #e2e8f0));
|
|
90
|
+
z-index: 4;
|
|
91
|
+
pointer-events: none;
|
|
92
|
+
}
|
|
93
|
+
.pg-panel--left::after { right: 0; }
|
|
94
|
+
.pg-panel--right::after { left: 0; }
|
|
95
|
+
|
|
96
|
+
/* ──────────────────── Panel header ──────────────────── */
|
|
97
|
+
.pg-panel__header {
|
|
98
|
+
flex-shrink: 0;
|
|
99
|
+
overflow: hidden;
|
|
100
|
+
position: relative;
|
|
101
|
+
z-index: 2;
|
|
102
|
+
}
|
|
103
|
+
/* Center panel header sits behind pinned-panel headers so that center
|
|
104
|
+
content translated by the scroll transform cannot visually overlap the
|
|
105
|
+
left / right pinned column headers when scrolled near their edges. */
|
|
106
|
+
.pg-panel--center .pg-panel__header {
|
|
107
|
+
z-index: 1;
|
|
108
|
+
}
|
|
109
|
+
.pg-panel__header-inner {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
}
|
|
113
|
+
.pg-panel--center .pg-panel__header-inner {
|
|
114
|
+
transform: translateX(var(--pg-scroll-x, 0px));
|
|
115
|
+
width: var(--pg-center-content-width, 100%);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ──────────────────── Panel body ──────────────────── */
|
|
119
|
+
.pg-panel__body {
|
|
120
|
+
flex: 1 1 0;
|
|
121
|
+
min-height: 0;
|
|
122
|
+
overflow: hidden;
|
|
123
|
+
position: relative;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ──────────────────── Panel content (virtual scroll) ──────────────────── */
|
|
127
|
+
.pg-panel__content {
|
|
128
|
+
position: relative;
|
|
129
|
+
height: var(--pg-content-height, 0px);
|
|
130
|
+
will-change: transform;
|
|
131
|
+
}
|
|
132
|
+
.pg-panel--left .pg-panel__content,
|
|
133
|
+
.pg-panel--right .pg-panel__content {
|
|
134
|
+
transform: translateY(var(--pg-scroll-y, 0px));
|
|
135
|
+
}
|
|
136
|
+
.pg-panel--center .pg-panel__content {
|
|
137
|
+
transform: translate(var(--pg-scroll-x, 0px), var(--pg-scroll-y, 0px));
|
|
138
|
+
width: var(--pg-center-content-width, 100%);
|
|
139
|
+
}
|
|
140
|
+
/* Master/Detail only (see GridRenderer's pg-grid--has-master-detail class):
|
|
141
|
+
a BODY panel (left/center/right — scoped via .pg-grid__body so the
|
|
142
|
+
*header* panels, which share the same .pg-panel classes, are untouched
|
|
143
|
+
and stay fully interactive for sort/resize/filter) is a full-height block
|
|
144
|
+
regardless of whether it has a row at a given Y — including the Y range
|
|
145
|
+
where the full-width detail/nested grid layer shows through underneath.
|
|
146
|
+
Without this, empty panel space (there is no row there — a detail row
|
|
147
|
+
renders nothing in these panels by design) still geometrically blocks
|
|
148
|
+
clicks meant for whatever is showing through from that layer.
|
|
149
|
+
pointer-events is inherited, so every actual row must explicitly opt
|
|
150
|
+
back in — scoped to Master/Detail grids only, this has no effect on the
|
|
151
|
+
vast majority of grids that never use it. */
|
|
152
|
+
.pg-grid--has-master-detail .pg-grid__body > .pg-panel,
|
|
153
|
+
.pg-grid--has-master-detail .pg-panel__body,
|
|
154
|
+
.pg-grid--has-master-detail .pg-panel__content {
|
|
155
|
+
pointer-events: none;
|
|
156
|
+
}
|
|
157
|
+
.pg-grid--has-master-detail .pg-row {
|
|
158
|
+
pointer-events: auto;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
`;
|
|
162
|
+
//# sourceMappingURL=panels.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.css.js","sourceRoot":"","sources":["../../../src/styles/base/panels.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJxB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — photon-ai section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const photonAiCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Photon AI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Floating command bar, anchored to the grid body's bottom-right corner.\n Mounted as a sibling of the pinned-column panels (see PhotonAIPanel.mount /\n GridRenderer.buildLayout) so it floats independently of virtualization and\n scroll; the grid body's own overflow: hidden is what keeps it inside the\n grid container per spec, without this component needing to enforce that\n itself. */\n.pg-ai-launcher {\n position: absolute;\n bottom: 16px;\n right: 16px;\n z-index: 201;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n box-shadow: var(--pg-shadows-lg, 0 8px 24px rgba(15, 23, 42, 0.16));\n cursor: pointer;\n transition:\n transform var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n opacity var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-launcher:hover {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.06);\n}\n.pg-ai-launcher:active {\n background: var(--pg-colors-primary-active, #1e40af);\n transform: scale(0.97);\n}\n.pg-ai-launcher--hidden {\n opacity: 0;\n transform: scale(0.7);\n pointer-events: none;\n}\n\n.pg-ai-panel {\n position: absolute;\n top: 12px;\n right: 12px;\n bottom: 12px;\n z-index: 201;\n width: min(360px, calc(100% - 24px));\n display: none;\n flex-direction: column;\n background: var(--pg-colors-surface, #ffffff);\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-lg, 10px);\n box-shadow: var(--pg-shadows-dropdown, 0 16px 48px rgba(15, 23, 42, 0.24));\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n color: var(--pg-colors-text-primary, #0f172a);\n}\n.pg-ai-panel--open {\n display: flex;\n}\n\n.pg-ai-panel__header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border-bottom: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--pg-typography-font-size-sm, 13px);\n font-weight: var(--pg-typography-font-weight-semi-bold, 600);\n color: var(--pg-colors-primary, #2563eb);\n}\n.pg-ai-panel__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n border-radius: var(--pg-borders-radius-sm, 4px);\n background: transparent;\n color: var(--pg-colors-text-secondary, #64748b);\n cursor: pointer;\n transition: background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__close:hover {\n background: var(--pg-colors-background-alt, #f1f5f9);\n}\n\n.pg-ai-panel__log {\n flex: 1 1 0;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.pg-ai-panel__message {\n max-width: 85%;\n padding: 8px 12px;\n border-radius: var(--pg-borders-radius-lg, 10px);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.45;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.pg-ai-panel__message--user {\n align-self: flex-end;\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n border-bottom-right-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant {\n align-self: flex-start;\n background: var(--pg-colors-background-alt, #f1f5f9);\n color: var(--pg-colors-text-primary, #0f172a);\n border-bottom-left-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant.pg-ai-panel__message--error {\n background: var(--pg-colors-error-subtle, #fef2f2);\n color: var(--pg-colors-error, #dc2626);\n}\n\n.pg-ai-panel__input-wrap {\n position: relative;\n flex-shrink: 0;\n display: flex;\n padding: 10px 12px 12px;\n border-top: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__input {\n flex: 1 1 0;\n width: 100%;\n min-height: 36px;\n max-height: 120px;\n padding: 8px 40px 8px 12px;\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n background: var(--pg-colors-surface, #ffffff);\n color: var(--pg-colors-text-primary, #0f172a);\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.4;\n resize: none;\n outline: none;\n transition: border-color var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__input::placeholder {\n color: var(--pg-colors-text-disabled, #94a3b8);\n}\n.pg-ai-panel__input:focus {\n border-color: var(--pg-colors-border-focus, #2563eb);\n}\n.pg-ai-panel__send {\n position: absolute;\n right: 20px;\n bottom: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n flex-shrink: 0;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n cursor: pointer;\n transition:\n background var(--pg-transitions-duration-fast, 100ms),\n transform var(--pg-transitions-duration-fast, 100ms),\n opacity var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__send:hover:not(:disabled) {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.08);\n}\n.pg-ai-panel__send:disabled {\n background: var(--pg-colors-text-disabled, #94a3b8);\n opacity: 0.5;\n cursor: default;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=photon-ai.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-ai.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/photon-ai.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,0iMA+LvB,CAAC"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — photon-ai section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const photonAiCss = `/* ──────────────────── Photon AI ────────────────────
|
|
9
|
+
Floating command bar, anchored to the grid body's bottom-right corner.
|
|
10
|
+
Mounted as a sibling of the pinned-column panels (see PhotonAIPanel.mount /
|
|
11
|
+
GridRenderer.buildLayout) so it floats independently of virtualization and
|
|
12
|
+
scroll; the grid body's own overflow: hidden is what keeps it inside the
|
|
13
|
+
grid container per spec, without this component needing to enforce that
|
|
14
|
+
itself. */
|
|
15
|
+
.pg-ai-launcher {
|
|
16
|
+
position: absolute;
|
|
17
|
+
bottom: 16px;
|
|
18
|
+
right: 16px;
|
|
19
|
+
z-index: 201;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
width: 44px;
|
|
24
|
+
height: 44px;
|
|
25
|
+
border: none;
|
|
26
|
+
border-radius: var(--pg-borders-radius-pill, 9999px);
|
|
27
|
+
background: var(--pg-colors-primary, #2563eb);
|
|
28
|
+
color: var(--pg-colors-primary-text, #ffffff);
|
|
29
|
+
box-shadow: var(--pg-shadows-lg, 0 8px 24px rgba(15, 23, 42, 0.16));
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
transition:
|
|
32
|
+
transform var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),
|
|
33
|
+
opacity var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),
|
|
34
|
+
background var(--pg-transitions-duration-fast, 100ms);
|
|
35
|
+
}
|
|
36
|
+
.pg-ai-launcher:hover {
|
|
37
|
+
background: var(--pg-colors-primary-hover, #1d4ed8);
|
|
38
|
+
transform: scale(1.06);
|
|
39
|
+
}
|
|
40
|
+
.pg-ai-launcher:active {
|
|
41
|
+
background: var(--pg-colors-primary-active, #1e40af);
|
|
42
|
+
transform: scale(0.97);
|
|
43
|
+
}
|
|
44
|
+
.pg-ai-launcher--hidden {
|
|
45
|
+
opacity: 0;
|
|
46
|
+
transform: scale(0.7);
|
|
47
|
+
pointer-events: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.pg-ai-panel {
|
|
51
|
+
position: absolute;
|
|
52
|
+
top: 12px;
|
|
53
|
+
right: 12px;
|
|
54
|
+
bottom: 12px;
|
|
55
|
+
z-index: 201;
|
|
56
|
+
width: min(360px, calc(100% - 24px));
|
|
57
|
+
display: none;
|
|
58
|
+
flex-direction: column;
|
|
59
|
+
background: var(--pg-colors-surface, #ffffff);
|
|
60
|
+
border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);
|
|
61
|
+
border-radius: var(--pg-borders-radius-lg, 10px);
|
|
62
|
+
box-shadow: var(--pg-shadows-dropdown, 0 16px 48px rgba(15, 23, 42, 0.24));
|
|
63
|
+
font-family: var(--pg-typography-font-family, system-ui, sans-serif);
|
|
64
|
+
color: var(--pg-colors-text-primary, #0f172a);
|
|
65
|
+
}
|
|
66
|
+
.pg-ai-panel--open {
|
|
67
|
+
display: flex;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.pg-ai-panel__header {
|
|
71
|
+
flex-shrink: 0;
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
padding: 10px 12px;
|
|
76
|
+
border-bottom: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);
|
|
77
|
+
}
|
|
78
|
+
.pg-ai-panel__title {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: 6px;
|
|
82
|
+
font-size: var(--pg-typography-font-size-sm, 13px);
|
|
83
|
+
font-weight: var(--pg-typography-font-weight-semi-bold, 600);
|
|
84
|
+
color: var(--pg-colors-primary, #2563eb);
|
|
85
|
+
}
|
|
86
|
+
.pg-ai-panel__close {
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
justify-content: center;
|
|
90
|
+
width: 20px;
|
|
91
|
+
height: 20px;
|
|
92
|
+
border: none;
|
|
93
|
+
border-radius: var(--pg-borders-radius-sm, 4px);
|
|
94
|
+
background: transparent;
|
|
95
|
+
color: var(--pg-colors-text-secondary, #64748b);
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
transition: background var(--pg-transitions-duration-fast, 100ms);
|
|
98
|
+
}
|
|
99
|
+
.pg-ai-panel__close:hover {
|
|
100
|
+
background: var(--pg-colors-background-alt, #f1f5f9);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.pg-ai-panel__log {
|
|
104
|
+
flex: 1 1 0;
|
|
105
|
+
min-height: 0;
|
|
106
|
+
overflow-y: auto;
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
gap: 10px;
|
|
110
|
+
padding: 14px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.pg-ai-panel__message {
|
|
114
|
+
max-width: 85%;
|
|
115
|
+
padding: 8px 12px;
|
|
116
|
+
border-radius: var(--pg-borders-radius-lg, 10px);
|
|
117
|
+
font-size: var(--pg-typography-font-size-sm, 13px);
|
|
118
|
+
line-height: 1.45;
|
|
119
|
+
white-space: pre-wrap;
|
|
120
|
+
word-break: break-word;
|
|
121
|
+
}
|
|
122
|
+
.pg-ai-panel__message--user {
|
|
123
|
+
align-self: flex-end;
|
|
124
|
+
background: var(--pg-colors-primary, #2563eb);
|
|
125
|
+
color: var(--pg-colors-primary-text, #ffffff);
|
|
126
|
+
border-bottom-right-radius: var(--pg-borders-radius-sm, 4px);
|
|
127
|
+
}
|
|
128
|
+
.pg-ai-panel__message--assistant {
|
|
129
|
+
align-self: flex-start;
|
|
130
|
+
background: var(--pg-colors-background-alt, #f1f5f9);
|
|
131
|
+
color: var(--pg-colors-text-primary, #0f172a);
|
|
132
|
+
border-bottom-left-radius: var(--pg-borders-radius-sm, 4px);
|
|
133
|
+
}
|
|
134
|
+
.pg-ai-panel__message--assistant.pg-ai-panel__message--error {
|
|
135
|
+
background: var(--pg-colors-error-subtle, #fef2f2);
|
|
136
|
+
color: var(--pg-colors-error, #dc2626);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.pg-ai-panel__input-wrap {
|
|
140
|
+
position: relative;
|
|
141
|
+
flex-shrink: 0;
|
|
142
|
+
display: flex;
|
|
143
|
+
padding: 10px 12px 12px;
|
|
144
|
+
border-top: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);
|
|
145
|
+
}
|
|
146
|
+
.pg-ai-panel__input {
|
|
147
|
+
flex: 1 1 0;
|
|
148
|
+
width: 100%;
|
|
149
|
+
min-height: 36px;
|
|
150
|
+
max-height: 120px;
|
|
151
|
+
padding: 8px 40px 8px 12px;
|
|
152
|
+
border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);
|
|
153
|
+
border-radius: var(--pg-borders-radius-md, 6px);
|
|
154
|
+
background: var(--pg-colors-surface, #ffffff);
|
|
155
|
+
color: var(--pg-colors-text-primary, #0f172a);
|
|
156
|
+
font-family: var(--pg-typography-font-family, system-ui, sans-serif);
|
|
157
|
+
font-size: var(--pg-typography-font-size-sm, 13px);
|
|
158
|
+
line-height: 1.4;
|
|
159
|
+
resize: none;
|
|
160
|
+
outline: none;
|
|
161
|
+
transition: border-color var(--pg-transitions-duration-fast, 100ms);
|
|
162
|
+
}
|
|
163
|
+
.pg-ai-panel__input::placeholder {
|
|
164
|
+
color: var(--pg-colors-text-disabled, #94a3b8);
|
|
165
|
+
}
|
|
166
|
+
.pg-ai-panel__input:focus {
|
|
167
|
+
border-color: var(--pg-colors-border-focus, #2563eb);
|
|
168
|
+
}
|
|
169
|
+
.pg-ai-panel__send {
|
|
170
|
+
position: absolute;
|
|
171
|
+
right: 20px;
|
|
172
|
+
bottom: 17px;
|
|
173
|
+
display: flex;
|
|
174
|
+
align-items: center;
|
|
175
|
+
justify-content: center;
|
|
176
|
+
width: 26px;
|
|
177
|
+
height: 26px;
|
|
178
|
+
flex-shrink: 0;
|
|
179
|
+
border: none;
|
|
180
|
+
border-radius: var(--pg-borders-radius-pill, 9999px);
|
|
181
|
+
background: var(--pg-colors-primary, #2563eb);
|
|
182
|
+
color: var(--pg-colors-primary-text, #ffffff);
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
transition:
|
|
185
|
+
background var(--pg-transitions-duration-fast, 100ms),
|
|
186
|
+
transform var(--pg-transitions-duration-fast, 100ms),
|
|
187
|
+
opacity var(--pg-transitions-duration-fast, 100ms);
|
|
188
|
+
}
|
|
189
|
+
.pg-ai-panel__send:hover:not(:disabled) {
|
|
190
|
+
background: var(--pg-colors-primary-hover, #1d4ed8);
|
|
191
|
+
transform: scale(1.08);
|
|
192
|
+
}
|
|
193
|
+
.pg-ai-panel__send:disabled {
|
|
194
|
+
background: var(--pg-colors-text-disabled, #94a3b8);
|
|
195
|
+
opacity: 0.5;
|
|
196
|
+
cursor: default;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
`;
|
|
200
|
+
//# sourceMappingURL=photon-ai.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-ai.css.js","sourceRoot":"","sources":["../../../src/styles/base/photon-ai.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+L1B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — root section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const rootCss = "\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border: 1px solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n background: var(--pg-colors-row-background, #fff);\n color: var(--pg-colors-text-primary, #0f172a);\n font-family: var(--pg-typography-font-family, \"Inter\", system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-md, 0.8rem);\n text-fit: width; \n font-weight: var(--pg-typography-font-weight-normal, 400);\n box-sizing: border-box;\n position: relative;\n --pg-scroll-x: 0px;\n --pg-scroll-y: 0px;\n --pg-content-height: 0px;\n --pg-center-content-width: 0px;\n --pg-left-panel-width: auto;\n --pg-right-panel-width: auto;\n --pg-header-row-height: 44px;\n --pg-filter-row-height: 36px;\n}\n.pg-grid *, .pg-grid *::before, .pg-grid *::after { box-sizing: border-box; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Outer flex-row / main flex-col wrappers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid-outer {\n display: flex;\n flex-direction: row;\n flex: 1 1 0;\n min-height: 0;\n overflow: hidden;\n}\n.pg-grid-main {\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n position: relative;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=root.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/root.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,utDA+CnB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — root section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const rootCss = `
|
|
9
|
+
/* ──────────────────── Root ──────────────────── */
|
|
10
|
+
.pg-grid {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
border: 1px solid var(--pg-colors-border, #e2e8f0);
|
|
17
|
+
border-radius: var(--pg-borders-radius-md, 6px);
|
|
18
|
+
background: var(--pg-colors-row-background, #fff);
|
|
19
|
+
color: var(--pg-colors-text-primary, #0f172a);
|
|
20
|
+
font-family: var(--pg-typography-font-family, "Inter", system-ui, sans-serif);
|
|
21
|
+
font-size: var(--pg-typography-font-size-md, 0.8rem);
|
|
22
|
+
text-fit: width;
|
|
23
|
+
font-weight: var(--pg-typography-font-weight-normal, 400);
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
position: relative;
|
|
26
|
+
--pg-scroll-x: 0px;
|
|
27
|
+
--pg-scroll-y: 0px;
|
|
28
|
+
--pg-content-height: 0px;
|
|
29
|
+
--pg-center-content-width: 0px;
|
|
30
|
+
--pg-left-panel-width: auto;
|
|
31
|
+
--pg-right-panel-width: auto;
|
|
32
|
+
--pg-header-row-height: 44px;
|
|
33
|
+
--pg-filter-row-height: 36px;
|
|
34
|
+
}
|
|
35
|
+
.pg-grid *, .pg-grid *::before, .pg-grid *::after { box-sizing: border-box; }
|
|
36
|
+
|
|
37
|
+
/* ──────────────────── Outer flex-row / main flex-col wrappers ──────────────────── */
|
|
38
|
+
.pg-grid-outer {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: row;
|
|
41
|
+
flex: 1 1 0;
|
|
42
|
+
min-height: 0;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
}
|
|
45
|
+
.pg-grid-main {
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
flex: 1 1 0;
|
|
49
|
+
min-height: 0;
|
|
50
|
+
min-width: 0;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
position: relative;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
`;
|
|
56
|
+
//# sourceMappingURL=root.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.css.js","sourceRoot":"","sources":["../../../src/styles/base/root.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — row-drag section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const rowDragCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Row Drag \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid__body { position: relative; }\n\n.pg-row-drag-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 100%;\n flex-shrink: 0;\n cursor: grab;\n opacity: 0.35;\n color: var(--pg-colors-text-secondary, #475569);\n margin-right: 4px;\n}\n.pg-row-drag-handle:hover { opacity: 0.7; }\n.pg-row-drag-handle:active { cursor: grabbing; }\n\n.pg-row-drag-ghost {\n position: fixed;\n pointer-events: none;\n z-index: 9999;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 5px 10px;\n border-radius: var(--pg-borders-radius-md, 6px);\n border: 1.5px solid var(--pg-colors-primary, #2563eb);\n background: var(--pg-colors-surface, #fff);\n color: var(--pg-colors-primary, #2563eb);\n font-size: var(--pg-typography-font-size-sm, 12px);\n font-weight: 500;\n box-shadow: 0 6px 24px rgba(37,99,235,0.13), 0 2px 8px rgba(37,99,235,0.12);\n transform: translate(12px, -50%);\n white-space: nowrap;\n max-width: 240px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.pg-row-drag-ghost__icon { display: inline-flex; align-items: center; opacity: 0.8; }\n.pg-row-drag-ghost__icon--block { display: none; }\n.pg-row-drag-ghost__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n\n.pg-row-drag-ghost--outside {\n border-color: var(--pg-colors-danger, #ef4444);\n box-shadow: 0 6px 24px rgba(239,68,68,0.13), 0 2px 8px rgba(239,68,68,0.12);\n color: var(--pg-colors-danger, #ef4444);\n}\n.pg-row-drag-ghost--outside .pg-row-drag-ghost__icon--drag { display: none; }\n.pg-row-drag-ghost--outside .pg-row-drag-ghost__icon--block { display: inline-flex; }\n\n.pg-row-drop-indicator {\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--pg-colors-primary, #2563eb);\n pointer-events: none;\n z-index: 100;\n border-radius: 1px;\n}\n.pg-row-drop-indicator::before {\n content: '';\n position: absolute;\n left: -3px;\n top: -3px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--pg-colors-primary, #2563eb);\n}\n\n/* The dragged row: semi-transparent, moves to virtual landing position */\n.pg-row--row-dragging { opacity: 0.4; }\n\n/* During row drag: kill hover/click on all rows; animate top changes.\n Uses top (not transform) so rows stay within panel overflow:hidden bounds. */\n.pg-grid--row-dragging .pg-row {\n pointer-events: none;\n will-change: top;\n transition: background var(--pg-transitions-duration-fast, 100ms),\n top 130ms cubic-bezier(0.2, 0, 0, 1);\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=row-drag.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-drag.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/row-drag.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,0xFAoFtB,CAAC"}
|