photon-grid-core 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/icons/icon-sets/core-icons.js +1 -1
  2. package/icons/icon-sets/core-icons.js.map +1 -1
  3. package/index.d.ts +1 -0
  4. package/index.d.ts.map +1 -1
  5. package/package.json +1 -1
  6. package/renderer/body-renderer.d.ts.map +1 -1
  7. package/renderer/body-renderer.js +21 -4
  8. package/renderer/body-renderer.js.map +1 -1
  9. package/renderer/cell-renderer.js +1 -1
  10. package/renderer/cell-renderer.js.map +1 -1
  11. package/renderer/column-menu.js +24 -25
  12. package/renderer/column-menu.js.map +1 -1
  13. package/renderer/column-style-manager.d.ts.map +1 -1
  14. package/renderer/column-style-manager.js +11 -2
  15. package/renderer/column-style-manager.js.map +1 -1
  16. package/renderer/grid-renderer.js +1 -1
  17. package/renderer/grid-renderer.js.map +1 -1
  18. package/renderer/header-renderer.d.ts.map +1 -1
  19. package/renderer/header-renderer.js +17 -3
  20. package/renderer/header-renderer.js.map +1 -1
  21. package/renderer/row-drag-renderer.d.ts +18 -0
  22. package/renderer/row-drag-renderer.d.ts.map +1 -1
  23. package/renderer/row-drag-renderer.js +53 -0
  24. package/renderer/row-drag-renderer.js.map +1 -1
  25. package/styles/base/cells.css.d.ts +9 -0
  26. package/styles/base/cells.css.d.ts.map +1 -0
  27. package/styles/base/cells.css.js +233 -0
  28. package/styles/base/cells.css.js.map +1 -0
  29. package/styles/base/chart-panel.css.d.ts +9 -0
  30. package/styles/base/chart-panel.css.d.ts.map +1 -0
  31. package/styles/base/chart-panel.css.js +140 -0
  32. package/styles/base/chart-panel.css.js.map +1 -0
  33. package/styles/base/column-context-menu.css.d.ts +9 -0
  34. package/styles/base/column-context-menu.css.d.ts.map +1 -0
  35. package/styles/base/column-context-menu.css.js +153 -0
  36. package/styles/base/column-context-menu.css.js.map +1 -0
  37. package/styles/base/column-group-header.css.d.ts +9 -0
  38. package/styles/base/column-group-header.css.d.ts.map +1 -0
  39. package/styles/base/column-group-header.css.js +270 -0
  40. package/styles/base/column-group-header.css.js.map +1 -0
  41. package/styles/base/context-menu.css.d.ts +9 -0
  42. package/styles/base/context-menu.css.d.ts.map +1 -0
  43. package/styles/base/context-menu.css.js +103 -0
  44. package/styles/base/context-menu.css.js.map +1 -0
  45. package/styles/base/editors.css.d.ts +9 -0
  46. package/styles/base/editors.css.d.ts.map +1 -0
  47. package/styles/base/editors.css.js +291 -0
  48. package/styles/base/editors.css.js.map +1 -0
  49. package/styles/base/filter.css.d.ts +9 -0
  50. package/styles/base/filter.css.d.ts.map +1 -0
  51. package/styles/base/filter.css.js +312 -0
  52. package/styles/base/filter.css.js.map +1 -0
  53. package/styles/base/footer.css.d.ts +9 -0
  54. package/styles/base/footer.css.d.ts.map +1 -0
  55. package/styles/base/footer.css.js +78 -0
  56. package/styles/base/footer.css.js.map +1 -0
  57. package/styles/base/group-bar-search.css.d.ts +9 -0
  58. package/styles/base/group-bar-search.css.d.ts.map +1 -0
  59. package/styles/base/group-bar-search.css.js +86 -0
  60. package/styles/base/group-bar-search.css.js.map +1 -0
  61. package/styles/base/group-drop-zone.css.d.ts +9 -0
  62. package/styles/base/group-drop-zone.css.d.ts.map +1 -0
  63. package/styles/base/group-drop-zone.css.js +173 -0
  64. package/styles/base/group-drop-zone.css.js.map +1 -0
  65. package/styles/base/header.css.d.ts +9 -0
  66. package/styles/base/header.css.d.ts.map +1 -0
  67. package/styles/base/header.css.js +206 -0
  68. package/styles/base/header.css.js.map +1 -0
  69. package/styles/base/master-detail.css.d.ts +9 -0
  70. package/styles/base/master-detail.css.d.ts.map +1 -0
  71. package/styles/base/master-detail.css.js +202 -0
  72. package/styles/base/master-detail.css.js.map +1 -0
  73. package/styles/base/misc.css.d.ts +9 -0
  74. package/styles/base/misc.css.d.ts.map +1 -0
  75. package/styles/base/misc.css.js +65 -0
  76. package/styles/base/misc.css.js.map +1 -0
  77. package/styles/base/panels.css.d.ts +9 -0
  78. package/styles/base/panels.css.d.ts.map +1 -0
  79. package/styles/base/panels.css.js +162 -0
  80. package/styles/base/panels.css.js.map +1 -0
  81. package/styles/base/photon-ai.css.d.ts +9 -0
  82. package/styles/base/photon-ai.css.d.ts.map +1 -0
  83. package/styles/base/photon-ai.css.js +200 -0
  84. package/styles/base/photon-ai.css.js.map +1 -0
  85. package/styles/base/root.css.d.ts +9 -0
  86. package/styles/base/root.css.d.ts.map +1 -0
  87. package/styles/base/root.css.js +56 -0
  88. package/styles/base/root.css.js.map +1 -0
  89. package/styles/base/row-drag.css.d.ts +9 -0
  90. package/styles/base/row-drag.css.d.ts.map +1 -0
  91. package/styles/base/row-drag.css.js +93 -0
  92. package/styles/base/row-drag.css.js.map +1 -0
  93. package/styles/base/row-group.css.d.ts +9 -0
  94. package/styles/base/row-group.css.d.ts.map +1 -0
  95. package/styles/base/row-group.css.js +79 -0
  96. package/styles/base/row-group.css.js.map +1 -0
  97. package/styles/base/rows.css.d.ts +9 -0
  98. package/styles/base/rows.css.d.ts.map +1 -0
  99. package/styles/base/rows.css.js +83 -0
  100. package/styles/base/rows.css.js.map +1 -0
  101. package/styles/base/scrollbars.css.d.ts +9 -0
  102. package/styles/base/scrollbars.css.d.ts.map +1 -0
  103. package/styles/base/scrollbars.css.js +56 -0
  104. package/styles/base/scrollbars.css.js.map +1 -0
  105. package/styles/base/sparkline.css.d.ts +9 -0
  106. package/styles/base/sparkline.css.d.ts.map +1 -0
  107. package/styles/base/sparkline.css.js +109 -0
  108. package/styles/base/sparkline.css.js.map +1 -0
  109. package/styles/base/tooltip.css.d.ts +9 -0
  110. package/styles/base/tooltip.css.d.ts.map +1 -0
  111. package/styles/base/tooltip.css.js +39 -0
  112. package/styles/base/tooltip.css.js.map +1 -0
  113. package/styles/base/tree.css.d.ts +9 -0
  114. package/styles/base/tree.css.d.ts.map +1 -0
  115. package/styles/base/tree.css.js +78 -0
  116. package/styles/base/tree.css.js.map +1 -0
  117. package/styles/base-styles.d.ts.map +1 -1
  118. package/styles/base-styles.js +56 -3026
  119. package/styles/base-styles.js.map +1 -1
  120. package/styles/themes/theme-alpine.d.ts +1 -1
  121. package/styles/themes/theme-alpine.d.ts.map +1 -1
  122. package/styles/themes/theme-alpine.js +1 -1
  123. package/styles/themes/theme-balham.d.ts +1 -1
  124. package/styles/themes/theme-balham.d.ts.map +1 -1
  125. package/styles/themes/theme-balham.js +0 -1
  126. package/styles/themes/theme-balham.js.map +1 -1
  127. package/styles/themes/theme-dark.d.ts +1 -1
  128. package/styles/themes/theme-dark.d.ts.map +1 -1
  129. package/styles/themes/theme-dark.js +1 -1
  130. package/styles/themes/theme-material.d.ts +1 -1
  131. package/styles/themes/theme-material.d.ts.map +1 -1
  132. package/styles/themes/theme-material.js +0 -1
  133. package/styles/themes/theme-material.js.map +1 -1
  134. package/styles/themes/theme-quartz.d.ts +1 -1
  135. package/styles/themes/theme-quartz.d.ts.map +1 -1
  136. package/styles/themes/theme-quartz.js +1 -1
  137. package/LICENSE +0 -1
  138. package/chart/chart-analyzer.d.ts +0 -12
  139. package/chart/chart-analyzer.d.ts.map +0 -1
  140. package/chart/chart-analyzer.js +0 -77
  141. package/chart/chart-analyzer.js.map +0 -1
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Photon Grid base styles — master-detail 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 masterDetailCss = `/* ──────────────────── Master/Detail ────────────────────
9
+ The detail layer is a sibling of the left/center/right body panels, not a
10
+ child of any of them — that is what lets a detail row span the full grid
11
+ width regardless of pinned columns. Its content wrapper receives only the
12
+ vertical scroll transform (never the horizontal one center columns use),
13
+ so it structurally cannot shift when the user scrolls horizontally. */
14
+ .pg-detail-layer {
15
+ position: absolute;
16
+ top: 0;
17
+ left: 0;
18
+ bottom: 0;
19
+ /* Stops short of the vertical scrollbar's *current* column width (0 when
20
+ it's hidden) instead of a blanket inset:0 — otherwise an expanded
21
+ detail row's opaque background paints over the native scrollbar
22
+ whenever one is showing. See ScrollController.syncScrollbars. */
23
+ right: var(--pg-scrollbar-v-live-width, 0px);
24
+ overflow: hidden;
25
+ pointer-events: none;
26
+ /* Tied with .pg-panel--left/--right's z-index (2, base-styles.ts ~line
27
+ 335) rather than below it — this layer is a later DOM sibling of the
28
+ panels (mounted after them in GridRenderer.buildLayout), so an equal
29
+ z-index still paints on top per normal stacking-order tie-breaking.
30
+ This is what lets an expanded detail row's opaque background cover the
31
+ pinned panels' own edge box-shadow instead of that shadow bleeding
32
+ across the full-width detail content underneath (the panels are
33
+ full-viewport-height flex items, so their shadow would otherwise span
34
+ every detail row too, not just their own pinned cells). Sticky Master/
35
+ Detail rows are unaffected by this ordering — they live in the
36
+ independent, always-on-top .pg-sticky-layer below, not here. */
37
+ z-index: 2;
38
+ }
39
+ .pg-detail-layer__content {
40
+ position: relative;
41
+ width: 100%;
42
+ height: 100%;
43
+ transform: translateY(var(--pg-scroll-y, 0px));
44
+ }
45
+ /* Sticky Master/Detail row layer — a TOP-LEVEL sibling of the left/center/
46
+ right panels and of .pg-detail-layer (not nested inside any of them).
47
+ .pg-panel--left/--right set their own explicit z-index for pinned-column
48
+ elevation, which makes each one its own stacking context — anything
49
+ nested inside is trapped there and can never out-rank a sibling like
50
+ .pg-detail-layer merely by having a higher z-index of its own. Living at
51
+ this same top level lets one z-index correctly out-rank everything, in
52
+ every pinned/non-pinned column, with no stacking-context surprises.
53
+ The container itself is pointer-events:none (so empty space with no
54
+ sticky row never blocks clicks through to what's underneath); the actual
55
+ row element re-enables pointer-events at the default (auto). */
56
+ .pg-sticky-layer {
57
+ position: absolute;
58
+ top: 0;
59
+ left: 0;
60
+ right: var(--pg-scrollbar-v-live-width, 0px);
61
+ bottom: 0;
62
+ pointer-events: none;
63
+ z-index: 3;
64
+ }
65
+ /* Mirrors .pg-panel--left's own pinned-edge shadow. That shadow lives on the
66
+ panel container itself, which a stuck row's own background paints over
67
+ for its own height once moved into this overlay — without repeating it
68
+ here, the pinned-edge shadow has a visible gap wherever a sticky row
69
+ currently sits.
70
+ z-index: 2 (matching .pg-panel--left/--right's own z-index, base-styles.ts
71
+ ~line 334) is required, not optional — this shadow bleeds *rightward*,
72
+ into the center region's own horizontal space, and .pg-sticky-layer__center
73
+ is appended after it in the DOM (see GridRenderer.buildStickyLayer); on
74
+ equal stacking contexts a later sibling paints over an earlier one, so
75
+ without an explicit z-index center's own background silently covers the
76
+ bled-through part of this shadow, while the right shadow (appended last)
77
+ was never affected — z-index makes both sides correct regardless of
78
+ append order instead of depending on it. */
79
+ .pg-sticky-layer__left {
80
+ position: absolute;
81
+ top: 0;
82
+ left: 0;
83
+ height: 100%;
84
+ width: var(--pg-left-panel-width, 0px);
85
+ overflow: hidden;
86
+ box-shadow: 2px 0 4px rgba(0,0,0,0.06);
87
+ z-index: 2;
88
+ }
89
+ .pg-sticky-layer__center {
90
+ position: absolute;
91
+ top: 0;
92
+ left: var(--pg-left-panel-width, 0px);
93
+ right: var(--pg-right-panel-width, 0px);
94
+ height: 100%;
95
+ overflow: hidden;
96
+ z-index: 1;
97
+ }
98
+ /* Mirrors .pg-panel--center .pg-panel__content's horizontal-scroll transform
99
+ so a stuck row's center cells track the user's horizontal scroll exactly
100
+ like the real (non-sticky) center panel does. */
101
+ .pg-sticky-layer__center-inner {
102
+ position: relative;
103
+ height: 100%;
104
+ width: var(--pg-center-content-width, 100%);
105
+ transform: translateX(var(--pg-scroll-x, 0px));
106
+ }
107
+ /* Mirrors .pg-panel--right's own pinned-edge shadow — see .pg-sticky-layer__left above. */
108
+ .pg-sticky-layer__right {
109
+ position: absolute;
110
+ top: 0;
111
+ right: 0;
112
+ height: 100%;
113
+ width: var(--pg-right-panel-width, 0px);
114
+ overflow: hidden;
115
+ box-shadow: -2px 0 4px rgba(0,0,0,0.06);
116
+ }
117
+ .pg-row--sticky {
118
+ /* The sticky layer container above is pointer-events:none (so empty space
119
+ with no sticky row never blocks clicks through to whatever's underneath)
120
+ — pointer-events inherits, so without this the row itself, and every
121
+ interactive thing inside it (cells, the tree/group toggle, checkboxes),
122
+ would silently inherit "none" and stop responding to clicks entirely. */
123
+ pointer-events: auto;
124
+ }
125
+ .pg-row--detail-container {
126
+ position: absolute;
127
+ left: 0;
128
+ width: 100%;
129
+ box-sizing: border-box;
130
+ overflow: hidden;
131
+ pointer-events: auto;
132
+ padding: 20px;
133
+ background: var(--pg-colors-surface, #fff);
134
+ border-bottom: 1px solid var(--pg-colors-border, #e2e8f0);
135
+ opacity: 1;
136
+ /* Deliberately not tied to the theme's --pg-transitions-duration-* tokens —
137
+ those are tuned for snappy hover/focus feedback elsewhere; expand/collapse
138
+ reads better slightly slower and more deliberate. */
139
+ transition:
140
+ height 340ms cubic-bezier(0.4, 0, 0.2, 1),
141
+ opacity 260ms ease;
142
+ }
143
+ /* Expand: fades in on first mount; height grows for free once RowPositionSheet
144
+ updates from the initial min/cached height to the auto-measured one. */
145
+ .pg-row--detail-container.pg-row--detail-entering {
146
+ opacity: 0;
147
+ }
148
+ /* Collapse: DetailRowRenderer.beginCollapse freezes top/height as inline
149
+ styles first (the RowPositionSheet rule for this row is about to disappear
150
+ for good), then this class plus height: 0 (set in JS) drives the shrink. */
151
+ .pg-row--detail-container.pg-row--detail-collapsing {
152
+ opacity: 0;
153
+ border-bottom-color: transparent;
154
+ }
155
+ .pg-detail-nested-grid-host {
156
+ width: 100%;
157
+ height: 100%;
158
+ }
159
+ .pg-detail-loading {
160
+ display: flex;
161
+ align-items: center;
162
+ justify-content: center;
163
+ width: 100%;
164
+ height: 100%;
165
+ color: var(--pg-colors-text-secondary, #64748b);
166
+ }
167
+ .pg-detail-toggle {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ flex-shrink: 0;
172
+ width: var(--pg-group-toggle-size, 24px);
173
+ height: var(--pg-group-toggle-size, 24px);
174
+ margin-left: 8px;
175
+ margin-right: 4px;
176
+ border-radius: var(--pg-borders-radius-sm, 4px);
177
+ color: var(--pg-colors-text-secondary, #64748b);
178
+ cursor: pointer;
179
+ transition:
180
+ background var(--pg-transitions-duration-fast, 100ms),
181
+ color var(--pg-transitions-duration-fast, 100ms);
182
+ }
183
+ .pg-detail-toggle:hover {
184
+ background: var(--pg-colors-row-hover, #f0f7ff);
185
+ color: var(--pg-colors-text-primary, #1e293b);
186
+ }
187
+ .pg-detail-resize-handle {
188
+ position: absolute;
189
+ left: 0;
190
+ right: 0;
191
+ bottom: 0;
192
+ height: 6px;
193
+ cursor: row-resize;
194
+ background: transparent;
195
+ transition: background var(--pg-transitions-duration-fast, 100ms);
196
+ }
197
+ .pg-detail-resize-handle:hover {
198
+ background: var(--pg-colors-resize-handle-color, #e2e8f0);
199
+ }
200
+
201
+ `;
202
+ //# sourceMappingURL=master-detail.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master-detail.css.js","sourceRoot":"","sources":["../../../src/styles/base/master-detail.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiM9B,CAAC"}
@@ -0,0 +1,9 @@
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 declare const miscCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n background: var(--pg-colors-surface, #fff);\n z-index: 20;\n}\n.pg-overlay--loading { background: rgba(255,255,255,0.85); }\n.pg-overlay__text { color: var(--pg-colors-text-secondary, #475569); font-size: var(--pg-typography-font-size-md, 13px); }\n.pg-overlay__icon { color: var(--pg-colors-text-disabled, #94a3b8); }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Drag \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-dragging { opacity: 0.5; }\n.pg-drop-before { box-shadow: 0 -2px 0 0 var(--pg-colors-primary, #2563eb); }\n.pg-drop-after { box-shadow: 0 2px 0 0 var(--pg-colors-primary, #2563eb); }\n.pg-drop-over { background: var(--pg-colors-drag-over-highlight, rgba(37,99,235,0.06)) !important; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Fullscreen \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid--fullscreen { position: fixed; inset: 0; z-index: 9999; border-radius: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Chart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-chart { display: flex; flex-direction: column; gap: 8px; }\n.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; }\n.pg-chart__canvas { display: block; max-width: 100%; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Icon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }\n.pg-icon svg { display: block; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Auto Row Height \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid--auto-row-height .pg-row {\n height: auto;\n}\n.pg-grid--auto-row-height .pg-cell {\n overflow: visible;\n}\n.pg-grid--auto-row-height .pg-cell__inner {\n height: auto;\n overflow: visible;\n align-items: flex-start;\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.pg-grid--auto-row-height .pg-cell__value {\n white-space: normal;\n overflow: visible;\n text-overflow: initial;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n";
9
+ //# sourceMappingURL=misc.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/misc.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,gwGAwDnB,CAAC"}
@@ -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"}