@jupytergis/base 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/lib/commands/BaseCommandIDs.d.ts +1 -0
  2. package/lib/commands/BaseCommandIDs.js +1 -0
  3. package/lib/commands/index.js +52 -0
  4. package/lib/constants.js +3 -0
  5. package/lib/dialogs/symbology/hooks/useGetBandInfo.d.ts +0 -6
  6. package/lib/dialogs/symbology/hooks/useGetBandInfo.js +2 -2
  7. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +4 -4
  8. package/lib/formbuilder/objectform/StoryEditorForm.d.ts +3 -2
  9. package/lib/formbuilder/objectform/StoryEditorForm.js +7 -1
  10. package/lib/mainview/mainView.d.ts +18 -0
  11. package/lib/mainview/mainView.js +243 -18
  12. package/lib/panelview/{components/filter-panel → filter-panel}/Filter.js +1 -1
  13. package/lib/panelview/leftpanel.js +4 -4
  14. package/lib/panelview/rightpanel.d.ts +2 -0
  15. package/lib/panelview/rightpanel.js +21 -14
  16. package/lib/panelview/{components/story-maps → story-maps}/PreviewModeSwitch.js +3 -2
  17. package/lib/panelview/story-maps/StoryEditorPanel.d.ts +9 -0
  18. package/lib/panelview/story-maps/StoryEditorPanel.js +34 -0
  19. package/lib/panelview/{components/story-maps → story-maps}/StoryNavBar.d.ts +2 -1
  20. package/lib/panelview/{components/story-maps → story-maps}/StoryNavBar.js +3 -3
  21. package/lib/panelview/story-maps/StoryViewerPanel.d.ts +13 -0
  22. package/lib/panelview/{components/story-maps → story-maps}/StoryViewerPanel.js +37 -24
  23. package/lib/panelview/story-maps/components/StoryContentSection.d.ts +6 -0
  24. package/lib/panelview/story-maps/components/StoryContentSection.js +10 -0
  25. package/lib/panelview/story-maps/components/StoryImageSection.d.ts +15 -0
  26. package/lib/panelview/story-maps/components/StoryImageSection.js +13 -0
  27. package/lib/panelview/story-maps/components/StorySubtitleSection.d.ts +11 -0
  28. package/lib/panelview/story-maps/components/StorySubtitleSection.js +9 -0
  29. package/lib/panelview/story-maps/components/StoryTitleSection.d.ts +12 -0
  30. package/lib/panelview/story-maps/components/StoryTitleSection.js +8 -0
  31. package/lib/shared/components/Combobox.d.ts +21 -0
  32. package/lib/shared/components/Combobox.js +32 -0
  33. package/lib/shared/components/Command.js +10 -10
  34. package/lib/shared/components/Input.d.ts +3 -0
  35. package/lib/shared/components/Input.js +18 -0
  36. package/lib/shared/components/Pagination.js +3 -2
  37. package/lib/shared/components/Select.d.ts +19 -0
  38. package/lib/shared/components/Select.js +28 -0
  39. package/lib/shared/components/SingleDatePicker.d.ts +11 -0
  40. package/lib/shared/components/SingleDatePicker.js +16 -0
  41. package/lib/stacBrowser/components/StacPanel.d.ts +9 -1
  42. package/lib/stacBrowser/components/StacPanel.js +53 -9
  43. package/lib/stacBrowser/components/filter-extension/QueryableComboBox.d.ts +9 -0
  44. package/lib/stacBrowser/components/filter-extension/QueryableComboBox.js +179 -0
  45. package/lib/stacBrowser/components/filter-extension/QueryableRow.d.ts +16 -0
  46. package/lib/stacBrowser/components/filter-extension/QueryableRow.js +16 -0
  47. package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.d.ts +7 -0
  48. package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.js +49 -0
  49. package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.d.ts +11 -0
  50. package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.js +19 -0
  51. package/lib/stacBrowser/components/{StacFilterSection.d.ts → geodes/StacFilterSection.d.ts} +1 -1
  52. package/lib/stacBrowser/components/{StacFilterSection.js → geodes/StacFilterSection.js} +3 -3
  53. package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.d.ts +7 -0
  54. package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.js +69 -0
  55. package/lib/stacBrowser/components/shared/StacPanelResults.d.ts +3 -0
  56. package/lib/stacBrowser/components/shared/StacPanelResults.js +68 -0
  57. package/lib/stacBrowser/components/shared/StacSpatialExtent.d.ts +8 -0
  58. package/lib/stacBrowser/components/shared/StacSpatialExtent.js +10 -0
  59. package/lib/stacBrowser/components/shared/StacTemporalExtent.d.ts +9 -0
  60. package/lib/stacBrowser/components/shared/StacTemporalExtent.js +9 -0
  61. package/lib/stacBrowser/context/StacResultsContext.d.ts +33 -0
  62. package/lib/stacBrowser/context/StacResultsContext.js +269 -0
  63. package/lib/stacBrowser/hooks/useGeodesSearch.d.ts +24 -0
  64. package/lib/stacBrowser/hooks/useGeodesSearch.js +178 -0
  65. package/lib/stacBrowser/hooks/useStacFilterExtension.d.ts +30 -0
  66. package/lib/stacBrowser/hooks/useStacFilterExtension.js +262 -0
  67. package/lib/stacBrowser/hooks/useStacSearch.d.ts +5 -16
  68. package/lib/stacBrowser/hooks/useStacSearch.js +30 -184
  69. package/lib/stacBrowser/types/types.d.ts +86 -3
  70. package/lib/toolbar/widget.d.ts +5 -0
  71. package/lib/toolbar/widget.js +23 -2
  72. package/lib/tools.d.ts +0 -7
  73. package/lib/tools.js +55 -14
  74. package/package.json +2 -2
  75. package/style/base.css +38 -3
  76. package/style/shared/button.css +5 -4
  77. package/style/shared/calendar.css +7 -1
  78. package/style/shared/combobox.css +75 -0
  79. package/style/shared/command.css +178 -0
  80. package/style/shared/input.css +59 -0
  81. package/style/shared/pagination.css +1 -1
  82. package/style/shared/popover.css +1 -0
  83. package/style/shared/tabs.css +1 -1
  84. package/style/shared/toggle.css +1 -1
  85. package/style/stacBrowser.css +169 -16
  86. package/style/statusBar.css +1 -0
  87. package/style/storyPanel.css +120 -3
  88. package/style/tabPanel.css +0 -86
  89. package/lib/panelview/components/story-maps/StoryEditorPanel.d.ts +0 -7
  90. package/lib/panelview/components/story-maps/StoryEditorPanel.js +0 -29
  91. package/lib/panelview/components/story-maps/StoryViewerPanel.d.ts +0 -7
  92. package/lib/stacBrowser/components/StacPanelFilters.d.ts +0 -14
  93. package/lib/stacBrowser/components/StacPanelFilters.js +0 -81
  94. package/lib/stacBrowser/components/StacPanelResults.d.ts +0 -13
  95. package/lib/stacBrowser/components/StacPanelResults.js +0 -48
  96. /package/lib/panelview/{components/filter-panel → filter-panel}/Filter.d.ts +0 -0
  97. /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.d.ts +0 -0
  98. /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.js +0 -0
  99. /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.d.ts +0 -0
  100. /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.js +0 -0
  101. /package/lib/panelview/{components/story-maps → story-maps}/PreviewModeSwitch.d.ts +0 -0
