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,153 @@
1
+ /**
2
+ * Photon Grid base styles — column-context-menu 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 columnContextMenuCss = `/* ──────────────────── Column Context Menu ──────────────────── */
9
+
10
+ /* Menu container — fixed-position dropdown attached to document.body.
11
+ Height is capped so the menu never grows into the viewport's top/bottom
12
+ 200px; content beyond that scrolls internally via overflow-y instead of
13
+ being clipped. Fly-out submenus (.pg-col-ctx-menu__submenu) are portaled to
14
+ document.body while open rather than nested here, so this container's
15
+ scroll clipping never cuts them off on the X axis. */
16
+ .pg-col-ctx-menu {
17
+ position: fixed;
18
+ z-index: 9999;
19
+ min-width: 220px;
20
+ max-width: 300px;
21
+ max-height: calc(100% - 200px);
22
+ overflow-y: auto;
23
+ overflow-x: hidden;
24
+ padding: 4px;
25
+ background: var(--pg-colors-surface, #ffffff);
26
+ border: 1px solid var(--pg-colors-border, #e2e8f0);
27
+ border-radius: var(--pg-borders-radius-md, 6px);
28
+ box-shadow: var(--pg-shadows-dropdown, 0 8px 24px rgba(15, 23, 42, 0.12));
29
+ font-family: var(--pg-typography-font-family, system-ui, sans-serif);
30
+ font-size: var(--pg-typography-font-size-sm, 13px);
31
+ color: var(--pg-colors-text-primary, #0f172a);
32
+ user-select: none;
33
+ outline: none;
34
+ }
35
+
36
+ /* Horizontal divider between section groups */
37
+ .pg-col-ctx-menu__separator {
38
+ border-top: 1px solid var(--pg-colors-border-col-ctxt-menu, #e2e8f0);
39
+ background: var(--pg-colors-border, #e2e8f0);
40
+ margin: 4px 0;
41
+ }
42
+
43
+ /* ── Menu items ─────────────────────────────────────────────── */
44
+
45
+ /* Base item — covers both leaf items and parent (submenu-trigger) items */
46
+ .pg-col-ctx-menu__item {
47
+ position: relative;
48
+ display: flex;
49
+ align-items: center;
50
+ gap: 8px;
51
+ padding: 7px 10px;
52
+ border-radius: var(--pg-borders-radius-sm, 4px);
53
+ cursor: pointer;
54
+ transition: background var(--pg-transitions-fast, 80ms ease);
55
+ outline: none;
56
+ white-space: nowrap;
57
+ }
58
+
59
+ .pg-col-ctx-menu__item:hover,
60
+ .pg-col-ctx-menu__item:focus-visible {
61
+ background: var(--pg-colors-background-alt, #f1f5f9);
62
+ }
63
+
64
+ /* Highlighted / "currently applied" item (e.g. active sort direction) */
65
+ .pg-col-ctx-menu__item--active {
66
+ color: var(--pg-colors-primary, #2563eb);
67
+ font-weight: 600;
68
+ }
69
+
70
+ /* Disabled item — rendered but not interactive */
71
+ .pg-col-ctx-menu__item--disabled {
72
+ opacity: 0.38;
73
+ cursor: not-allowed;
74
+ pointer-events: none;
75
+ }
76
+
77
+ /* ── Item anatomy ────────────────────────────────────────────── */
78
+
79
+ /* Leading icon */
80
+ .pg-col-ctx-menu__item-icon {
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ flex-shrink: 0;
85
+ width: 16px;
86
+ height: 16px;
87
+ opacity: 0.6;
88
+ }
89
+
90
+ .pg-col-ctx-menu__item--active .pg-col-ctx-menu__item-icon {
91
+ opacity: 1;
92
+ }
93
+
94
+ /* Text label — fills remaining space */
95
+ .pg-col-ctx-menu__item-label {
96
+ flex: 1;
97
+ overflow: hidden;
98
+ text-overflow: ellipsis;
99
+ }
100
+
101
+ /* Trailing chevron indicating a fly-out submenu */
102
+ .pg-col-ctx-menu__item-chevron {
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ flex-shrink: 0;
107
+ width: 14px;
108
+ height: 14px;
109
+ opacity: 0.4;
110
+ margin-left: 4px;
111
+ transition: opacity var(--pg-transitions-fast, 80ms ease);
112
+ }
113
+
114
+ .pg-col-ctx-menu__item--has-submenu:hover .pg-col-ctx-menu__item-chevron {
115
+ opacity: 0.75;
116
+ }
117
+
118
+ /* ── Fly-out submenu ─────────────────────────────────────────── */
119
+
120
+ /* Hidden by default; shown when JS adds --open. Positioned fixed rather than
121
+ absolute-within-parent because it is portaled to document.body while open
122
+ (see ColumnMenu.openSubmenu) — left/top are set inline in viewport
123
+ coordinates by adjustSubmenuPosition. */
124
+ .pg-col-ctx-menu__submenu {
125
+ display: none;
126
+ position: fixed;
127
+ min-width: 180px;
128
+ padding: 4px;
129
+ background: var(--pg-colors-surface, #ffffff);
130
+ border: 1px solid var(--pg-colors-border, #e2e8f0);
131
+ border-radius: var(--pg-borders-radius-md, 6px);
132
+ box-shadow: var(--pg-shadows-dropdown, 0 8px 24px rgba(15, 23, 42, 0.12));
133
+ z-index: 10000;
134
+ }
135
+
136
+ /* JS-controlled open state */
137
+ .pg-col-ctx-menu__submenu--open {
138
+ display: block;
139
+ }
140
+
141
+ /* Invisible hover bridge — prevents flicker when mouse crosses from
142
+ parent item edge into the submenu. Extends 6px to the left of the submenu. */
143
+ .pg-col-ctx-menu__submenu--open::before {
144
+ content: '';
145
+ position: absolute;
146
+ right: 100%;
147
+ top: 0;
148
+ width: 8px;
149
+ height: 100%;
150
+ }
151
+
152
+ `;
153
+ //# sourceMappingURL=column-context-menu.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-context-menu.css.js","sourceRoot":"","sources":["../../../src/styles/base/column-context-menu.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Photon Grid base styles — column-group-header 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 columnGroupHeaderCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Column group header rows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-header-group-row {\n position: relative;\n flex-shrink: 0;\n height: var(--pg-header-row-height, 44px);\n background: var(--pg-colors-header-background, #f8fafc);\n border-bottom: 1px solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-th--group {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n align-items: center;\n overflow: hidden;\n border-right: 1px solid var(--pg-colors-border, #e2e8f0);\n background: var(--pg-colors-header-background, #f8fafc);\n cursor: pointer;\n outline: none;\n transition: background var(--pg-transitions-duration-fast, 100ms);\n font-weight: var(--pg-typography-header-font-weight, 600);\n font-size: var(--pg-typography-font-size-sm, 13px);\n color: var(--pg-colors-text-primary, #1e293b);\n user-select: none;\n}\n.pg-th--group:hover,\n.pg-th--group:focus-visible { background: var(--pg-colors-header-hover, #f1f5f9); }\n.pg-th--group--collapsed {\n background: var(--pg-colors-background-alt, #f1f5f9);\n justify-content: center;\n}\n// .pg-th--group--collapsed .pg-th__label { display: none; }\n.pg-th__collapse-btn {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n margin-right: 4px;\n border-radius: var(--pg-sizing-border-radius, 4px);\n color: var(--pg-colors-text-secondary, #475569);\n transition: background var(--pg-transitions-duration-fast, 100ms),\n color var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-th--group:hover .pg-th__collapse-btn,\n.pg-th--group:focus-visible .pg-th__collapse-btn {\n background: var(--pg-colors-background-alt, #f1f5f9);\n color: var(--pg-colors-primary, #2563eb);\n}\n.pg-th__resize-handle--group {\n position: absolute;\n right: 0;\n top: 0;\n width: 6px;\n height: 100%;\n cursor: col-resize;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n color: var(--pg-colors-resize-handle-color, #e2e8f0);\n z-index: 6;\n transition: opacity var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-th--group:hover .pg-th__resize-handle--group { opacity: 1; }\n\n/* \u2500\u2500 Flat columns alongside grouped headers \u2500\u2500 */\n/* A flat (ungrouped) leaf column in a grid that has grouped columns must span\n the full header height (group rows + leaf row) so it does not appear as a\n short stub next to taller group header cells.\n Strategy: keep the cell in normal flex flow (preserves horizontal layout),\n give it the combined height, and translateY it upward so its visual top\n aligns with the top of the header area. The panel header overflow:hidden\n clips exactly at the combined height, so nothing leaks outside the header.\n --pg-group-rows-count is set in JS by HeaderRenderer. */\n.pg-th--no-group {\n align-self: flex-start;\n position: relative;\n z-index: 2;\n height: calc((var(--pg-group-rows-count, 0) + 1) * var(--pg-header-row-height, 44px));\n transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));\n}\n\n.pg-group-drop-indicator {\n position: absolute;\n top: 0;\n width: 2px;\n height: var(--pg-header-row-height, 44px);\n background: var(--pg-colors-primary, #2563eb);\n z-index: 20;\n pointer-events: none;\n border-radius: 1px;\n}\n.pg-th-group-filler { position: absolute; top: 0; height: 100%; }\n.pg-th--standalone-filler {\n position: absolute;\n top: 0;\n height: 100%;\n background: var(--pg-colors-header-background, #f8fafc);\n border-right: 1px solid var(--pg-colors-border, #e2e8f0);\n pointer-events: none;\n cursor: default;\n}\n/* Filler cell in a group row for columns with no ancestor group at this depth.\n Blends with the header background \u2014 makes flat/shallow columns appear to span\n the full header height. No interactive elements, no bottom border. */\n.pg-th--depth-filler {\n position: absolute;\n top: 0;\n height: 100%;\n background: var(--pg-colors-header-background, #f8fafc);\n border-right: 1px solid var(--pg-colors-border, #e2e8f0);\n pointer-events: none;\n cursor: default;\n z-index: 0;\n}\n\n@keyframes pg-drag-indicator-in { from { opacity: 0; } to { opacity: 1; } }\n\n/* Smooth column-shift animation \u2014 enabled ONLY while actively dragging a column */\n.pg-grid--col-dragging .pg-th[data-col-id],\n.pg-grid--col-dragging .pg-cell[data-col-id] {\n transform: translateX(var(--pg-drag-x, 0px));\n transition: transform 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n}\n.pg-grid--col-dragging .pg-th--no-group[data-col-id] {\n transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));\n}\n\n/* During header auto-scroll the transforms update every RAF tick \u2014 disable the\n transition so cells snap instantly rather than endlessly chasing a moving target */\n.pg-grid--col-autoscrolling .pg-th[data-col-id],\n.pg-grid--col-autoscrolling .pg-cell[data-col-id] {\n transition: none;\n}\n/* Live-preview path (store mutations during drag): suppress all transitions */\n.pg-grid--drag-preview-sync .pg-th[data-col-id],\n.pg-grid--drag-preview-sync .pg-cell[data-col-id] {\n transition: none !important;\n}\n\n/* \u2500\u2500 Group-header CSS-transform drag \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 * Cells shift via --pg-drag-x. The --pg-drag-transition variable is 0ms for\n * the actively-dragged group (injected by display-group-drag-handler.ts) and\n * falls back to the default 180ms for displaced neighbours \u2014 giving AG Grid-\n * style smooth animation for everything except the grabbed group itself.\n * body cells use the same variable so leaf columns and data rows stay in sync.\n */\n.pg-grid--group-dragging .pg-th--group {\n transform: translateX(var(--pg-drag-x, 0px));\n transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));\n will-change: transform;\n}\n.pg-grid--group-dragging .pg-th[data-col-id] {\n transform: translateX(var(--pg-drag-x, 0px));\n transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));\n}\n.pg-grid--group-dragging .pg-cell[data-col-id] {\n transform: translateX(var(--pg-drag-x, 0px));\n transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));\n}\n.pg-grid--group-dragging .pg-th--depth-filler {\n transform: translateX(var(--pg-drag-x, 0px));\n}\n.pg-grid--group-dragging .pg-th--no-group[data-col-id] {\n transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));\n transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));\n}\n\n/* Column drag ghost (floating preview chip that follows the cursor) */\n.pg-col-drag-ghost {\n position: fixed;\n pointer-events: none;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: var(--pg-drag-ghost-gap, 8px);\n padding: 5px 12px 5px 10px;\n background: var(--pg-colors-drag-ghost-background, #fff);\n border: 1.5px solid var(--pg-colors-primary, #2563eb);\n border-radius: var(--pg-borders-radius-md, 6px);\n box-shadow: 0 6px 24px rgba(0,0,0,0.13), 0 2px 8px rgba(37, 99, 235, 0.12);\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-sm, 12px);\n font-weight: var(--pg-typography-font-weight-semi-bold, 600);\n color: var(--pg-colors-header-text, #374151);\n white-space: nowrap;\n user-select: none;\n transform: translateY(-50%);\n transition:\n border-color var(--pg-transitions-duration-fast, 100ms),\n box-shadow var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-col-drag-ghost__icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--pg-colors-primary, #2563eb);\n opacity: 0.7;\n}\n.pg-col-drag-ghost__label {\n flex: 1;\n min-width: 0;\n}\n\n/* Default icon visibility */\n.pg-col-drag-ghost__icon--move { display: inline-flex; }\n.pg-col-drag-ghost__icon--ban { display: none; }\n.pg-col-drag-ghost__icon--arrow-left { display: none; }\n.pg-col-drag-ghost__icon--arrow-right { display: none; }\n\n/* Hide-column state: amber ghost + eyeOff icon */\n.pg-col-drag-ghost__icon--hide { display: none; }\n.pg-col-drag-ghost--hide .pg-col-drag-ghost__icon--move { display: none; }\n.pg-col-drag-ghost--hide .pg-col-drag-ghost__icon--hide { display: inline-flex; color: var(--pg-colors-warning, #f59e0b); }\n.pg-col-drag-ghost--hide {\n border-color: var(--pg-colors-warning, #f59e0b);\n box-shadow: 0 6px 24px rgba(245,158,11,0.13), 0 2px 8px rgba(245,158,11,0.12);\n color: var(--pg-colors-warning, #f59e0b);\n}\n\n/* No-drop state: red ghost + ban icon */\n.pg-col-drag-ghost--no-drop {\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-col-drag-ghost--no-drop .pg-col-drag-ghost__icon { color: var(--pg-colors-danger, #ef4444); }\n.pg-col-drag-ghost--no-drop .pg-col-drag-ghost__icon--move { display: none; }\n.pg-col-drag-ghost--no-drop .pg-col-drag-ghost__icon--ban { display: inline-flex; }\n\n/* Outside-grid drop state: red ghost signals \"drop = hide all columns in group\" */\n.pg-col-drag-ghost--outside {\n border-color: var(--pg-colors-danger, #ef4444);\n box-shadow: 0 6px 24px rgba(239,68,68,0.18), 0 2px 8px rgba(239,68,68,0.14);\n color: var(--pg-colors-danger, #ef4444);\n opacity: 0.85;\n}\n.pg-col-drag-ghost--outside .pg-col-drag-ghost__label::after {\n content: ' (hide)';\n font-size: 10px;\n opacity: 0.7;\n}\n\n/* Auto-scroll state: directional arrow replaces move icon */\n@keyframes pg-scroll-arrow-left { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(-4px); } }\n@keyframes pg-scroll-arrow-right { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } }\n\n.pg-col-drag-ghost--scroll-left .pg-col-drag-ghost__icon--move,\n.pg-col-drag-ghost--scroll-right .pg-col-drag-ghost__icon--move { display: none; }\n.pg-col-drag-ghost--scroll-left .pg-col-drag-ghost__icon--arrow-left {\n display: inline-flex;\n animation: pg-scroll-arrow-left 700ms ease-in-out infinite;\n}\n.pg-col-drag-ghost--scroll-right .pg-col-drag-ghost__icon--arrow-right {\n display: inline-flex;\n animation: pg-scroll-arrow-right 700ms ease-in-out infinite;\n}\n\n";
9
+ //# sourceMappingURL=column-group-header.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-header.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/column-group-header.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,0sVAqQhC,CAAC"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Photon Grid base styles — column-group-header 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 columnGroupHeaderCss = `/* ──────────────────── Column group header rows ──────────────────── */
9
+ .pg-header-group-row {
10
+ position: relative;
11
+ flex-shrink: 0;
12
+ height: var(--pg-header-row-height, 44px);
13
+ background: var(--pg-colors-header-background, #f8fafc);
14
+ border-bottom: 1px solid var(--pg-colors-border, #e2e8f0);
15
+ }
16
+ .pg-th--group {
17
+ position: absolute;
18
+ top: 0;
19
+ height: 100%;
20
+ display: flex;
21
+ align-items: center;
22
+ overflow: hidden;
23
+ border-right: 1px solid var(--pg-colors-border, #e2e8f0);
24
+ background: var(--pg-colors-header-background, #f8fafc);
25
+ cursor: pointer;
26
+ outline: none;
27
+ transition: background var(--pg-transitions-duration-fast, 100ms);
28
+ font-weight: var(--pg-typography-header-font-weight, 600);
29
+ font-size: var(--pg-typography-font-size-sm, 13px);
30
+ color: var(--pg-colors-text-primary, #1e293b);
31
+ user-select: none;
32
+ }
33
+ .pg-th--group:hover,
34
+ .pg-th--group:focus-visible { background: var(--pg-colors-header-hover, #f1f5f9); }
35
+ .pg-th--group--collapsed {
36
+ background: var(--pg-colors-background-alt, #f1f5f9);
37
+ justify-content: center;
38
+ }
39
+ // .pg-th--group--collapsed .pg-th__label { display: none; }
40
+ .pg-th__collapse-btn {
41
+ flex-shrink: 0;
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ width: 20px;
46
+ height: 20px;
47
+ margin-right: 4px;
48
+ border-radius: var(--pg-sizing-border-radius, 4px);
49
+ color: var(--pg-colors-text-secondary, #475569);
50
+ transition: background var(--pg-transitions-duration-fast, 100ms),
51
+ color var(--pg-transitions-duration-fast, 100ms);
52
+ }
53
+ .pg-th--group:hover .pg-th__collapse-btn,
54
+ .pg-th--group:focus-visible .pg-th__collapse-btn {
55
+ background: var(--pg-colors-background-alt, #f1f5f9);
56
+ color: var(--pg-colors-primary, #2563eb);
57
+ }
58
+ .pg-th__resize-handle--group {
59
+ position: absolute;
60
+ right: 0;
61
+ top: 0;
62
+ width: 6px;
63
+ height: 100%;
64
+ cursor: col-resize;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ opacity: 0;
69
+ color: var(--pg-colors-resize-handle-color, #e2e8f0);
70
+ z-index: 6;
71
+ transition: opacity var(--pg-transitions-duration-fast, 100ms);
72
+ }
73
+ .pg-th--group:hover .pg-th__resize-handle--group { opacity: 1; }
74
+
75
+ /* ── Flat columns alongside grouped headers ── */
76
+ /* A flat (ungrouped) leaf column in a grid that has grouped columns must span
77
+ the full header height (group rows + leaf row) so it does not appear as a
78
+ short stub next to taller group header cells.
79
+ Strategy: keep the cell in normal flex flow (preserves horizontal layout),
80
+ give it the combined height, and translateY it upward so its visual top
81
+ aligns with the top of the header area. The panel header overflow:hidden
82
+ clips exactly at the combined height, so nothing leaks outside the header.
83
+ --pg-group-rows-count is set in JS by HeaderRenderer. */
84
+ .pg-th--no-group {
85
+ align-self: flex-start;
86
+ position: relative;
87
+ z-index: 2;
88
+ height: calc((var(--pg-group-rows-count, 0) + 1) * var(--pg-header-row-height, 44px));
89
+ transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));
90
+ }
91
+
92
+ .pg-group-drop-indicator {
93
+ position: absolute;
94
+ top: 0;
95
+ width: 2px;
96
+ height: var(--pg-header-row-height, 44px);
97
+ background: var(--pg-colors-primary, #2563eb);
98
+ z-index: 20;
99
+ pointer-events: none;
100
+ border-radius: 1px;
101
+ }
102
+ .pg-th-group-filler { position: absolute; top: 0; height: 100%; }
103
+ .pg-th--standalone-filler {
104
+ position: absolute;
105
+ top: 0;
106
+ height: 100%;
107
+ background: var(--pg-colors-header-background, #f8fafc);
108
+ border-right: 1px solid var(--pg-colors-border, #e2e8f0);
109
+ pointer-events: none;
110
+ cursor: default;
111
+ }
112
+ /* Filler cell in a group row for columns with no ancestor group at this depth.
113
+ Blends with the header background — makes flat/shallow columns appear to span
114
+ the full header height. No interactive elements, no bottom border. */
115
+ .pg-th--depth-filler {
116
+ position: absolute;
117
+ top: 0;
118
+ height: 100%;
119
+ background: var(--pg-colors-header-background, #f8fafc);
120
+ border-right: 1px solid var(--pg-colors-border, #e2e8f0);
121
+ pointer-events: none;
122
+ cursor: default;
123
+ z-index: 0;
124
+ }
125
+
126
+ @keyframes pg-drag-indicator-in { from { opacity: 0; } to { opacity: 1; } }
127
+
128
+ /* Smooth column-shift animation — enabled ONLY while actively dragging a column */
129
+ .pg-grid--col-dragging .pg-th[data-col-id],
130
+ .pg-grid--col-dragging .pg-cell[data-col-id] {
131
+ transform: translateX(var(--pg-drag-x, 0px));
132
+ transition: transform 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
133
+ will-change: transform;
134
+ }
135
+ .pg-grid--col-dragging .pg-th--no-group[data-col-id] {
136
+ transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));
137
+ }
138
+
139
+ /* During header auto-scroll the transforms update every RAF tick — disable the
140
+ transition so cells snap instantly rather than endlessly chasing a moving target */
141
+ .pg-grid--col-autoscrolling .pg-th[data-col-id],
142
+ .pg-grid--col-autoscrolling .pg-cell[data-col-id] {
143
+ transition: none;
144
+ }
145
+ /* Live-preview path (store mutations during drag): suppress all transitions */
146
+ .pg-grid--drag-preview-sync .pg-th[data-col-id],
147
+ .pg-grid--drag-preview-sync .pg-cell[data-col-id] {
148
+ transition: none !important;
149
+ }
150
+
151
+ /* ── Group-header CSS-transform drag ─────────────────────────────────────────
152
+ * Cells shift via --pg-drag-x. The --pg-drag-transition variable is 0ms for
153
+ * the actively-dragged group (injected by display-group-drag-handler.ts) and
154
+ * falls back to the default 180ms for displaced neighbours — giving AG Grid-
155
+ * style smooth animation for everything except the grabbed group itself.
156
+ * body cells use the same variable so leaf columns and data rows stay in sync.
157
+ */
158
+ .pg-grid--group-dragging .pg-th--group {
159
+ transform: translateX(var(--pg-drag-x, 0px));
160
+ transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));
161
+ will-change: transform;
162
+ }
163
+ .pg-grid--group-dragging .pg-th[data-col-id] {
164
+ transform: translateX(var(--pg-drag-x, 0px));
165
+ transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));
166
+ }
167
+ .pg-grid--group-dragging .pg-cell[data-col-id] {
168
+ transform: translateX(var(--pg-drag-x, 0px));
169
+ transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));
170
+ }
171
+ .pg-grid--group-dragging .pg-th--depth-filler {
172
+ transform: translateX(var(--pg-drag-x, 0px));
173
+ }
174
+ .pg-grid--group-dragging .pg-th--no-group[data-col-id] {
175
+ transform: translate(var(--pg-drag-x, 0px), calc(var(--pg-group-rows-count, 0) * -1 * var(--pg-header-row-height, 44px)));
176
+ transition: transform var(--pg-drag-transition, 180ms cubic-bezier(0.25, 0.46, 0.45, 0.94));
177
+ }
178
+
179
+ /* Column drag ghost (floating preview chip that follows the cursor) */
180
+ .pg-col-drag-ghost {
181
+ position: fixed;
182
+ pointer-events: none;
183
+ z-index: 9999;
184
+ display: flex;
185
+ align-items: center;
186
+ gap: var(--pg-drag-ghost-gap, 8px);
187
+ padding: 5px 12px 5px 10px;
188
+ background: var(--pg-colors-drag-ghost-background, #fff);
189
+ border: 1.5px solid var(--pg-colors-primary, #2563eb);
190
+ border-radius: var(--pg-borders-radius-md, 6px);
191
+ box-shadow: 0 6px 24px rgba(0,0,0,0.13), 0 2px 8px rgba(37, 99, 235, 0.12);
192
+ font-family: var(--pg-typography-font-family, system-ui, sans-serif);
193
+ font-size: var(--pg-typography-font-size-sm, 12px);
194
+ font-weight: var(--pg-typography-font-weight-semi-bold, 600);
195
+ color: var(--pg-colors-header-text, #374151);
196
+ white-space: nowrap;
197
+ user-select: none;
198
+ transform: translateY(-50%);
199
+ transition:
200
+ border-color var(--pg-transitions-duration-fast, 100ms),
201
+ box-shadow var(--pg-transitions-duration-fast, 100ms);
202
+ }
203
+ .pg-col-drag-ghost__icon {
204
+ display: inline-flex;
205
+ align-items: center;
206
+ flex-shrink: 0;
207
+ color: var(--pg-colors-primary, #2563eb);
208
+ opacity: 0.7;
209
+ }
210
+ .pg-col-drag-ghost__label {
211
+ flex: 1;
212
+ min-width: 0;
213
+ }
214
+
215
+ /* Default icon visibility */
216
+ .pg-col-drag-ghost__icon--move { display: inline-flex; }
217
+ .pg-col-drag-ghost__icon--ban { display: none; }
218
+ .pg-col-drag-ghost__icon--arrow-left { display: none; }
219
+ .pg-col-drag-ghost__icon--arrow-right { display: none; }
220
+
221
+ /* Hide-column state: amber ghost + eyeOff icon */
222
+ .pg-col-drag-ghost__icon--hide { display: none; }
223
+ .pg-col-drag-ghost--hide .pg-col-drag-ghost__icon--move { display: none; }
224
+ .pg-col-drag-ghost--hide .pg-col-drag-ghost__icon--hide { display: inline-flex; color: var(--pg-colors-warning, #f59e0b); }
225
+ .pg-col-drag-ghost--hide {
226
+ border-color: var(--pg-colors-warning, #f59e0b);
227
+ box-shadow: 0 6px 24px rgba(245,158,11,0.13), 0 2px 8px rgba(245,158,11,0.12);
228
+ color: var(--pg-colors-warning, #f59e0b);
229
+ }
230
+
231
+ /* No-drop state: red ghost + ban icon */
232
+ .pg-col-drag-ghost--no-drop {
233
+ border-color: var(--pg-colors-danger, #ef4444);
234
+ box-shadow: 0 6px 24px rgba(239,68,68,0.13), 0 2px 8px rgba(239,68,68,0.12);
235
+ color: var(--pg-colors-danger, #ef4444);
236
+ }
237
+ .pg-col-drag-ghost--no-drop .pg-col-drag-ghost__icon { color: var(--pg-colors-danger, #ef4444); }
238
+ .pg-col-drag-ghost--no-drop .pg-col-drag-ghost__icon--move { display: none; }
239
+ .pg-col-drag-ghost--no-drop .pg-col-drag-ghost__icon--ban { display: inline-flex; }
240
+
241
+ /* Outside-grid drop state: red ghost signals "drop = hide all columns in group" */
242
+ .pg-col-drag-ghost--outside {
243
+ border-color: var(--pg-colors-danger, #ef4444);
244
+ box-shadow: 0 6px 24px rgba(239,68,68,0.18), 0 2px 8px rgba(239,68,68,0.14);
245
+ color: var(--pg-colors-danger, #ef4444);
246
+ opacity: 0.85;
247
+ }
248
+ .pg-col-drag-ghost--outside .pg-col-drag-ghost__label::after {
249
+ content: ' (hide)';
250
+ font-size: 10px;
251
+ opacity: 0.7;
252
+ }
253
+
254
+ /* Auto-scroll state: directional arrow replaces move icon */
255
+ @keyframes pg-scroll-arrow-left { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(-4px); } }
256
+ @keyframes pg-scroll-arrow-right { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } }
257
+
258
+ .pg-col-drag-ghost--scroll-left .pg-col-drag-ghost__icon--move,
259
+ .pg-col-drag-ghost--scroll-right .pg-col-drag-ghost__icon--move { display: none; }
260
+ .pg-col-drag-ghost--scroll-left .pg-col-drag-ghost__icon--arrow-left {
261
+ display: inline-flex;
262
+ animation: pg-scroll-arrow-left 700ms ease-in-out infinite;
263
+ }
264
+ .pg-col-drag-ghost--scroll-right .pg-col-drag-ghost__icon--arrow-right {
265
+ display: inline-flex;
266
+ animation: pg-scroll-arrow-right 700ms ease-in-out infinite;
267
+ }
268
+
269
+ `;
270
+ //# sourceMappingURL=column-group-header.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-header.css.js","sourceRoot":"","sources":["../../../src/styles/base/column-group-header.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqQnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Photon Grid base styles — context-menu 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 contextMenuCss = "/* \u2500\u2500\u2500 Context menu \u2500\u2500\u2500 */\n.pg-context-menu {\n position: fixed;\n z-index: 999999;\n display: none;\n min-width: 192px;\n padding: 4px 0;\n background: var(--pg-colors-surface, #fff);\n border: 1px solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n box-shadow: var(--pg-shadows-dropdown, 0 8px 24px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.07));\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-md, 13px);\n}\n.pg-context-menu--visible { display: block; }\n.pg-context-menu__item {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 7px 14px;\n border: none;\n background: transparent;\n cursor: pointer;\n text-align: left;\n color: var(--pg-colors-text-primary, #0f172a);\n gap: 0;\n transition: background 80ms;\n}\n.pg-context-menu__item:hover { background: var(--pg-colors-background-alt, #f1f5f9); }\n.pg-context-menu__item:active { background: var(--pg-colors-border, #e2e8f0); }\n.pg-context-menu__label { flex: 1; }\n.pg-context-menu__kbd {\n font-size: var(--pg-typography-font-size-sm, 11px);\n color: var(--pg-colors-text-disabled, #94a3b8);\n letter-spacing: 0.01em;\n}\n.pg-context-menu__sep {\n margin: 4px 0;\n border-top: 1px solid var(--pg-colors-border-ctxt-menu, #e2e8f0);\n background: var(--pg-colors-border, #e2e8f0);\n}\n\n.pg-cell__inner {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n padding: 0 12px;\n overflow: hidden;\n}\n.pg-cell__value {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: var(--pg-typography-line-height-base, 1.5);\n}\n.pg-cell--checkbox {\n width: 44px;\n min-width: 44px;\n max-width: 44px;\n justify-content: center;\n flex-shrink: 0;\n border-right: 1px solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-cell--serial {\n width: 52px;\n min-width: 52px;\n max-width: 52px;\n justify-content: center;\n flex-shrink: 0;\n border-right: 1px solid var(--pg-colors-border, #e2e8f0);\n color: var(--pg-colors-text-secondary, #475569);\n font-size: var(--pg-typography-font-size-sm, 12px);\n}\n.pg-cell__serial { font-variant-numeric: tabular-nums; }\n.pg-cell--bool-true { color: var(--pg-colors-success, #16a34a); }\n.pg-cell--bool-false { color: var(--pg-colors-text-disabled, #94a3b8); }\n.pg-cell__image { border-radius: var(--pg-borders-radius-sm, 4px); object-fit: cover; }\n.pg-badge {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n font-size: var(--pg-typography-font-size-xs, 11px);\n font-weight: var(--pg-typography-font-weight-medium, 500);\n white-space: nowrap;\n}\n.pg-cell--range-selected { background: var(--pg-colors-selection-background, rgba(37,99,235,0.08)); }\n.pg-cell--editing { padding: 0;border-radius: 4px }\n.pg-cell--editing .pg-cell__inner { padding: 0; overflow: visible; }\n.pg-selection-canvas { position: absolute; top: 0; left: 0; pointer-events: none; z-index: 10; }\n\n";
9
+ //# sourceMappingURL=context-menu.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/context-menu.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,kkGA8F1B,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Photon Grid base styles — context-menu 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 contextMenuCss = `/* ─── Context menu ─── */
9
+ .pg-context-menu {
10
+ position: fixed;
11
+ z-index: 999999;
12
+ display: none;
13
+ min-width: 192px;
14
+ padding: 4px 0;
15
+ background: var(--pg-colors-surface, #fff);
16
+ border: 1px solid var(--pg-colors-border, #e2e8f0);
17
+ border-radius: var(--pg-borders-radius-md, 6px);
18
+ box-shadow: var(--pg-shadows-dropdown, 0 8px 24px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.07));
19
+ font-family: var(--pg-typography-font-family, system-ui, sans-serif);
20
+ font-size: var(--pg-typography-font-size-md, 13px);
21
+ }
22
+ .pg-context-menu--visible { display: block; }
23
+ .pg-context-menu__item {
24
+ display: flex;
25
+ align-items: center;
26
+ width: 100%;
27
+ padding: 7px 14px;
28
+ border: none;
29
+ background: transparent;
30
+ cursor: pointer;
31
+ text-align: left;
32
+ color: var(--pg-colors-text-primary, #0f172a);
33
+ gap: 0;
34
+ transition: background 80ms;
35
+ }
36
+ .pg-context-menu__item:hover { background: var(--pg-colors-background-alt, #f1f5f9); }
37
+ .pg-context-menu__item:active { background: var(--pg-colors-border, #e2e8f0); }
38
+ .pg-context-menu__label { flex: 1; }
39
+ .pg-context-menu__kbd {
40
+ font-size: var(--pg-typography-font-size-sm, 11px);
41
+ color: var(--pg-colors-text-disabled, #94a3b8);
42
+ letter-spacing: 0.01em;
43
+ }
44
+ .pg-context-menu__sep {
45
+ margin: 4px 0;
46
+ border-top: 1px solid var(--pg-colors-border-ctxt-menu, #e2e8f0);
47
+ background: var(--pg-colors-border, #e2e8f0);
48
+ }
49
+
50
+ .pg-cell__inner {
51
+ display: flex;
52
+ align-items: center;
53
+ width: 100%;
54
+ height: 100%;
55
+ padding: 0 12px;
56
+ overflow: hidden;
57
+ }
58
+ .pg-cell__value {
59
+ flex: 1;
60
+ min-width: 0;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ white-space: nowrap;
64
+ line-height: var(--pg-typography-line-height-base, 1.5);
65
+ }
66
+ .pg-cell--checkbox {
67
+ width: 44px;
68
+ min-width: 44px;
69
+ max-width: 44px;
70
+ justify-content: center;
71
+ flex-shrink: 0;
72
+ border-right: 1px solid var(--pg-colors-border, #e2e8f0);
73
+ }
74
+ .pg-cell--serial {
75
+ width: 52px;
76
+ min-width: 52px;
77
+ max-width: 52px;
78
+ justify-content: center;
79
+ flex-shrink: 0;
80
+ border-right: 1px solid var(--pg-colors-border, #e2e8f0);
81
+ color: var(--pg-colors-text-secondary, #475569);
82
+ font-size: var(--pg-typography-font-size-sm, 12px);
83
+ }
84
+ .pg-cell__serial { font-variant-numeric: tabular-nums; }
85
+ .pg-cell--bool-true { color: var(--pg-colors-success, #16a34a); }
86
+ .pg-cell--bool-false { color: var(--pg-colors-text-disabled, #94a3b8); }
87
+ .pg-cell__image { border-radius: var(--pg-borders-radius-sm, 4px); object-fit: cover; }
88
+ .pg-badge {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ padding: 2px 8px;
92
+ border-radius: var(--pg-borders-radius-pill, 9999px);
93
+ font-size: var(--pg-typography-font-size-xs, 11px);
94
+ font-weight: var(--pg-typography-font-weight-medium, 500);
95
+ white-space: nowrap;
96
+ }
97
+ .pg-cell--range-selected { background: var(--pg-colors-selection-background, rgba(37,99,235,0.08)); }
98
+ .pg-cell--editing { padding: 0;border-radius: 4px }
99
+ .pg-cell--editing .pg-cell__inner { padding: 0; overflow: visible; }
100
+ .pg-selection-canvas { position: absolute; top: 0; left: 0; pointer-events: none; z-index: 10; }
101
+
102
+ `;
103
+ //# sourceMappingURL=context-menu.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.css.js","sourceRoot":"","sources":["../../../src/styles/base/context-menu.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8F7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Photon Grid base styles — editors 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 editorsCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Editors \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-editor {\n width: 100%;\n height: 100%;\n padding: 0 12px;\n border: none;\n outline: none;\n font-size: inherit;\n font-family: inherit;\n background: var(--pg-colors-cell-edit-background, #fff);\n color: inherit;\n box-sizing: border-box;\n}\n.pg-editor:focus { outline: none; box-shadow: inset 0 0 0 2px var(--pg-colors-primary, #2563eb); }\n.pg-editor--select { cursor: pointer; padding-right: 8px; }\n.pg-editor--checkbox { width: auto; height: auto; margin: auto; cursor: pointer; }\n\n/* \u2500\u2500 Multi-select (array) editor \u2500\u2500 */\n.pg-editor--multiselect {\n position: relative;\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0;\n cursor: pointer;\n background: var(--pg-colors-cell-edit-background, #fff);\n}\n.pg-editor__ms-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n padding: 0 8px 0 12px;\n user-select: none;\n gap: 6px;\n}\n.pg-editor__ms-text {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: inherit;\n color: inherit;\n}\n.pg-editor__ms-arrow {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--pg-colors-text-secondary, #64748b);\n}\n.pg-editor__ms-arrow::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid currentColor;\n}\n.pg-editor__ms-panel {\n display: none;\n position: absolute;\n top: calc(100% + 2px);\n left: 0;\n min-width: 100%;\n max-height: 220px;\n overflow-y: auto;\n background: var(--pg-colors-surface, #fff);\n border: 1px solid var(--pg-colors-border, #e2e8f0);\n border-radius: 6px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.06);\n z-index: 9999;\n padding: 4px;\n}\n.pg-editor__ms-panel--open { display: block; }\n.pg-editor__ms-option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 10px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 80ms;\n font-size: inherit;\n font-family: inherit;\n color: var(--pg-colors-text-primary, #0f172a);\n}\n.pg-editor__ms-option:hover { background: var(--pg-colors-background-alt, #f1f5f9); }\n.pg-editor__ms-check {\n flex-shrink: 0;\n width: 14px;\n height: 14px;\n cursor: pointer;\n accent-color: var(--pg-colors-primary, #2563eb);\n}\n.pg-editor__ms-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* \u2500\u2500 Custom dropdown editor \u2500\u2500 */\n.pg-dropdown-editor__trigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n padding: 0 6px 0 12px;\n gap: 6px;\n cursor: default;\n}\n.pg-dropdown-editor__trigger-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: inherit;\n color: inherit;\n}\n.pg-dropdown-editor__arrow {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--pg-colors-text-secondary, #64748b);\n}\n.pg-dropdown-editor__arrow::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid currentColor;\n}\n/* Panel \u2014 position:fixed, appended to document.body */\n.pg-dropdown-editor__panel {\n position: fixed;\n z-index: 99999;\n background: var(--pg-colors-surface, #fff);\n border: 1px solid var(--pg-colors-border, #e2e8f0);\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0,0,0,0.13), 0 2px 8px rgba(0,0,0,0.07);\n overflow: hidden;\n opacity: 0;\n transform: scaleY(0.94) translateY(-4px);\n transform-origin: top center;\n transition: opacity 130ms ease, transform 130ms ease;\n}\n.pg-dropdown-editor__panel--visible {\n opacity: 1;\n transform: scaleY(1) translateY(0);\n}\n.pg-dropdown-editor__panel--above {\n transform-origin: bottom center;\n transform: scaleY(0.94) translateY(4px);\n}\n.pg-dropdown-editor__panel--above.pg-dropdown-editor__panel--visible {\n transform: scaleY(1) translateY(0);\n}\n/* Scrollable list */\n.pg-dropdown-editor__scroll {\n overflow-y: auto;\n overflow-x: hidden;\n outline: none;\n}\n.pg-dropdown-editor__scroll::-webkit-scrollbar { width: 5px; }\n.pg-dropdown-editor__scroll::-webkit-scrollbar-track { background: transparent; }\n.pg-dropdown-editor__scroll::-webkit-scrollbar-thumb {\n background: var(--pg-colors-border, #e2e8f0);\n border-radius: 3px;\n}\n/* Virtual scroll layout */\n.pg-dropdown-editor__spacer { position: relative; }\n.pg-dropdown-editor__items { position: absolute; left: 0; right: 0; top: 0; }\n/* Option rows \u2014 height must equal CustomDropdownEditor.ITEM_HEIGHT (34px) */\n.pg-dropdown-editor__option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 10px;\n height: 34px;\n cursor: pointer;\n transition: background 60ms;\n color: var(--pg-colors-text-primary, #0f172a);\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: 13px;\n}\n.pg-dropdown-editor__option:hover,\n.pg-dropdown-editor__option--highlighted {\n background: var(--pg-colors-background-alt, #f1f5f9);\n}\n.pg-dropdown-editor__option--selected {\n background: var(--pg-colors-primary-subtle, #eff6ff);\n color: var(--pg-colors-primary, #2563eb);\n font-weight: 500;\n}\n.pg-dropdown-editor__option--selected.pg-dropdown-editor__option--highlighted {\n background: var(--pg-colors-primary-subtle-hover, #dbeafe);\n}\n/* Icon / image before label */\n.pg-dropdown-editor__opt-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 3px;\n}\n.pg-dropdown-editor__opt-icon img {\n width: 20px;\n height: 20px;\n object-fit: cover;\n border-radius: 2px;\n display: block;\n}\n.pg-dropdown-editor__opt-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n/* Checkmark for the currently selected option */\n.pg-dropdown-editor__opt-check {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--pg-colors-primary, #2563eb);\n}\n.pg-dropdown-editor__opt-check::after {\n content: '';\n display: block;\n width: 5px;\n height: 9px;\n border-right: 2px solid currentColor;\n border-bottom: 2px solid currentColor;\n transform: rotate(45deg) translate(-1px, -1px);\n}\n/* Empty state */\n.pg-dropdown-editor__empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 48px;\n color: var(--pg-colors-text-secondary, #64748b);\n font-size: 13px;\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n}\n\n/* \u2500\u2500 Array cell tag display \u2500\u2500 */\n.pg-cell__value--tags {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: nowrap;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n}\n.pg-badge--overflow {\n background: var(--pg-colors-background-alt, #f1f5f9);\n color: var(--pg-colors-text-secondary, #64748b);\n font-size: 10px;\n flex-shrink: 0;\n}\n\n";
9
+ //# sourceMappingURL=editors.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editors.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/editors.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,8gPA0RtB,CAAC"}