@gooddata/sdk-ui-kit 10.34.0-alpha.2 → 10.34.0-alpha.20

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 (133) hide show
  1. package/esm/@ui/@types/size.d.ts +8 -0
  2. package/esm/@ui/@types/size.d.ts.map +1 -1
  3. package/esm/@ui/@types/variant.d.ts +4 -0
  4. package/esm/@ui/@types/variant.d.ts.map +1 -1
  5. package/esm/@ui/@utils/size.d.ts +2 -2
  6. package/esm/@ui/@utils/size.d.ts.map +1 -1
  7. package/esm/@ui/@utils/size.js +4 -0
  8. package/esm/@ui/@utils/size.js.map +1 -1
  9. package/esm/@ui/UiBadge/UiBadge.d.ts +13 -0
  10. package/esm/@ui/UiBadge/UiBadge.d.ts.map +1 -0
  11. package/esm/@ui/UiBadge/UiBadge.js +12 -0
  12. package/esm/@ui/UiBadge/UiBadge.js.map +1 -0
  13. package/esm/@ui/UiButton/UiButton.d.ts.map +1 -1
  14. package/esm/@ui/UiButton/UiButton.js +1 -2
  15. package/esm/@ui/UiButton/UiButton.js.map +1 -1
  16. package/esm/@ui/UiCheckbox/UiCheckbox.d.ts +15 -0
  17. package/esm/@ui/UiCheckbox/UiCheckbox.d.ts.map +1 -0
  18. package/esm/@ui/UiCheckbox/UiCheckbox.js +11 -0
  19. package/esm/@ui/UiCheckbox/UiCheckbox.js.map +1 -0
  20. package/esm/@ui/UiIconButton/UiIconButtonRenderer.d.ts +5 -5
  21. package/esm/@ui/UiIconButton/UiIconButtonRenderer.d.ts.map +1 -1
  22. package/esm/@ui/UiIconButton/UiIconButtonRenderer.js.map +1 -1
  23. package/esm/@ui/UiMenu/UiMenu.d.ts.map +1 -1
  24. package/esm/@ui/UiMenu/UiMenu.js +6 -4
  25. package/esm/@ui/UiMenu/UiMenu.js.map +1 -1
  26. package/esm/@ui/UiMenu/hooks.d.ts.map +1 -1
  27. package/esm/@ui/UiMenu/hooks.js +1 -2
  28. package/esm/@ui/UiMenu/hooks.js.map +1 -1
  29. package/esm/@ui/UiMenu/types.d.ts +2 -8
  30. package/esm/@ui/UiMenu/types.d.ts.map +1 -1
  31. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.d.ts +3 -0
  32. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.d.ts.map +1 -1
  33. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.js +21 -5
  34. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.js.map +1 -1
  35. package/esm/@ui/UiSkeleton/UiSkeleton.d.ts +5 -1
  36. package/esm/@ui/UiSkeleton/UiSkeleton.d.ts.map +1 -1
  37. package/esm/@ui/UiSkeleton/UiSkeleton.js +4 -1
  38. package/esm/@ui/UiSkeleton/UiSkeleton.js.map +1 -1
  39. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareLink.d.ts.map +1 -1
  40. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareLink.js +1 -1
  41. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareLink.js.map +1 -1
  42. package/esm/Dropdown/Dropdown.d.ts +1 -1
  43. package/esm/Dropdown/Dropdown.d.ts.map +1 -1
  44. package/esm/Form/InputPure.js +1 -1
  45. package/esm/Form/InputPure.js.map +1 -1
  46. package/esm/Table/AsyncTable.d.ts +9 -0
  47. package/esm/Table/AsyncTable.d.ts.map +1 -0
  48. package/esm/Table/AsyncTable.js +97 -0
  49. package/esm/Table/AsyncTable.js.map +1 -0
  50. package/esm/Table/AsyncTableBulkActions.d.ts +4 -0
  51. package/esm/Table/AsyncTableBulkActions.d.ts.map +1 -0
  52. package/esm/Table/AsyncTableBulkActions.js +21 -0
  53. package/esm/Table/AsyncTableBulkActions.js.map +1 -0
  54. package/esm/Table/AsyncTableCheckbox.d.ts +4 -0
  55. package/esm/Table/AsyncTableCheckbox.d.ts.map +1 -0
  56. package/esm/Table/AsyncTableCheckbox.js +9 -0
  57. package/esm/Table/AsyncTableCheckbox.js.map +1 -0
  58. package/esm/Table/AsyncTableDropdownItem.d.ts +5 -0
  59. package/esm/Table/AsyncTableDropdownItem.d.ts.map +1 -0
  60. package/esm/Table/AsyncTableDropdownItem.js +6 -0
  61. package/esm/Table/AsyncTableDropdownItem.js.map +1 -0
  62. package/esm/Table/AsyncTableEmptyState.d.ts +3 -0
  63. package/esm/Table/AsyncTableEmptyState.d.ts.map +1 -0
  64. package/esm/Table/AsyncTableEmptyState.js +14 -0
  65. package/esm/Table/AsyncTableEmptyState.js.map +1 -0
  66. package/esm/Table/AsyncTableFilter.d.ts +7 -0
  67. package/esm/Table/AsyncTableFilter.d.ts.map +1 -0
  68. package/esm/Table/AsyncTableFilter.js +32 -0
  69. package/esm/Table/AsyncTableFilter.js.map +1 -0
  70. package/esm/Table/AsyncTableHeader.d.ts +4 -0
  71. package/esm/Table/AsyncTableHeader.d.ts.map +1 -0
  72. package/esm/Table/AsyncTableHeader.js +58 -0
  73. package/esm/Table/AsyncTableHeader.js.map +1 -0
  74. package/esm/Table/AsyncTableRow.d.ts +6 -0
  75. package/esm/Table/AsyncTableRow.d.ts.map +1 -0
  76. package/esm/Table/AsyncTableRow.js +68 -0
  77. package/esm/Table/AsyncTableRow.js.map +1 -0
  78. package/esm/Table/AsyncTableTitle.d.ts +4 -0
  79. package/esm/Table/AsyncTableTitle.d.ts.map +1 -0
  80. package/esm/Table/AsyncTableTitle.js +36 -0
  81. package/esm/Table/AsyncTableTitle.js.map +1 -0
  82. package/esm/Table/AsyncTableToolbar.d.ts +6 -0
  83. package/esm/Table/AsyncTableToolbar.d.ts.map +1 -0
  84. package/esm/Table/AsyncTableToolbar.js +56 -0
  85. package/esm/Table/AsyncTableToolbar.js.map +1 -0
  86. package/esm/Table/SkeletonItemFactory.d.ts +7 -0
  87. package/esm/Table/SkeletonItemFactory.d.ts.map +1 -0
  88. package/esm/Table/SkeletonItemFactory.js +12 -0
  89. package/esm/Table/SkeletonItemFactory.js.map +1 -0
  90. package/esm/Table/asyncTableBem.d.ts +2 -0
  91. package/esm/Table/asyncTableBem.d.ts.map +1 -0
  92. package/esm/Table/asyncTableBem.js +4 -0
  93. package/esm/Table/asyncTableBem.js.map +1 -0
  94. package/esm/Table/constants.d.ts +10 -0
  95. package/esm/Table/constants.d.ts.map +1 -0
  96. package/esm/Table/constants.js +11 -0
  97. package/esm/Table/constants.js.map +1 -0
  98. package/esm/Table/index.d.ts +3 -0
  99. package/esm/Table/index.d.ts.map +1 -0
  100. package/esm/Table/index.js +3 -0
  101. package/esm/Table/index.js.map +1 -0
  102. package/esm/Table/locales.d.ts +3 -0
  103. package/esm/Table/locales.d.ts.map +1 -0
  104. package/esm/Table/locales.js +13 -0
  105. package/esm/Table/locales.js.map +1 -0
  106. package/esm/Table/types.d.ts +137 -0
  107. package/esm/Table/types.d.ts.map +1 -0
  108. package/esm/Table/types.js +3 -0
  109. package/esm/Table/types.js.map +1 -0
  110. package/esm/Table/utils.d.ts +2 -0
  111. package/esm/Table/utils.d.ts.map +1 -0
  112. package/esm/Table/utils.js +6 -0
  113. package/esm/Table/utils.js.map +1 -0
  114. package/esm/index.d.ts +7 -2
  115. package/esm/index.d.ts.map +1 -1
  116. package/esm/index.js +3 -0
  117. package/esm/index.js.map +1 -1
  118. package/esm/sdk-ui-kit.d.ts +154 -15
  119. package/package.json +11 -10
  120. package/src/@ui/UiBadge/UiBadge.scss +16 -0
  121. package/src/@ui/UiCheckbox/UiCheckbox.scss +71 -0
  122. package/src/@ui/UiIconButton/UiIconButton.scss +37 -0
  123. package/src/@ui/UiMenu/UiMenu.scss +12 -0
  124. package/src/@ui/UiPagedVirtualList/UiPagedVirtualList.scss +17 -0
  125. package/src/@ui/UiSkeleton/UiSkeleton.scss +2 -1
  126. package/src/@ui/defaultTheme.scss +17 -0
  127. package/src/@ui/index.scss +2 -0
  128. package/styles/css/asyncTable.css +205 -0
  129. package/styles/css/asyncTable.css.map +1 -0
  130. package/styles/css/main.css +342 -0
  131. package/styles/css/main.css.map +1 -1
  132. package/styles/scss/asyncTable.scss +261 -0
  133. package/styles/scss/main.scss +1 -0