@@ -13,6 +13,7 @@ export declare class Separator extends Widget {
13
13
  export declare class ToolbarWidget extends ReactiveToolbar {
14
14
  private _model;
15
15
  private _newSubMenu;
16
+ private _hasSetSpectaVisibility;
16
17
  constructor(options: ToolbarWidget.IOptions);
17
18
  /**
18
19
  * Updates the story segment menu item based on settings
@@ -22,6 +23,10 @@ export declare class ToolbarWidget extends ReactiveToolbar {
22
23
  * Handles settings changes
23
24
  */
24
25
  private _onSettingsChanged;
26
+ /**
27
+ * Handles story changes to update Specta mode visibility
28
+ */
29
+ private _onSpectaModeChanged;
25
30
  dispose(): void;
26
31
  }
27
32
  export declare namespace ToolbarWidget {
@@ -40,6 +40,7 @@ export class ToolbarWidget extends ReactiveToolbar {
40
40
  constructor(options) {
41
41
  super();
42
42
  this._newSubMenu = null;
43
+ this._hasSetSpectaVisibility = false;
43
44
  /**
44
45
  * Handles settings changes
45
46
  */
@@ -48,8 +49,22 @@ export class ToolbarWidget extends ReactiveToolbar {
48
49
  this._updateStorySegmentMenuItem();
49
50
  }
50
51
  };
52
+ /**
53
+ * Handles story changes to update Specta mode visibility
54
+ */
55
+ this._onSpectaModeChanged = (args) => {
56
+ if (!this._hasSetSpectaVisibility) {
57
+ this.setHidden(this._model.isSpectaMode());
58
+ this._hasSetSpectaVisibility = true;
59
+ }
60
+ };
51
61
  this._model = options.model;
52
62
  this.addClass('jGIS-toolbar-widget');
63
+ // Listen for settings changes
64
+ this._model.settingsChanged.connect(this._onSettingsChanged, this);
65
+ // Listen for options change because it's the dependable signal
66
+ // Update Specta mode visibility
67
+ this._model.sharedModel.optionsChanged.connect(this._onSpectaModeChanged, this);
53
68
  if (options.commands) {
54
69
  const openLayersBrowserButton = new CommandToolbarButton({
55
70
  id: CommandIDs.openLayerBrowser,
@@ -70,8 +85,6 @@ export class ToolbarWidget extends ReactiveToolbar {
70
85
  submenu: vectorSubMenu(options.commands),
71
86
  });
72
87
  this._updateStorySegmentMenuItem();
73
- // Listen for settings changes
74
- this._model.settingsChanged.connect(this._onSettingsChanged, this);
75
88
  const NewEntryButton = new ToolbarButton({
76
89
  icon: addIcon,
77
90
  noFocusOnClick: false,
@@ -115,6 +128,13 @@ export class ToolbarWidget extends ReactiveToolbar {
115
128
  });
116
129
  this.addItem('addMarker', addMarkerButton);
117
130
  addMarkerButton.node.dataset.testid = 'add-marker-controller-button';
131
+ const storyModePresentationToggleButton = new CommandToolbarButton({
132
+ id: CommandIDs.toggleStoryPresentationMode,
133
+ label: '',
134
+ commands: options.commands,
135
+ });
136
+ this.addItem('toggleStoryPresentationMode', storyModePresentationToggleButton);
137
+ identifyButton.node.dataset.testid = 'toggleStoryPresentationMode-button';
118
138
  this.addItem('separator2', new Separator());
119
139
  const toggleConsoleButton = new CommandToolbarButton({
120
140
  id: CommandIDs.toggleConsole,
@@ -163,6 +183,7 @@ export class ToolbarWidget extends ReactiveToolbar {
163
183
  dispose() {
164
184
  if (this._model) {
165
185
  this._model.settingsChanged.disconnect(this._onSettingsChanged, this);
186
+ this._model.sharedModel.storyMapsChanged.disconnect(this._onSpectaModeChanged, this);
166
187
  }
167
188
  super.dispose();
168
189
  }
package/lib/tools.d.ts CHANGED
@@ -109,13 +109,6 @@ export declare const MIME_TYPES: {
109
109
  * @returns A string representing the MIME type.
110
110
  */
111
111
  export declare const getMimeType: (filename: string) => string;
112
- /**
113
- * Helper to convert a string (base64) to ArrayBuffer.
114
- *
115
- * @param content - File content as a base64 string.
116
- * @returns An ArrayBuffer.
117
- */
118
- export declare const stringToArrayBuffer: (content: string) => Promise<ArrayBuffer>;
119
112
  export declare const getFeatureAttributes: <T>(featureProperties: Record<string, Set<any>>, predicate?: (key: string, value: any) => boolean) => Record<string, Set<T>>;
120
113
  /**
121
114
  * Get attributes of the feature which are numeric.
package/lib/tools.js CHANGED
@@ -449,17 +449,40 @@ export const loadFile = async (fileInfo) => {
449
449
  }
450
450
  switch (type) {
451
451
  case 'GeoJSONSource': {
452
- return typeof file.content === 'string'
453
- ? JSON.parse(file.content)
454
- : file.content;
452
+ switch (file.format) {
453
+ case 'base64': {
454
+ return JSON.parse(atob(file.content));
455
+ }
456
+ case 'text': {
457
+ return JSON.parse(file.content);
458
+ }
459
+ case 'json': {
460
+ return file.content;
461
+ }
462
+ }
463
+ break;
455
464
  }
456
465
  case 'ShapefileSource': {
457
- const arrayBuffer = await stringToArrayBuffer(file.content);
458
- const geojson = await shp(arrayBuffer);
466
+ let buffer;
467
+ switch (file.format) {
468
+ case 'base64': {
469
+ buffer = await base64ToArrayBuffer(file.content);
470
+ break;
471
+ }
472
+ case 'text': {
473
+ buffer = await stringToArrayBuffer(file.content);
474
+ break;
475
+ }
476
+ case 'json':
477
+ default: {
478
+ throw new Error(`Invalid Shapefile format: ${file.format}.`);
479
+ }
480
+ }
481
+ const geojson = await shp(buffer);
459
482
  return geojson;
460
483
  }
461
484
  case 'ImageSource': {
462
- if (typeof file.content === 'string') {
485
+ if (file.format === 'base64') {
463
486
  const mimeType = getMimeType(filepath);
464
487
  if (!mimeType.startsWith('image/')) {
465
488
  throw new Error(`Invalid image file. MIME type: ${mimeType}`);
@@ -488,14 +511,23 @@ export const loadFile = async (fileInfo) => {
488
511
  }
489
512
  }
490
513
  case 'GeoParquetSource': {
491
- if (typeof file.content === 'string') {
492
- const { toGeoJson } = await import('geoparquet');
493
- const arrayBuffer = await stringToArrayBuffer(file.content);
494
- return await toGeoJson({ file: arrayBuffer, compressors });
495
- }
496
- else {
497
- throw new Error('Invalid file format for GeoParquet content.');
514
+ let buffer;
515
+ switch (file.format) {
516
+ case 'base64': {
517
+ buffer = await base64ToArrayBuffer(file.content);
518
+ break;
519
+ }
520
+ case 'text': {
521
+ buffer = await stringToArrayBuffer(file.content);
522
+ break;
523
+ }
524
+ case 'json':
525
+ default: {
526
+ throw new Error(`Invalid Geoparquet format: ${file.format}.`);
527
+ }
498
528
  }
529
+ const { toGeoJson } = await import('geoparquet');
530
+ return await toGeoJson({ file: buffer, compressors });
499
531
  }
500
532
  default: {
501
533
  throw new Error(`Unsupported source type: ${type}`);
@@ -697,10 +729,19 @@ export const getMimeType = (filename) => {
697
729
  * @param content - File content as a base64 string.
698
730
  * @returns An ArrayBuffer.
699
731
  */
700
- export const stringToArrayBuffer = async (content) => {
732
+ const base64ToArrayBuffer = async (content) => {
701
733
  const base64Response = await fetch(`data:application/octet-stream;base64,${content}`);
702
734
  return await base64Response.arrayBuffer();
703
735
  };
736
+ /**
737
+ * Helper to convert a raw string to ArrayBuffer.
738
+ *
739
+ * @param content - Raw string content.
740
+ * @returns An ArrayBuffer.
741
+ */
742
+ const stringToArrayBuffer = async (content) => {
743
+ return new TextEncoder().encode(content).buffer;
744
+ };
704
745
  export const getFeatureAttributes = (featureProperties, predicate = (key, value) => true) => {
705
746
  const filteredRecord = {};
706
747
  for (const [key, set] of Object.entries(featureProperties)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupytergis/base",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "A JupyterLab extension for 3D modelling.",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -44,7 +44,7 @@
44
44
  "@jupyter/collaboration": "^4",
45
45
  "@jupyter/react-components": "^0.16.6",
46
46
  "@jupyter/ydoc": "^2.0.0 || ^3.0.0",
47
- "@jupytergis/schema": "^0.11.1",
47
+ "@jupytergis/schema": "^0.12.0",
48
48
  "@jupyterlab/application": "^4.3.0",
49
49
  "@jupyterlab/apputils": "^4.3.0",
50
50
  "@jupyterlab/completer": "^4.3.0",
package/style/base.css CHANGED
@@ -3,6 +3,7 @@
3
3
  | Distributed under the terms of the Modified BSD License.
4
4
  |---------------------------------------------------------------------------- */
5
5
 
6
+ @import url('ol/ol.css');
6
7
  @import url('./dialog.css');
7
8
  @import url('./layerBrowser.css');
8
9
  @import url('./leftPanel.css');
@@ -11,8 +12,8 @@
11
12
  @import url('./statusBar.css');
12
13
  @import url('./temporalSlider.css');
13
14
  @import url('./tabPanel.css');
15
+ @import url('./stacBrowser.css');
14
16
  @import url('./storyPanel.css');
15
- @import url('ol/ol.css');
16
17
  @import url('./shared/button.css');
17
18
  @import url('./shared/toggle.css');
18
19
  @import url('./shared/tabs.css');
@@ -24,6 +25,10 @@
24
25
  @import url('./shared/radioGroup.css');
25
26
  @import url('./shared/dialog.css');
26
27
  @import url('./shared/switch.css');
28
+ @import url('./shared/popover.css');
29
+ @import url('./shared/command.css');
30
+ @import url('./shared/combobox.css');
31
+ @import url('./shared/input.css');
27
32
 
28
33
  .errors {
29
34
  color: var(--jp-warn-color0);
@@ -92,7 +97,6 @@ button.jp-mod-styled.jp-mod-reject {
92
97
 
93
98
  .jgis-right-panel-container {
94
99
  width: 330px;
95
- top: 30px;
96
100
  right: 0px;
97
101
  position: absolute;
98
102
  margin: 5px;
@@ -102,12 +106,43 @@ button.jp-mod-styled.jp-mod-reject {
102
106
  .jgis-left-panel-container {
103
107
  position: absolute;
104
108
  width: 250px;
105
- top: 30px;
106
109
  left: 0px;
107
110
  margin: 5px;
108
111
  z-index: 40;
109
112
  }
110
113
 
114
+ .jgis-icon-adjust {
115
+ padding-top: 5px;
116
+ }
117
+
118
+ .jgis-controls-toolbar {
119
+ width: 100%;
120
+ display: flex;
121
+ justify-content: flex-start;
122
+ align-items: flex-end;
123
+ gap: 0.5rem;
124
+ position: absolute;
125
+ bottom: 0.125rem;
126
+ z-index: 1000;
127
+ padding: 0 0.125rem;
128
+ }
129
+
130
+ .jgis-controls-toolbar .ol-control,
131
+ .jgis-controls-toolbar .ol-scale-line,
132
+ .jgis-controls-toolbar .ol-full-screen {
133
+ position: relative;
134
+ top: unset;
135
+ bottom: unset;
136
+ left: unset;
137
+ right: unset;
138
+ margin: 0;
139
+ }
140
+
141
+ .jgis-controls-toolbar .ol-zoom {
142
+ position: fixed;
143
+ right: 0.125rem;
144
+ }
145
+
111
146
  @media (max-width: 768px) {
112
147
  .jgis-panels-wrapper {
113
148
  position: fixed;
@@ -1,9 +1,10 @@
1
1
  .jgis-button {
2
+ box-sizing: border-box;
2
3
  display: inline-flex;
3
4
  align-items: center;
4
5
  justify-content: center;
5
6
  white-space: nowrap;
6
- border-radius: 0.375rem;
7
+ border-radius: var(--jp-border-radius, 0.375rem);
7
8
  font-size: 0.875rem;
8
9
  font-weight: 600;
9
10
  outline: none;
@@ -12,7 +13,7 @@
12
13
  border: 0.0375rem solid
13
14
  color-mix(in srgb, var(--jp-border-color1), transparent 20%);
14
15
  transition: background-color 0.2s ease;
15
- height: 2.5rem;
16
+ height: 2.25rem;
16
17
  padding-left: 1rem;
17
18
  padding-right: 1rem;
18
19
  padding-top: 0.5rem;
@@ -146,14 +147,14 @@
146
147
  /* sizing */
147
148
  .jgis-button[data-size='sm'] {
148
149
  height: 2.25rem;
149
- border-radius: 0.375rem;
150
+ border-radius: var(--jp-border-radius, 0.375rem);
150
151
  padding-left: 0.75rem;
151
152
  padding-right: 0.75rem;
152
153
  }
153
154
 
154
155
  .jgis-button[data-size='lg'] {
155
156
  height: 2.75rem;
156
- border-radius: 0.375rem;
157
+ border-radius: var(--jp-border-radius, 0.375rem);
157
158
  padding-left: 2rem;
158
159
  padding-right: 2rem;
159
160
  }
@@ -1,7 +1,7 @@
1
1
  .jgis-calendar-container {
2
2
  padding: 0.75rem;
3
3
  background-color: var(--jp-layout-color2);
4
- border: 1px solid var(--jp-accent-color0);
4
+ border: 1px solid var(--jp-border-color0);
5
5
  border-radius: var(--jp-border-radius);
6
6
  }
7
7
 
@@ -272,3 +272,9 @@
272
272
  height: 2.5rem;
273
273
  align-items: center;
274
274
  }
275
+
276
+ /* Unset width and border when popover contains calendar */
277
+ .jgis-popover-content:has(> .jgis-calendar-container) {
278
+ width: unset;
279
+ border: unset;
280
+ }
@@ -0,0 +1,75 @@
1
+ /* Shared base styles for Select and Combobox buttons */
2
+ /* More specific selector to override button base styles */
3
+ .jgis-button.jgis-combobox-button,
4
+ .jgis-button.jgis-select-button {
5
+ display: flex;
6
+ justify-content: space-between;
7
+ align-items: center;
8
+ white-space: preserve-breaks;
9
+ padding: 1rem 0.5rem;
10
+ box-sizing: border-box;
11
+ border-radius: var(--jp-border-radius, 0.375rem);
12
+ border: 1px solid var(--jp-border-color0);
13
+ background-color: var(--jp-layout-color0);
14
+ color: var(--jp-ui-font-color0);
15
+ font-size: 0.875rem;
16
+ /* min-height: 1.125rem; */
17
+ height: 1.5rem;
18
+ max-width: none;
19
+ gap: 0;
20
+ }
21
+
22
+ .jgis-combobox-button-text,
23
+ .jgis-select-button-text {
24
+ flex: 1;
25
+ min-width: 0;
26
+ overflow-wrap: break-word;
27
+ }
28
+
29
+ .jgis-combobox-icon,
30
+ .jgis-select-icon {
31
+ margin-left: 0.5rem;
32
+ margin-top: 0.125rem;
33
+ height: 1rem;
34
+ width: 1rem;
35
+ flex-shrink: 0;
36
+ opacity: 0.5;
37
+ }
38
+
39
+ /* Shared Popover styles */
40
+ .jgis-combobox-popover,
41
+ .jgis-select-popover {
42
+ width: 200px;
43
+ padding: 0;
44
+ border-radius: var(--jp-border-radius, 0.375rem);
45
+ }
46
+
47
+ /* Check icon for Combobox (multi-select) */
48
+ .jgis-combobox-check-icon {
49
+ margin-right: 0.5rem;
50
+ height: 1rem;
51
+ width: 1rem;
52
+ flex-shrink: 0;
53
+ }
54
+
55
+ /* Modifier classes - use higher specificity to override base */
56
+ .jgis-button.jgis-combobox-button--full-width,
57
+ .jgis-button.jgis-select-button--full-width {
58
+ width: 100%;
59
+ }
60
+
61
+ .jgis-button.jgis-combobox-button--max-width-200,
62
+ .jgis-button.jgis-select-button--max-width-200 {
63
+ max-width: 200px;
64
+ }
65
+
66
+ .jgis-button.jgis-combobox-button--no-radius,
67
+ .jgis-button.jgis-select-button--no-radius {
68
+ border-radius: 0;
69
+ }
70
+
71
+ .jgis-button.jgis-combobox-button--queryable-input,
72
+ .jgis-button.jgis-select-button--queryable-input {
73
+ padding: 0.25rem 1rem;
74
+ border-radius: 0;
75
+ }
@@ -0,0 +1,178 @@
1
+ /* Command Root */
2
+ .jgis-command {
3
+ display: flex;
4
+ height: 100%;
5
+ width: 100%;
6
+ flex-direction: column;
7
+ overflow: hidden;
8
+ border-radius: 0.375rem;
9
+ background-color: var(--jp-layout-color0);
10
+ color: var(--jp-ui-font-color0);
11
+ }
12
+
13
+ /* Command Dialog specific styles */
14
+ .jgis-command [cmdk-group-heading] {
15
+ color: var(--jp-ui-font-color2);
16
+ padding: 0 0.5rem;
17
+ font-weight: 500;
18
+ }
19
+
20
+ .jgis-command [data-slot='command-input-wrapper'] {
21
+ height: 3rem;
22
+ }
23
+
24
+ .jgis-command [cmdk-group] {
25
+ padding: 0 0.5rem;
26
+ }
27
+
28
+ .jgis-command [cmdk-group]:not([hidden]) ~ [cmdk-group] {
29
+ padding-top: 0;
30
+ }
31
+
32
+ .jgis-command [cmdk-input-wrapper] svg {
33
+ height: 1.25rem;
34
+ width: 1.25rem;
35
+ }
36
+
37
+ .jgis-command [cmdk-input] {
38
+ height: 1.5rem;
39
+ box-sizing: border-box;
40
+ padding: 1rem 0.5rem;
41
+ }
42
+
43
+ .jgis-command [cmdk-item] {
44
+ padding: 0 0.5rem;
45
+ padding-top: 0.75rem;
46
+ padding-bottom: 0.75rem;
47
+ }
48
+
49
+ .jgis-command [cmdk-item] svg {
50
+ height: 1.25rem;
51
+ width: 1.25rem;
52
+ }
53
+
54
+ /* Command Input Wrapper */
55
+ .jgis-command-input-wrapper {
56
+ display: flex;
57
+ height: 2.25rem;
58
+ align-items: center;
59
+ gap: 0.5rem;
60
+ border-bottom: 1px solid var(--jp-border-color0);
61
+ padding: 0.25rem 0.75rem;
62
+ }
63
+
64
+ .jgis-command-input-wrapper .size-4 {
65
+ width: 1rem;
66
+ height: 1rem;
67
+ flex-shrink: 0;
68
+ opacity: 0.5;
69
+ }
70
+
71
+ /* Command Input */
72
+ .jgis-command-input {
73
+ display: flex;
74
+ height: 1rem;
75
+ width: 100%;
76
+ border-radius: 0.375rem;
77
+ background-color: transparent;
78
+ padding-top: 0.75rem;
79
+ padding-bottom: 0.75rem;
80
+ font-size: 0.875rem;
81
+ outline: none;
82
+ }
83
+
84
+ .jgis-command-input::placeholder {
85
+ color: var(--jp-ui-font-color2);
86
+ }
87
+
88
+ .jgis-command-input:disabled {
89
+ cursor: not-allowed;
90
+ opacity: 0.5;
91
+ }
92
+
93
+ /* Command List */
94
+ .jgis-command-list {
95
+ max-height: 300px;
96
+ scroll-padding: 0.25rem 0;
97
+ overflow-x: hidden;
98
+ overflow-y: auto;
99
+ }
100
+
101
+ /* Command Empty */
102
+ .jgis-command-empty {
103
+ padding-top: 1.5rem;
104
+ padding-bottom: 1.5rem;
105
+ text-align: center;
106
+ font-size: 0.875rem;
107
+ }
108
+
109
+ /* Command Group */
110
+ .jgis-command-group {
111
+ color: var(--jp-ui-font-color0);
112
+ overflow: hidden;
113
+ padding: 0.25rem;
114
+ }
115
+
116
+ .jgis-command-group [cmdk-group-heading] {
117
+ color: var(--jp-ui-font-color2);
118
+ padding: 0 0.5rem;
119
+ padding-top: 0.375rem;
120
+ padding-bottom: 0.375rem;
121
+ font-size: 0.75rem;
122
+ font-weight: 500;
123
+ }
124
+
125
+ /* Command Separator */
126
+ .jgis-command-separator {
127
+ background-color: var(--jp-border-color0);
128
+ margin: 0 -0.25rem;
129
+ height: 1px;
130
+ }
131
+
132
+ /* Command Item */
133
+ .jgis-command-item {
134
+ position: relative;
135
+ display: flex;
136
+ cursor: default;
137
+ align-items: center;
138
+ gap: 0.5rem;
139
+ border-radius: 0.125rem;
140
+ padding: 0 0.5rem;
141
+ padding-top: 0.375rem;
142
+ padding-bottom: 0.375rem;
143
+ font-size: 0.875rem;
144
+ outline: none;
145
+ user-select: none;
146
+ }
147
+
148
+ .jgis-command-item[data-selected='true'] {
149
+ background-color: var(--jp-layout-color1);
150
+ color: var(--jp-ui-font-color0);
151
+ }
152
+
153
+ .jgis-command-item svg:not([class*='text-']) {
154
+ color: var(--jp-ui-font-color2);
155
+ }
156
+
157
+ .jgis-command-item svg {
158
+ pointer-events: none;
159
+ flex-shrink: 0;
160
+ }
161
+
162
+ .jgis-command-item svg:not([class*='size-']) {
163
+ width: 1rem;
164
+ height: 1rem;
165
+ }
166
+
167
+ .jgis-command-item[data-disabled='true'] {
168
+ pointer-events: none;
169
+ opacity: 0.5;
170
+ }
171
+
172
+ /* Command Shortcut */
173
+ .jgis-command-shortcut {
174
+ color: var(--jp-ui-font-color2);
175
+ margin-left: auto;
176
+ font-size: 0.75rem;
177
+ letter-spacing: 0.1em;
178
+ }
@@ -0,0 +1,59 @@
1
+ [data-slot='input'] {
2
+ box-sizing: border-box;
3
+ height: 1.125rem;
4
+ width: auto;
5
+ min-width: 0;
6
+ border-radius: var(--jp-border-radius, 0.375rem);
7
+ border: 1px solid var(--jp-border-color1);
8
+ background-color: transparent;
9
+ padding: 0.25rem 0.75rem;
10
+ font-size: 1rem;
11
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
12
+ transition:
13
+ color 0.15s ease-in-out,
14
+ box-shadow 0.15s ease-in-out;
15
+ outline: none;
16
+ color: var(--jp-ui-font-color1);
17
+ }
18
+
19
+ [data-slot='input']::placeholder {
20
+ color: var(--jp-ui-font-color2);
21
+ }
22
+
23
+ [data-slot='input']::selection {
24
+ background-color: var(--jp-brand-color1);
25
+ color: var(--jp-ui-inverse-font-color1);
26
+ }
27
+
28
+ [data-slot='input']:focus-visible {
29
+ border-color: var(--jp-brand-color1);
30
+ box-shadow: 0 0 0 3px rgba(var(--jp-brand-color1-rgb), 0.1);
31
+ }
32
+
33
+ [data-slot='input'][aria-invalid='true'] {
34
+ border-color: var(--jp-error-color1);
35
+ box-shadow: 0 0 0 3px rgba(var(--jp-error-color1-rgb), 0.2);
36
+ }
37
+
38
+ [data-slot='input']:disabled {
39
+ pointer-events: none;
40
+ cursor: not-allowed;
41
+ opacity: 0.5;
42
+ }
43
+
44
+ [data-slot='input']::file-selector-button {
45
+ color: var(--jp-ui-font-color1);
46
+ display: inline-flex;
47
+ height: 1.75rem;
48
+ border: 0;
49
+ background-color: transparent;
50
+ font-size: 0.875rem;
51
+ font-weight: 500;
52
+ margin-right: 0.75rem;
53
+ }
54
+
55
+ @media (min-width: 768px) {
56
+ [data-slot='input'] {
57
+ font-size: 0.875rem;
58
+ }
59
+ }
@@ -73,7 +73,7 @@
73
73
  }
74
74
 
75
75
  .jgis-pagination-link[data-variant='outline'] {
76
- border: 1px solid var(--jp-accent-color0);
76
+ border: 1px solid var(--jp-border-color0);
77
77
  background-color: var(--jp-layout-color2);
78
78
  transition:
79
79
  background-color 0.2s ease,
@@ -26,6 +26,7 @@
26
26
  box-shadow: 0 4px 6px
27
27
  color-mix(in srgb, var(--jp-ui-font-color0), transparent 90%);
28
28
  z-index: 50;
29
+ border: 1px solid var(--jp-border-color0);
29
30
  }
30
31
 
31
32
  .jgis-popover-content[data-state='open'] {
@@ -61,7 +61,7 @@
61
61
  outline: none;
62
62
  width: 100%;
63
63
  overflow-y: scroll;
64
- max-height: 480px;
64
+ /* max-height: 480px; */
65
65
  padding-top: 1rem;
66
66
  }
67
67