@@ -55,7 +55,7 @@ import { default as React_2 } from 'react';
55
55
  import * as React_3 from 'react';
56
56
  import { ReactNode } from 'react';
57
57
  import { ShareStatus } from '@gooddata/sdk-model';
58
- import { SortDirection } from '@gooddata/sdk-model';
58
+ import { SortDirection as SortDirection_2 } from '@gooddata/sdk-model';
59
59
  import { WeekStart } from '@gooddata/sdk-model';
60
60
  import { WithIntlProps } from 'react-intl';
61
61
  import { WrappedComponentProps } from 'react-intl';
@@ -141,6 +141,13 @@ export declare type ArrowOffsets = Record<string, ArrowOffset>;
141
141
  */
142
142
  export declare function AsyncList<T>(props: IAsyncListProps<T>): React_2.JSX.Element;
143
143
 
144
+ /**
145
+ * @internal
146
+ */
147
+ export declare const AsyncTable: <T extends {
148
+ id: string;
149
+ }>(props: IAsyncTableProps<T>) => React_2.JSX.Element;
150
+
144
151
  /**
145
152
  * @internal
146
153
  */
@@ -1364,6 +1371,64 @@ export declare interface IAsyncListProps<T> {
1364
1371
  onLoadNextPage?: () => void;
1365
1372
  }
1366
1373
 
1374
+ /**
1375
+ * @internal
1376
+ */
1377
+ export declare interface IAsyncTableFilter {
1378
+ label: string;
1379
+ options: Array<IAsyncTableFilterOption>;
1380
+ onItemClick: (option: IAsyncTableFilterOption) => void;
1381
+ selected?: string;
1382
+ }
1383
+
1384
+ /**
1385
+ * @internal
1386
+ */
1387
+ export declare interface IAsyncTableFilterOption {
1388
+ value: string;
1389
+ label?: string;
1390
+ isSelected?: boolean;
1391
+ }
1392
+
1393
+ /**
1394
+ * @internal
1395
+ */
1396
+ export declare interface IAsyncTableProps<T extends {
1397
+ id: string;
1398
+ }> {
1399
+ items: T[];
1400
+ totalItemsCount?: number;
1401
+ columns: Array<IColumn<T>>;
1402
+ width?: number;
1403
+ maxHeight?: number;
1404
+ smallHeader?: boolean;
1405
+ skeletonItemsCount?: number;
1406
+ isLoading?: boolean;
1407
+ hasNextPage?: boolean;
1408
+ loadNextPage?: () => void;
1409
+ title: string;
1410
+ onSearch?: (search: string) => void;
1411
+ renderTitleIcon?: () => React.ReactNode;
1412
+ titleActions?: Array<IAsyncTableTitleAction>;
1413
+ filters?: Array<IAsyncTableFilter>;
1414
+ sortBy?: keyof T;
1415
+ sortDirection?: SortDirection;
1416
+ onSort?: (key: keyof T) => void;
1417
+ bulkActions?: Array<IBulkAction>;
1418
+ selectedItemIds?: Array<string>;
1419
+ setSelectedItemIds?: (items: Array<string>) => void;
1420
+ renderItem?: (item: T) => React.ReactNode;
1421
+ renderHeader?: () => React.ReactNode;
1422
+ locale?: string;
1423
+ }
1424
+
1425
+ /**
1426
+ * @internal
1427
+ */
1428
+ export declare interface IAsyncTableTitleAction {
1429
+ renderAction: () => React.ReactNode;
1430
+ }
1431
+
1367
1432
  /**
1368
1433
  * @internal
1369
1434
  */
@@ -1514,6 +1579,14 @@ export declare interface IBucketItemDescriptors {
1514
1579
  [localIdentifier: string]: IBucketItemDescriptor;
1515
1580
  }
1516
1581
 
1582
+ /**
1583
+ * @internal
1584
+ */
1585
+ export declare interface IBulkAction {
1586
+ label: string;
1587
+ onClick: () => void;
1588
+ }
1589
+
1517
1590
  /**
1518
1591
  * @internal
1519
1592
  */
@@ -1592,6 +1665,24 @@ export declare interface IColorPreviewProps {
1592
1665
  className?: string;
1593
1666
  }
1594
1667
 
1668
+ /**
1669
+ * @internal
1670
+ */
1671
+ export declare interface IColumn<T> {
1672
+ key?: keyof T;
1673
+ label?: string;
1674
+ width?: number;
1675
+ renderMenu?: (item: T) => React.ReactNode;
1676
+ renderButton?: (item: T) => React.ReactNode;
1677
+ renderRoleIcon?: (item: T) => React.ReactNode;
1678
+ renderPrefixIcon?: (item: T) => React.ReactNode;
1679
+ renderSuffixIcon?: (item: T) => React.ReactNode;
1680
+ renderBadge?: (item: T) => React.ReactNode;
1681
+ getMultiLineContent?: (item: T) => Array<string>;
1682
+ bold?: boolean;
1683
+ sortable?: boolean;
1684
+ }
1685
+
1595
1686
  /**
1596
1687
  * @internal
1597
1688
  */
@@ -1997,7 +2088,7 @@ export declare interface IDropdownButtonRenderProps {
1997
2088
  /**
1998
2089
  * Props supporting accessibility that can be passed down to a <Button/>
1999
2090
  */
2000
- accessibilityConfig: Pick<IButtonAccessibilityConfig, "role" | "isExpanded" | "popupId">;
2091
+ accessibilityConfig: Pick<IButtonAccessibilityConfig, "role" | "isExpanded" | "popupId" | "ariaLabel">;
2001
2092
  }
2002
2093
 
2003
2094
  /**
@@ -4449,7 +4540,7 @@ export declare interface ISnapPoints {
4449
4540
  export declare interface ISortTypeItem {
4450
4541
  id: SORT_TARGET_TYPE;
4451
4542
  title: string;
4452
- sortDirection: SortDirection;
4543
+ sortDirection: SortDirection_2;
4453
4544
  type: "alphabetical" | "date" | "default" | "numerical";
4454
4545
  localIdentifier: string;
4455
4546
  }
@@ -5777,11 +5868,21 @@ export declare type SizeMedium = "medium";
5777
5868
  */
5778
5869
  export declare type SizeSmall = "small";
5779
5870
 
5871
+ /**
5872
+ * @internal
5873
+ */
5874
+ export declare type SizeXLarge = "xlarge";
5875
+
5780
5876
  /**
5781
5877
  * @internal
5782
5878
  */
5783
5879
  export declare type SizeXSmall = "xsmall";
5784
5880
 
5881
+ /**
5882
+ * @internal
5883
+ */
5884
+ export declare type SizeXXLarge = "xxlarge";
5885
+
5785
5886
  /**
5786
5887
  * @internal
5787
5888
  */
@@ -5815,6 +5916,11 @@ export declare enum SORT_TARGET_TYPE {
5815
5916
  */
5816
5917
  export declare function sortDateDatasets<T extends IDateDataset>(dateDatasets: T[], recommendedDate?: T, unrelatedDate?: T): Array<T | IDateDatasetHeader>;
5817
5918
 
5919
+ /**
5920
+ * @internal
5921
+ */
5922
+ export declare type SortDirection = "asc" | "desc";
5923
+
5818
5924
  /**
5819
5925
  * @internal
5820
5926
  */
@@ -6042,6 +6148,18 @@ export declare const UiAutofocus: React_2.FC<{
6042
6148
  children: React_2.ReactNode;
6043
6149
  } & IUiAutofocusOptions>;
6044
6150
 
6151
+ /**
6152
+ * @internal
6153
+ */
6154
+ export declare const UiBadge: React_2.FC<UiBadgeProps>;
6155
+
6156
+ /**
6157
+ * @internal
6158
+ */
6159
+ export declare interface UiBadgeProps {
6160
+ label: string;
6161
+ }
6162
+
6045
6163
  /**
6046
6164
  * @internal
6047
6165
  */
@@ -6067,6 +6185,21 @@ export declare interface UiButtonProps {
6067
6185
  accessibilityConfig?: IUiButtonAccessibilityConfig;
6068
6186
  }
6069
6187
 
6188
+ /**
6189
+ * @internal
6190
+ */
6191
+ export declare const UiCheckbox: React_2.FC<UiCheckboxProps>;
6192
+
6193
+ /**
6194
+ * @internal
6195
+ */
6196
+ export declare interface UiCheckboxProps {
6197
+ checked: boolean;
6198
+ onChange?: (e: React_2.ChangeEvent) => void;
6199
+ preventDefault?: boolean;
6200
+ indeterminate?: boolean;
6201
+ }
6202
+
6070
6203
  /**
6071
6204
  * @internal
6072
6205
  */
@@ -6135,8 +6268,8 @@ export declare type UiIconButtonProps = UiIconButtonPublicProps;
6135
6268
  export declare interface UiIconButtonPublicProps {
6136
6269
  icon: IconType;
6137
6270
  label?: string;
6138
- size?: SizeXSmall | SizeSmall | SizeMedium | SizeLarge;
6139
- variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger;
6271
+ size?: SizeXSmall | SizeSmall | SizeMedium | SizeLarge | SizeXLarge | SizeXXLarge;
6272
+ variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger | VariantTable;
6140
6273
  isDisabled?: boolean;
6141
6274
  isActive?: boolean;
6142
6275
  onClick?: (e: React_2.MouseEvent<HTMLButtonElement>) => void;
@@ -6144,7 +6277,7 @@ export declare interface UiIconButtonPublicProps {
6144
6277
  dataId?: string;
6145
6278
  dataTestId?: string;
6146
6279
  ariaAttributes?: IDropdownButtonRenderProps["ariaAttributes"];
6147
- accessibilityConfig?: IDropdownButtonRenderProps["accessibilityConfig"] & Pick<React_2.AriaAttributes, "aria-label">;
6280
+ accessibilityConfig?: IDropdownButtonRenderProps["accessibilityConfig"];
6148
6281
  }
6149
6282
 
6150
6283
  /**
@@ -6232,17 +6365,11 @@ export declare function UiMenu<T extends IUiMenuItemData = object, M extends obj
6232
6365
  */
6233
6366
  export declare interface UiMenuProps<T extends IUiMenuItemData = object, M = object> extends Partial<IUiMenuPluggableComponents<T>> {
6234
6367
  items: IUiMenuItem<T>[];
6235
- /**
6236
- * @deprecated use `dataTestId` instead. Prop will be removed.
6237
- */
6238
- className?: ((context: IUiMenuContext<T>) => string | undefined) | string;
6239
6368
  dataTestId?: ((context: IUiMenuContext<T>) => string | undefined) | string;
6240
- /**
6241
- * @deprecated use `itemDataTestId` instead. Prop will be removed.
6242
- */
6243
- itemClassName?: ((item: IUiMenuItem<T>) => string | undefined) | string;
6244
6369
  itemDataTestId?: ((item: IUiMenuItem<T>) => string | undefined) | string;
6245
6370
  maxWidth?: number;
6371
+ maxHeight?: ((context: IUiMenuContext<T>) => number | undefined) | number;
6372
+ containerBottomPadding?: "none" | "small" | "medium";
6246
6373
  onSelect?: (item: IUiMenuInteractiveItem<T>) => void;
6247
6374
  onLevelChange?: (level: number, item?: IUiMenuContentItem<T> | IUiMenuInteractiveItem<T>) => void;
6248
6375
  onClose?: () => void;
@@ -6294,7 +6421,10 @@ export declare interface UiPagedVirtualListProps<T> {
6294
6421
  * If not provided, object identity (`===`) is used for comparison.
6295
6422
  */
6296
6423
  scrollToItemKeyExtractor?: (item: T) => string | number;
6424
+ scrollToIndex?: number;
6425
+ shouldLoadNextPage?: (lastItemIndex: number, itemsCount: number, skeletonItemsCount: number) => boolean;
6297
6426
  children: (item: T) => React_2.ReactNode;
6427
+ scrollbarHoverEffect?: boolean;
6298
6428
  SkeletonItem?: React_2.ComponentType<UiPagedVirtualListSkeletonItemProps>;
6299
6429
  }
6300
6430
 
@@ -6315,7 +6445,7 @@ export declare const UiReturnFocusOnUnmount: React_2.FC<IUiReturnFocusOnUnmountO
6315
6445
  /**
6316
6446
  * @internal
6317
6447
  */
6318
- export declare function UiSkeleton({ itemsCount, itemHeight, itemWidth, itemsGap, direction, itemBorderRadius, }: UiSkeletonProps): React_2.JSX.Element;
6448
+ export declare function UiSkeleton({ itemsCount, itemHeight, itemPadding, itemWidth, itemsGap, direction, itemBorderRadius, }: UiSkeletonProps): React_2.JSX.Element;
6319
6449
 
6320
6450
  /**
6321
6451
  * @internal
@@ -6333,6 +6463,10 @@ export declare interface UiSkeletonProps {
6333
6463
  * Width of the item, or items.
6334
6464
  */
6335
6465
  itemWidth?: (number | string) | (number | string)[];
6466
+ /**
6467
+ * Padding of the item, or items.
6468
+ */
6469
+ itemPadding?: number | number[];
6336
6470
  /**
6337
6471
  * Gap between the items.
6338
6472
  */
@@ -6666,6 +6800,11 @@ export declare type VariantPrimary = "primary";
6666
6800
  */
6667
6801
  export declare type VariantSecondary = "secondary";
6668
6802
 
6803
+ /**
6804
+ * @internal
6805
+ */
6806
+ export declare type VariantTable = "table";
6807
+
6669
6808
  /**
6670
6809
  * @internal
6671
6810
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-kit",
3
- "version": "10.34.0-alpha.2",
3
+ "version": "10.34.0-alpha.20",
4
4
  "description": "GoodData SDK - UI Building Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -75,11 +75,11 @@
75
75
  "@floating-ui/dom": "1.6.13",
76
76
  "@floating-ui/react-dom": "2.1.2",
77
77
  "@floating-ui/react": "~0.27.12",
78
- "@gooddata/sdk-backend-spi": "10.34.0-alpha.2",
79
- "@gooddata/sdk-model": "10.34.0-alpha.2",
80
- "@gooddata/util": "10.34.0-alpha.2",
81
- "@gooddata/sdk-ui-theme-provider": "10.34.0-alpha.2",
82
- "@gooddata/sdk-ui": "10.34.0-alpha.2"
78
+ "@gooddata/sdk-backend-spi": "10.34.0-alpha.20",
79
+ "@gooddata/sdk-ui-theme-provider": "10.34.0-alpha.20",
80
+ "@gooddata/sdk-ui": "10.34.0-alpha.20",
81
+ "@gooddata/sdk-model": "10.34.0-alpha.20",
82
+ "@gooddata/util": "10.34.0-alpha.20"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "react": "^16.10.0 || ^17.0.0 || ^18.0.0",
@@ -134,8 +134,8 @@
134
134
  "typescript": "5.3.3",
135
135
  "vitest": "3.0.8",
136
136
  "vitest-dom": "0.1.1",
137
- "@gooddata/reference-workspace": "10.34.0-alpha.2",
138
- "@gooddata/sdk-backend-mockingbird": "10.34.0-alpha.2"
137
+ "@gooddata/reference-workspace": "10.34.0-alpha.20",
138
+ "@gooddata/sdk-backend-mockingbird": "10.34.0-alpha.20"
139
139
  },
140
140
  "scripts": {
141
141
  "clean": "rm -rf ci dist esm coverage styles/css *.log tsconfig.tsbuildinfo",
@@ -155,11 +155,12 @@
155
155
  "dep-cruiser-ci": "depcruise --validate .dependency-cruiser.cjs --output-type err-long src/",
156
156
  "stylelint": "stylelint '**/*.scss'",
157
157
  "stylelint-ci": "stylelint '**/*.scss' --custom-formatter=node_modules/stylelint-checkstyle-formatter > ./ci/results/stylelint-results.xml",
158
- "validate": "npm run dep-cruiser && npm run eslint && npm run stylelint && npm run validate-locales && npm run prettier-check && npm run validate-theming",
159
- "validate-ci": "export BROWSERSLIST_IGNORE_OLD_DATA=true && npm run dep-cruiser-ci && npm run eslint-ci && npm run stylelint-ci && npm run validate-locales-ci && npm run prettier-check && npm run validate-theming",
158
+ "validate": "npm run dep-cruiser && npm run eslint && npm run stylelint && npm run validate-locales && npm run prettier-check && npm run validate-theming && npm run validate-ui-components",
159
+ "validate-ci": "export BROWSERSLIST_IGNORE_OLD_DATA=true && npm run dep-cruiser-ci && npm run eslint-ci && npm run stylelint-ci && npm run validate-locales-ci && npm run prettier-check && npm run validate-theming && npm run validate-ui-components",
160
160
  "validate-locales": "cd ../sdk-ui && npm run validate-locales",
161
161
  "validate-locales-ci": "cd ../sdk-ui && npm run validate-locales-ci",
162
162
  "validate-theming": "npm run scss && node scripts/validateCss.js",
163
+ "validate-ui-components": "node scripts/validateUiComponents.js",
163
164
  "scss": "sass --load-path=node_modules --load-path=node_modules/fixed-data-table-2/dist styles/scss:styles/css"
164
165
  }
165
166
  }
@@ -0,0 +1,16 @@
1
+ // (C) 2025 GoodData Corporation
2
+
3
+ .gd-ui-kit-badge {
4
+ display: flex;
5
+ padding: 0 var(--gd-spacing-10px);
6
+ justify-content: center;
7
+ align-items: center;
8
+ border-radius: 30px;
9
+ font-size: 12px;
10
+
11
+ font-weight: 400;
12
+ line-height: 20px;
13
+
14
+ background: var(--gd-palette-complementary-2);
15
+ color: var(--gd-palette-complementary-7);
16
+ }
@@ -0,0 +1,71 @@
1
+ // (C) 2025 GoodData Corporation
2
+
3
+ .gd-ui-kit-checkbox {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ cursor: pointer;
7
+ user-select: none;
8
+
9
+ &__input {
10
+ position: absolute;
11
+ opacity: 0;
12
+ width: 0;
13
+ height: 0;
14
+ }
15
+
16
+ &__box {
17
+ width: 12px;
18
+ height: 12px;
19
+ border: 1px solid var(--gd-palette-complementary-5);
20
+ border-radius: 2px;
21
+ position: relative;
22
+ transition: background-color 0.2s, border-color 0.2s;
23
+ background-color: var(--gd-palette-complementary-0);
24
+
25
+ &:hover {
26
+ border-color: var(--gd-palette-complementary-6);
27
+ box-shadow: 0 1px 2px 0 rgba(31, 53, 74, 0.15) inset;
28
+ }
29
+
30
+ &::after {
31
+ content: "";
32
+ position: absolute;
33
+ height: 3px;
34
+ top: 3px;
35
+ transform: scale(0) rotate(315deg) skew(-2deg);
36
+ transform-origin: center top;
37
+ transition: transform 0.2s ease-out;
38
+ width: 7px;
39
+ border-bottom: 2px solid var(--gd-palette-complementary-0);
40
+ border-left: 2px solid var(--gd-palette-complementary-0);
41
+ }
42
+
43
+ &--checked {
44
+ background-color: var(--gd-palette-primary-base);
45
+ box-shadow: none;
46
+ border-color: var(--gd-palette-primary-base);
47
+
48
+ &::after {
49
+ transform: scale(1) rotate(315deg) skew(-2deg);
50
+ }
51
+ }
52
+
53
+ &--checked#{&}--indeterminate {
54
+ &::after {
55
+ content: "";
56
+ position: absolute;
57
+ top: 5px;
58
+ left: 2px;
59
+ width: 8px;
60
+ height: 2px;
61
+ background: var(--gd-palette-complementary-0);
62
+ border: none;
63
+ transform: scale(1) rotate(0deg);
64
+ }
65
+ }
66
+ }
67
+
68
+ &__input:focus-visible + &__box {
69
+ box-shadow: 0 0 0 2px var(--gd-palette-primary-focus);
70
+ }
71
+ }
@@ -55,6 +55,22 @@
55
55
  width: var(--gd-button-L);
56
56
  }
57
57
  }
58
+
59
+ &-xlarge {
60
+ height: var(--gd-button-XL);
61
+
62
+ &#{$root}--type-button {
63
+ width: var(--gd-button-XL);
64
+ }
65
+ }
66
+
67
+ &-xxlarge {
68
+ height: var(--gd-button-XXL);
69
+
70
+ &#{$root}--type-button {
71
+ width: var(--gd-button-XXL);
72
+ }
73
+ }
58
74
  }
59
75
 
60
76
  /**
@@ -155,6 +171,27 @@
155
171
  }
156
172
  }
157
173
 
174
+ &-table {
175
+ --gd-icon-fill-color: var(--gd-palette-complementary-7);
176
+ background-color: inherit;
177
+ border: none;
178
+ border-radius: 0;
179
+ transition: inherit;
180
+
181
+ &:disabled {
182
+ --gd-icon-fill-color: var(--gd-palette-complementary-5);
183
+ }
184
+
185
+ &#{$root}--active,
186
+ &:hover {
187
+ background-color: var(--gd-palette-complementary-3);
188
+ }
189
+
190
+ &#{$root}--active {
191
+ --gd-icon-fill-color: var(--gd-palette-complementary-7);
192
+ }
193
+ }
194
+
158
195
  &-danger {
159
196
  --gd-icon-fill-color: var(--gd-palette-complementary-0);
160
197
  background-color: var(--gd-palette-error-base);
@@ -14,11 +14,23 @@
14
14
  flex-direction: column;
15
15
  user-select: none;
16
16
 
17
+ &__content-container {
18
+ display: contents;
19
+ }
20
+
17
21
  &__items-container {
18
22
  width: 100%;
19
23
  height: 100%;
20
24
  overflow-y: auto;
21
25
  overflow-x: hidden;
26
+
27
+ &--container-bottom-padding-small {
28
+ padding-bottom: 8px;
29
+ }
30
+
31
+ &--container-bottom-padding-medium {
32
+ padding-bottom: 10px;
33
+ }
22
34
  }
23
35
 
24
36
  @media #{variables.$small-only} {
@@ -39,6 +39,23 @@
39
39
  background-color: var(--gd-palette-complementary-2);
40
40
  border-radius: 3px;
41
41
  }
42
+
43
+ &--hover {
44
+ &::-webkit-scrollbar {
45
+ width: 10px;
46
+ }
47
+
48
+ &::-webkit-scrollbar-thumb {
49
+ border: 2px solid transparent;
50
+ border-radius: 5px;
51
+ background-clip: padding-box;
52
+
53
+ &:hover {
54
+ border: 0;
55
+ background-color: var(--gd-palette-complementary-5);
56
+ }
57
+ }
58
+ }
42
59
  }
43
60
 
44
61
  &__item {
@@ -1,4 +1,4 @@
1
- // (C) 2024 GoodData Corporation
1
+ // (C) 2024-2025 GoodData Corporation
2
2
  @use "react-loading-skeleton/dist/skeleton.css";
3
3
 
4
4
  .gd-ui-kit-skeleton {
@@ -24,6 +24,7 @@
24
24
  border-radius: 3px;
25
25
  width: 100%;
26
26
  height: 100%;
27
+ box-sizing: border-box;
27
28
  }
28
29
 
29
30
  .react-loading-skeleton {
@@ -217,7 +217,10 @@
217
217
  --gd-spacing-3px: 3px;
218
218
  --gd-spacing-14px: 14px;
219
219
  --gd-spacing-16px: 16px;
220
+ --gd-spacing-34px: 34px;
220
221
  --gd-transition-all: all 0.25s ease-in-out;
222
+ --gd-button-XXL: 55px;
223
+ --gd-button-XL: 45px;
221
224
  --gd-button-L: 38px;
222
225
  --gd-button-M: 32px;
223
226
  --gd-button-S: 27px;
@@ -225,4 +228,18 @@
225
228
  --gd-tabs-height-L: 56px;
226
229
  --gd-tabs-height-M: 27px;
227
230
  --gd-tabs-height-S: 23px;
231
+ --gd-table-font-size: 14px;
232
+ --gd-table-row-height-normal: 45px;
233
+ --gd-table-row-height-large: 55px;
234
+ --gd-table-row-height-small: 27px;
235
+ --gd-table-row-line-height: 27px;
236
+ --gd-table-label-font-size: 11px;
237
+ --gd-table-counter-font-size: 12px;
238
+ --gd-table-dropdown-item-font-size: 12px;
239
+ --gd-table-multi-line-font-size: 12px;
240
+ --gd-table-multi-line-line-height: 17px;
241
+ --gd-table-multi-line-font-size-large: 14px;
242
+ --gd-table-multi-line-line-height-large: 23px;
243
+ --gd-table-dropdown-item-height: 28px;
244
+ --gd-table-title-font-size: 24px;
228
245
  }
@@ -12,3 +12,5 @@
12
12
  @use "./UiTooltip/UiTooltip.scss";
13
13
  @use "./UiLink/UiLink.scss";
14
14
  @use "./UiNavigationBypass/UiNavigationBypass.scss";
15
+ @use "./UiBadge/UiBadge.scss";
16
+ @use "./UiCheckbox/UiCheckbox.scss";