@umodeapporg/ui 0.27.0 → 0.29.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 (153) hide show
  1. package/dist/assets/umode-ui.css +0 -5
  2. package/dist/components/DateTime/DatePicker.d.ts +2 -0
  3. package/dist/components/DateTime/DatePicker.js +5 -2
  4. package/dist/components/DateTime/DatePicker.js.map +1 -1
  5. package/dist/components/DateTime/DateRangePicker.d.ts +2 -0
  6. package/dist/components/DateTime/DateRangePicker.js +3 -0
  7. package/dist/components/DateTime/DateRangePicker.js.map +1 -1
  8. package/dist/components/Form/ControlledButton.d.ts +1 -1
  9. package/dist/components/Form/ControlledButton.js +2 -2
  10. package/dist/components/Form/ControlledButton.js.map +1 -1
  11. package/dist/components/Form/ControlledCheckbox.d.ts +5 -1
  12. package/dist/components/Form/ControlledCheckbox.js +53 -39
  13. package/dist/components/Form/ControlledCheckbox.js.map +1 -1
  14. package/dist/components/Form/ControlledDialogPrimitives.js +17 -5
  15. package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -1
  16. package/dist/components/Form/ControlledDrawer.js +1 -0
  17. package/dist/components/Form/ControlledDrawer.js.map +1 -1
  18. package/dist/components/Form/ControlledImage/index.js +2 -0
  19. package/dist/components/Form/ControlledImage/index.js.map +1 -1
  20. package/dist/components/Form/ControlledInput.d.ts +1 -1
  21. package/dist/components/Form/ControlledInput.js +4 -4
  22. package/dist/components/Form/ControlledInput.js.map +1 -1
  23. package/dist/components/Form/ControlledSelect.js +1 -1
  24. package/dist/components/Form/ControlledSelect.js.map +1 -1
  25. package/dist/components/Form/ControlledTabs.js +17 -3
  26. package/dist/components/Form/ControlledTabs.js.map +1 -1
  27. package/dist/components/Form/ControlledTabsPrimitives.js +6 -6
  28. package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -1
  29. package/dist/components/Form/ControlledTextarea.js +2 -2
  30. package/dist/components/Form/ControlledTextarea.js.map +1 -1
  31. package/dist/components/Form/ControlledTimeline.js +11 -8
  32. package/dist/components/Form/ControlledTimeline.js.map +1 -1
  33. package/dist/components/Form/ControlledVoiceTextarea.d.ts +2 -0
  34. package/dist/components/Form/ControlledVoiceTextarea.js +3 -0
  35. package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -1
  36. package/dist/components/Form/FieldLabel.d.ts +16 -0
  37. package/dist/components/Form/FieldLabel.js +7 -0
  38. package/dist/components/Form/FieldLabel.js.map +1 -0
  39. package/dist/components/Form/RichTextEditor.js +15 -1
  40. package/dist/components/Form/RichTextEditor.js.map +1 -1
  41. package/dist/components/Form/attachments/AttachmentPreviewList.js +3 -0
  42. package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -1
  43. package/dist/components/Form/attachments/FileDropzone.js +3 -3
  44. package/dist/components/Form/attachments/FileDropzone.js.map +1 -1
  45. package/dist/components/Navigation/PageTitle.d.ts +6 -0
  46. package/dist/components/Navigation/PageTitle.js +6 -4
  47. package/dist/components/Navigation/PageTitle.js.map +1 -1
  48. package/dist/components/Search/filters/FiltersPanel.js +1 -0
  49. package/dist/components/Search/filters/FiltersPanel.js.map +1 -1
  50. package/dist/components/Search/filters/FiltersSummaryTooltip.js +2 -2
  51. package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -1
  52. package/dist/components/Shell/LanguageToggle.js +1 -1
  53. package/dist/components/Shell/LanguageToggle.js.map +1 -1
  54. package/dist/components/Shell/SidebarMenu.js +9 -1
  55. package/dist/components/Shell/SidebarMenu.js.map +1 -1
  56. package/dist/components/Shell/ThemeToggle.js +2 -1
  57. package/dist/components/Shell/ThemeToggle.js.map +1 -1
  58. package/dist/components/UI/BaseDataCard.d.ts +2 -0
  59. package/dist/components/UI/BaseDataCard.js +6 -0
  60. package/dist/components/UI/BaseDataCard.js.map +1 -1
  61. package/dist/components/UI/BulkActionBar.js +2 -0
  62. package/dist/components/UI/BulkActionBar.js.map +1 -1
  63. package/dist/components/UI/Chips/OutlinedChip.js +13 -6
  64. package/dist/components/UI/Chips/OutlinedChip.js.map +1 -1
  65. package/dist/components/UI/ColorSwatch.js +2 -2
  66. package/dist/components/UI/ColorSwatch.js.map +1 -1
  67. package/dist/components/UI/ControlledAccordion.js +10 -4
  68. package/dist/components/UI/ControlledAccordion.js.map +1 -1
  69. package/dist/components/UI/ControlledCollapse.js +2 -2
  70. package/dist/components/UI/ControlledCollapse.js.map +1 -1
  71. package/dist/components/UI/ControlledMenu.js +3 -3
  72. package/dist/components/UI/ControlledMenu.js.map +1 -1
  73. package/dist/components/UI/ControlledPopover.d.ts +12 -0
  74. package/dist/components/UI/ControlledPopover.js +35 -5
  75. package/dist/components/UI/ControlledPopover.js.map +1 -1
  76. package/dist/components/UI/ControlledProgress.js +3 -3
  77. package/dist/components/UI/ControlledProgress.js.map +1 -1
  78. package/dist/components/UI/ControlledSlider.d.ts +2 -0
  79. package/dist/components/UI/ControlledSlider.js +8 -3
  80. package/dist/components/UI/ControlledSlider.js.map +1 -1
  81. package/dist/components/UI/ControlledTooltip.js +7 -3
  82. package/dist/components/UI/ControlledTooltip.js.map +1 -1
  83. package/dist/components/UI/DataTable/DataTable.js +1 -1
  84. package/dist/components/UI/DataTable/DataTableBody.js +4 -0
  85. package/dist/components/UI/DataTable/DataTableBody.js.map +1 -1
  86. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +4 -2
  87. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -1
  88. package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.js +1 -1
  89. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.d.ts +5 -1
  90. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js +19 -4
  91. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js.map +1 -1
  92. package/dist/components/UI/DataTable/DataTableColumnToggle.js +3 -1
  93. package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -1
  94. package/dist/components/UI/DataTable/DataTableFilters.js +1 -1
  95. package/dist/components/UI/DataTable/DataTablePagination.js +4 -0
  96. package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -1
  97. package/dist/components/UI/DataTable/DataTableStates.js +2 -2
  98. package/dist/components/UI/DataTable/DataTableStates.js.map +1 -1
  99. package/dist/components/UI/DataTable/DataTableToolbar.js +1 -1
  100. package/dist/components/UI/DataTable/applyDataTableFilters.js +1 -1
  101. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +2 -1
  102. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -1
  103. package/dist/components/UI/DataTable/types.d.ts +4 -0
  104. package/dist/components/UI/DataTable/types.js.map +1 -1
  105. package/dist/components/UI/Flow/FlowBlockNode.js +1 -0
  106. package/dist/components/UI/Flow/FlowBlockNode.js.map +1 -1
  107. package/dist/components/UI/Flow/FlowCanvas.js +2 -2
  108. package/dist/components/UI/Flow/FlowCanvas.js.map +1 -1
  109. package/dist/components/UI/Flow/FlowConnectionEdge.js +1 -0
  110. package/dist/components/UI/Flow/FlowConnectionEdge.js.map +1 -1
  111. package/dist/components/UI/Flow/FlowInspector.js +3 -2
  112. package/dist/components/UI/Flow/FlowInspector.js.map +1 -1
  113. package/dist/components/UI/Flow/FlowIssueList.js +2 -2
  114. package/dist/components/UI/Flow/FlowIssueList.js.map +1 -1
  115. package/dist/components/UI/Flow/FlowLaneMap.js +2 -2
  116. package/dist/components/UI/Flow/FlowLaneMap.js.map +1 -1
  117. package/dist/components/UI/Flow/FlowResizablePanel.js +3 -2
  118. package/dist/components/UI/Flow/FlowResizablePanel.js.map +1 -1
  119. package/dist/components/UI/Flow/FlowZoomControls.js +1 -0
  120. package/dist/components/UI/Flow/FlowZoomControls.js.map +1 -1
  121. package/dist/components/UI/HorizontalScrollArea.d.ts +1 -1
  122. package/dist/components/UI/HorizontalScrollArea.js +1 -0
  123. package/dist/components/UI/HorizontalScrollArea.js.map +1 -1
  124. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +1 -0
  125. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -1
  126. package/dist/components/UI/ImagePlaceholder.js +5 -2
  127. package/dist/components/UI/ImagePlaceholder.js.map +1 -1
  128. package/dist/components/UI/ImageZoomOverlay.js +1 -0
  129. package/dist/components/UI/ImageZoomOverlay.js.map +1 -1
  130. package/dist/components/UI/MaterialSymbol/index.js +5 -0
  131. package/dist/components/UI/MaterialSymbol/index.js.map +1 -1
  132. package/dist/components/UI/NoDataFound/index.js +3 -3
  133. package/dist/components/UI/NoDataFound/index.js.map +1 -1
  134. package/dist/components/UI/RichTextContent.js +3 -3
  135. package/dist/components/UI/RichTextContent.js.map +1 -1
  136. package/dist/components/UI/ThreeDots.js +15 -11
  137. package/dist/components/UI/ThreeDots.js.map +1 -1
  138. package/dist/helpers/mergeClasses.d.ts +7 -3
  139. package/dist/helpers/mergeClasses.js +23 -1
  140. package/dist/helpers/mergeClasses.js.map +1 -1
  141. package/dist/hooks/useVoiceTranscription.js +5 -2
  142. package/dist/hooks/useVoiceTranscription.js.map +1 -1
  143. package/dist/index.d.ts +2 -0
  144. package/dist/index.js +58 -54
  145. package/dist/index.js.map +1 -1
  146. package/dist/locales/en/ui.json.d.ts +8 -3
  147. package/dist/locales/en/ui.json.js +3 -3
  148. package/dist/locales/index.d.ts +10 -0
  149. package/dist/locales/pt/ui.json.d.ts +8 -3
  150. package/dist/locales/pt/ui.json.js +3 -3
  151. package/package.json +1 -1
  152. package/src/assets/styles/base.css +7 -1
  153. package/tailwind-plugins/glass.js +23 -28
package/dist/index.js CHANGED
@@ -10,40 +10,42 @@ import { default as default9 } from "./components/Form/ControlledSwitch.js";
10
10
  import { default as default10 } from "./components/Form/ControlledTabs.js";
11
11
  import { default as default11 } from "./components/Form/ControlledTextarea.js";
12
12
  import { default as default12 } from "./components/Form/ControlledViewToggle.js";
13
- import { default as default13 } from "./components/Navigation/ControlledBreadcrumb.js";
14
- import { default as default14 } from "./components/Navigation/ErrorPage.js";
15
- import { default as default15 } from "./components/Navigation/LinkButton.js";
16
- import { default as default16 } from "./components/Navigation/PageTitle.js";
13
+ import { default as default13 } from "./components/Form/FieldLabel.js";
14
+ import { default as default14 } from "./components/Navigation/ControlledBreadcrumb.js";
15
+ import { default as default15 } from "./components/Navigation/ErrorPage.js";
16
+ import { default as default16 } from "./components/Navigation/LinkButton.js";
17
+ import { default as default17 } from "./components/Navigation/PageTitle.js";
17
18
  import { PageTitleNavigationProvider, usePageTitleNavigation } from "./components/Navigation/PageTitleNavigationContext.js";
18
19
  import { UiNavigationProvider, useUiNavigation } from "./components/Navigation/UiNavigationContext.js";
19
- import { default as default17 } from "./components/Search/UnifiedSearchBar.js";
20
- import { default as default18 } from "./components/Shell/AppShell.js";
21
- import { default as default19 } from "./components/Shell/LanguageToggle.js";
20
+ import { default as default18 } from "./components/Search/UnifiedSearchBar.js";
21
+ import { default as default19 } from "./components/Shell/AppShell.js";
22
+ import { default as default20 } from "./components/Shell/LanguageToggle.js";
22
23
  import { resolveSidebarItemId } from "./components/Shell/SidebarMenu.js";
23
- import { default as default20 } from "./components/Shell/ThemeToggle.js";
24
+ import { default as default21 } from "./components/Shell/ThemeToggle.js";
24
25
  import { UiAccessProvider, useUiAccess } from "./components/UI/access/UiAccessContext.js";
25
- import { default as default21 } from "./components/UI/BaseDataCard.js";
26
- import { default as default22 } from "./components/UI/Chips/OutlinedChip.js";
27
- import { default as default23 } from "./components/UI/Colors.js";
28
- import { default as default24 } from "./components/UI/ColorSwatch.js";
29
- import { default as default25 } from "./components/UI/ControlledAccordion.js";
30
- import { default as default26 } from "./components/UI/ControlledCollapse.js";
31
- import { default as default27 } from "./components/UI/ControlledMenu.js";
32
- import { default as default28 } from "./components/UI/ControlledPopover.js";
33
- import { default as default29 } from "./components/UI/ControlledProgress.js";
34
- import { default as default30 } from "./components/UI/ControlledSlider.js";
35
- import { default as default31 } from "./components/UI/ControlledTooltip.js";
36
- import { default as default32 } from "./components/UI/CustomBadge.js";
37
- import { default as default33 } from "./components/UI/CustomCard.js";
38
- import { default as default34 } from "./components/UI/ImageMaskPainter/index.js";
39
- import { default as default35 } from "./components/UI/InformationCard.js";
40
- import { default as default36 } from "./components/UI/LoadingSpinner.js";
26
+ import { default as default22 } from "./components/UI/BaseDataCard.js";
27
+ import { default as default23 } from "./components/UI/Chips/OutlinedChip.js";
28
+ import { default as default24 } from "./components/UI/Colors.js";
29
+ import { default as default25 } from "./components/UI/ColorSwatch.js";
30
+ import { default as default26 } from "./components/UI/ControlledAccordion.js";
31
+ import { default as default27 } from "./components/UI/ControlledCollapse.js";
32
+ import { default as default28 } from "./components/UI/ControlledMenu.js";
33
+ import { default as default29 } from "./components/UI/ControlledPopover.js";
34
+ import { default as default30 } from "./components/UI/ControlledProgress.js";
35
+ import { default as default31 } from "./components/UI/ControlledSlider.js";
36
+ import { default as default32 } from "./components/UI/ControlledTooltip.js";
37
+ import { default as default33 } from "./components/UI/CustomBadge.js";
38
+ import { default as default34 } from "./components/UI/CustomCard.js";
39
+ import { default as default35 } from "./components/UI/ImageMaskPainter/index.js";
40
+ import { default as default36 } from "./components/UI/InformationCard.js";
41
+ import { default as default37 } from "./components/UI/LoadingSpinner.js";
41
42
  import { MaterialSymbol, combineClasses } from "./components/UI/MaterialSymbol/index.js";
42
- import { default as default37 } from "./components/UI/NoDataFound/index.js";
43
- import { default as default38 } from "./components/UI/SkeletonLoading.js";
44
- import { default as default39 } from "./components/UI/UserMenu.js";
43
+ import { default as default38 } from "./components/UI/NoDataFound/index.js";
44
+ import { default as default39 } from "./components/UI/SkeletonLoading.js";
45
+ import { default as default40 } from "./components/UI/UserMenu.js";
45
46
  import { composeRefs } from "./helpers/composeRefs.js";
46
47
  import { LAYERED_SURFACE_ATTRIBUTE, LAYERED_SURFACE_DATA_ATTRIBUTE, LAYERED_SURFACE_SELECTOR, isPressOnLayeredSurface } from "./helpers/layeredSurfaces.js";
48
+ import { mergeClasses } from "./helpers/mergeClasses.js";
47
49
  import { UI_THEME_SKINS, UI_THEME_SKIN_ATTRIBUTE, UI_THEME_SKIN_SCHEMES, isUiThemeSkin } from "./helpers/themeSkins.js";
48
50
  import { readThemeToken, useThemeChartTokens } from "./helpers/themeTokens.js";
49
51
  import { configureUiLogger, uiLogger } from "./helpers/uiLogger.js";
@@ -60,57 +62,58 @@ import { uiLocales } from "./locales/index.js";
60
62
  import { collapseVariants, createDrawerVariants, dialogVariants, fadeVariants, floatingVariants, scrimVariants, tooltipVariants } from "./motion/motionPresets.js";
61
63
  import { MOTION_OFFSET_PX, enterTransition, exitTransition, motionDuration, motionEase } from "./motion/motionTokens.js";
62
64
  export {
63
- default18 as AppShell,
65
+ default19 as AppShell,
64
66
  BREAKPOINTS,
65
- default21 as BaseDataCard,
66
- default24 as ColorSwatch,
67
- default23 as Colors,
68
- default25 as ControlledAccordion,
69
- default13 as ControlledBreadcrumb,
67
+ default22 as BaseDataCard,
68
+ default25 as ColorSwatch,
69
+ default24 as Colors,
70
+ default26 as ControlledAccordion,
71
+ default14 as ControlledBreadcrumb,
70
72
  default2 as ControlledButton,
71
73
  default3 as ControlledCheckbox,
72
- default26 as ControlledCollapse,
74
+ default27 as ControlledCollapse,
73
75
  default4 as ControlledDialog,
74
76
  default5 as ControlledDrawer,
75
77
  default6 as ControlledImage,
76
78
  default7 as ControlledInput,
77
- default27 as ControlledMenu,
78
- default28 as ControlledPopover,
79
- default29 as ControlledProgress,
79
+ default28 as ControlledMenu,
80
+ default29 as ControlledPopover,
81
+ default30 as ControlledProgress,
80
82
  default8 as ControlledRadio,
81
83
  ControlledSelect,
82
- default30 as ControlledSlider,
84
+ default31 as ControlledSlider,
83
85
  default9 as ControlledSwitch,
84
86
  default10 as ControlledTabs,
85
87
  default11 as ControlledTextarea,
86
- default31 as ControlledTooltip,
88
+ default32 as ControlledTooltip,
87
89
  default12 as ControlledViewToggle,
88
- default32 as CustomBadge,
89
- default33 as CustomCard,
90
- default14 as ErrorPage,
91
- default34 as ImageMaskPainter,
92
- default35 as InformationCard,
90
+ default33 as CustomBadge,
91
+ default34 as CustomCard,
92
+ default15 as ErrorPage,
93
+ default13 as FieldLabel,
94
+ default35 as ImageMaskPainter,
95
+ default36 as InformationCard,
93
96
  LAYERED_SURFACE_ATTRIBUTE,
94
97
  LAYERED_SURFACE_DATA_ATTRIBUTE,
95
98
  LAYERED_SURFACE_SELECTOR,
96
- default15 as LinkButton,
97
- default36 as LoadingSpinner,
99
+ default16 as LinkButton,
100
+ default37 as LoadingSpinner,
98
101
  MOTION_OFFSET_PX,
99
102
  MaterialSymbol,
100
- default37 as NoDataFound,
101
- default22 as OutlinedChip,
102
- default16 as PageTitle,
103
+ default38 as NoDataFound,
104
+ default23 as OutlinedChip,
105
+ default17 as PageTitle,
103
106
  PageTitleNavigationProvider,
104
- default19 as ShellLanguageToggle,
105
- default20 as ShellThemeToggle,
106
- default38 as SkeletonLoading,
107
+ default20 as ShellLanguageToggle,
108
+ default21 as ShellThemeToggle,
109
+ default39 as SkeletonLoading,
107
110
  UI_THEME_SKINS,
108
111
  UI_THEME_SKIN_ATTRIBUTE,
109
112
  UI_THEME_SKIN_SCHEMES,
110
113
  UiAccessProvider,
111
114
  UiNavigationProvider,
112
- default17 as UnifiedSearchBar,
113
- default39 as UserMenu,
115
+ default18 as UnifiedSearchBar,
116
+ default40 as UserMenu,
114
117
  collapseVariants,
115
118
  combineClasses,
116
119
  composeRefs,
@@ -125,6 +128,7 @@ export {
125
128
  getButtonClassName,
126
129
  isPressOnLayeredSurface,
127
130
  isUiThemeSkin,
131
+ mergeClasses,
128
132
  motionDuration,
129
133
  motionEase,
130
134
  readThemeToken,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,7 +47,8 @@ declare const _default: {
47
47
  "ok": "Ok",
48
48
  "gotIt": "Got it",
49
49
  "finishEditing": "Finish Editing",
50
- "editColumn": "Edit {{column}}"
50
+ "editColumn": "Edit {{column}}",
51
+ "moreOptions": "More options"
51
52
  },
52
53
  "colorSwatch": {
53
54
  "noCode": "Color without a registered code"
@@ -66,7 +67,9 @@ declare const _default: {
66
67
  "enableTab": "Enable tab",
67
68
  "mustKeepOneEnabled": "At least one tab must remain enabled",
68
69
  "disableTab": "Disable tab",
69
- "enableTabShort": "Enable tab"
70
+ "enableTabShort": "Enable tab",
71
+ "scrollLeft": "Scroll tabs left",
72
+ "scrollRight": "Scroll tabs right"
70
73
  },
71
74
  "createTask": {
72
75
  "newTask": "New task",
@@ -166,7 +169,9 @@ declare const _default: {
166
169
  "noTargets": "No item in the chosen scope.",
167
170
  "perItemHint": "Change only the cells you want. The rest stay as they are.",
168
171
  "itemColumn": "Item"
169
- }
172
+ },
173
+ "expandRow": "Expand row",
174
+ "collapseRow": "Collapse row"
170
175
  },
171
176
  "dateRangePicker": {
172
177
  "selectPeriod": "Select a period",
@@ -1,11 +1,11 @@
1
1
  const accordion = { "hide": "Hide", "expand": "Expand" };
2
- const actions = { "save": "Save", "cancel": "Cancel", "confirm": "Confirm", "delete": "Delete", "edit": "Edit", "create": "Create", "add": "Add", "remove": "Remove", "close": "Close", "back": "Back", "next": "Next", "previous": "Previous", "continue": "Continue", "submit": "Submit", "send": "Send", "search": "Search", "filter": "Filter", "clear": "Clear", "reset": "Reset", "reload": "Reload", "refresh": "Refresh", "apply": "Apply", "export": "Export", "import": "Import", "download": "Download", "upload": "Upload", "duplicate": "Duplicate", "select": "Select", "selectAll": "Select all", "deselectAll": "Deselect all", "viewDetails": "View details", "activate": "Activate", "deactivate": "Deactivate", "viewMore": "View more", "viewLess": "View less", "tryAgain": "Try again", "discardChanges": "Discard changes", "keepEditing": "Keep editing", "yes": "Yes", "no": "No", "ok": "Ok", "gotIt": "Got it", "finishEditing": "Finish Editing", "editColumn": "Edit {{column}}" };
2
+ const actions = { "save": "Save", "cancel": "Cancel", "confirm": "Confirm", "delete": "Delete", "edit": "Edit", "create": "Create", "add": "Add", "remove": "Remove", "close": "Close", "back": "Back", "next": "Next", "previous": "Previous", "continue": "Continue", "submit": "Submit", "send": "Send", "search": "Search", "filter": "Filter", "clear": "Clear", "reset": "Reset", "reload": "Reload", "refresh": "Refresh", "apply": "Apply", "export": "Export", "import": "Import", "download": "Download", "upload": "Upload", "duplicate": "Duplicate", "select": "Select", "selectAll": "Select all", "deselectAll": "Deselect all", "viewDetails": "View details", "activate": "Activate", "deactivate": "Deactivate", "viewMore": "View more", "viewLess": "View less", "tryAgain": "Try again", "discardChanges": "Discard changes", "keepEditing": "Keep editing", "yes": "Yes", "no": "No", "ok": "Ok", "gotIt": "Got it", "finishEditing": "Finish Editing", "editColumn": "Edit {{column}}", "moreOptions": "More options" };
3
3
  const colorSwatch = { "noCode": "Color without a registered code" };
4
4
  const controlledDrawer = { "resizeHandle": "Drag to adjust the width" };
5
5
  const controlledSelect = { "loadingOptions": "Loading options", "noDataToShow": "No data to show", "moreItems": "+{{count}}" };
6
- const controlledTabs = { "renameTab": "Rename tab", "tabDisabled": "This tab is disabled", "enableTab": "Enable tab", "mustKeepOneEnabled": "At least one tab must remain enabled", "disableTab": "Disable tab", "enableTabShort": "Enable tab" };
6
+ const controlledTabs = { "renameTab": "Rename tab", "tabDisabled": "This tab is disabled", "enableTab": "Enable tab", "mustKeepOneEnabled": "At least one tab must remain enabled", "disableTab": "Disable tab", "enableTabShort": "Enable tab", "scrollLeft": "Scroll tabs left", "scrollRight": "Scroll tabs right" };
7
7
  const createTask = { "newTask": "New task", "createTask": "Create Task", "newTaskTitle": "New Task", "taskName": "Title", "createdSuccess": "Task created successfully for {{date}}", "taskNamePlaceholder": "What is the task?", "taskType": "Task Type", "deadline": "Due date", "description": "Description", "descriptionPlaceholder": "Add a description...", "assignees": "Assignees", "saveTask": "Save Task", "cancel": "Cancel", "createdSuccessNoDate": "Task created successfully", "titleRequired": "Title is required", "taskTypeRequired": "Task type is required", "sidebarTitle": "Details", "rich": { "bold": "Bold", "italic": "Italic", "strikethrough": "Strikethrough", "link": "Link", "bulletList": "Bullet list", "numberedList": "Numbered list", "quote": "Quote", "indent": "Increase indent", "outdent": "Decrease indent", "textColor": "Text colour", "colors": { "default": "Default", "brand": "Purple", "info": "Blue", "success": "Green", "warning": "Amber", "danger": "Red", "accent": "Pink", "secondary": "Teal", "muted": "Grey" } }, "newTaskSubtitle": "Set the assignee and the due date", "createError": "Could not create the task", "requiredHint": "Fill in the title and the task type to save", "deadlinePlaceholder": "Select a date" };
8
- const dataTable = { "empty": "No records found", "error": "We could not load this list", "columns": "Columns", "viewList": "List", "viewCards": "Cards", "reorderColumn": "Reorder column", "restoreDefaultOrder": "Restore default order", "resizeColumn": "Resize column", "restoreDefaultWidths": "Restore default widths", "viewGrouped": "Grouping", "viewKanban": "Kanban", "addRow": "Add row", "removeRow": "Remove row", "editCell": "Edit", "save": "Save", "fillHandle": "Drag to fill", "editMode": { "enter": "Spreadsheet editing", "exit": "Exit editing", "inactiveHint": "Turns on cell editing: keyboard navigation, selection and drag to fill", "activeHint": "Cell editing is on. Clicking a row opens the record again once you exit" }, "bulkEdit": { "title": "Bulk edit", "subtitle": "Pick the field, the new value and which items it applies to.", "open": "Bulk edit", "hint": "Applies the same value to several items at once", "field": "Field", "newValue": "New value", "scopeLabel": "Apply to", "scopeLoaded": "All loaded", "scopePicked": "Pick items", "searchRows": "Search the list", "noRowsFound": "No item matches the search.", "selectAll_one": "Select the visible item", "selectAll_other": "Select the {{count}} visible", "confirm_one": "Apply to {{count}} item", "confirm_other": "Apply to {{count}} items", "confirmEmpty": "Pick the items", "subtitlePerItem": "Pick the fields and adjust each item's value; only what changed will be saved.", "modeLabel": "How to apply", "modeSame": "Same value", "modePerItem": "Values per item", "fields": "Fields", "confirmChanges_one": "Apply {{count}} change", "confirmChanges_other": "Apply {{count}} changes", "confirmNoChanges": "No changes", "pickFieldsHint": "Pick at least one field to edit per item.", "noTargets": "No item in the chosen scope.", "perItemHint": "Change only the cells you want. The rest stay as they are.", "itemColumn": "Item" } };
8
+ const dataTable = { "empty": "No records found", "error": "We could not load this list", "columns": "Columns", "viewList": "List", "viewCards": "Cards", "reorderColumn": "Reorder column", "restoreDefaultOrder": "Restore default order", "resizeColumn": "Resize column", "restoreDefaultWidths": "Restore default widths", "viewGrouped": "Grouping", "viewKanban": "Kanban", "addRow": "Add row", "removeRow": "Remove row", "editCell": "Edit", "save": "Save", "fillHandle": "Drag to fill", "editMode": { "enter": "Spreadsheet editing", "exit": "Exit editing", "inactiveHint": "Turns on cell editing: keyboard navigation, selection and drag to fill", "activeHint": "Cell editing is on. Clicking a row opens the record again once you exit" }, "bulkEdit": { "title": "Bulk edit", "subtitle": "Pick the field, the new value and which items it applies to.", "open": "Bulk edit", "hint": "Applies the same value to several items at once", "field": "Field", "newValue": "New value", "scopeLabel": "Apply to", "scopeLoaded": "All loaded", "scopePicked": "Pick items", "searchRows": "Search the list", "noRowsFound": "No item matches the search.", "selectAll_one": "Select the visible item", "selectAll_other": "Select the {{count}} visible", "confirm_one": "Apply to {{count}} item", "confirm_other": "Apply to {{count}} items", "confirmEmpty": "Pick the items", "subtitlePerItem": "Pick the fields and adjust each item's value; only what changed will be saved.", "modeLabel": "How to apply", "modeSame": "Same value", "modePerItem": "Values per item", "fields": "Fields", "confirmChanges_one": "Apply {{count}} change", "confirmChanges_other": "Apply {{count}} changes", "confirmNoChanges": "No changes", "pickFieldsHint": "Pick at least one field to edit per item.", "noTargets": "No item in the chosen scope.", "perItemHint": "Change only the cells you want. The rest stay as they are.", "itemColumn": "Item" }, "expandRow": "Expand row", "collapseRow": "Collapse row" };
9
9
  const dateRangePicker = { "selectPeriod": "Select a period", "nowSelectEndDate": "Now select the end date" };
10
10
  const dates = { "today": "Today", "yesterday": "Yesterday", "tomorrow": "Tomorrow", "thisWeek": "This week", "lastWeek": "Last week", "thisMonth": "This month", "lastMonth": "Last month", "selectStartDate": "Select start date", "selectEndDate": "Select end date", "clearSelection": "Clear selection", "clearPeriod": "Clear selected period", "periodSelectedSuccess": "Period selected successfully" };
11
11
  const detailsTable = { "size": "Size", "quantity": "Qty" };
@@ -50,6 +50,7 @@ export declare const uiLocales: {
50
50
  gotIt: string;
51
51
  finishEditing: string;
52
52
  editColumn: string;
53
+ moreOptions: string;
53
54
  };
54
55
  colorSwatch: {
55
56
  noCode: string;
@@ -69,6 +70,8 @@ export declare const uiLocales: {
69
70
  mustKeepOneEnabled: string;
70
71
  disableTab: string;
71
72
  enableTabShort: string;
73
+ scrollLeft: string;
74
+ scrollRight: string;
72
75
  };
73
76
  createTask: {
74
77
  newTask: string;
@@ -169,6 +172,8 @@ export declare const uiLocales: {
169
172
  perItemHint: string;
170
173
  itemColumn: string;
171
174
  };
175
+ expandRow: string;
176
+ collapseRow: string;
172
177
  };
173
178
  dateRangePicker: {
174
179
  selectPeriod: string;
@@ -683,6 +688,7 @@ export declare const uiLocales: {
683
688
  gotIt: string;
684
689
  finishEditing: string;
685
690
  editColumn: string;
691
+ moreOptions: string;
686
692
  };
687
693
  colorSwatch: {
688
694
  noCode: string;
@@ -702,6 +708,8 @@ export declare const uiLocales: {
702
708
  mustKeepOneEnabled: string;
703
709
  disableTab: string;
704
710
  enableTabShort: string;
711
+ scrollLeft: string;
712
+ scrollRight: string;
705
713
  };
706
714
  createTask: {
707
715
  newTask: string;
@@ -802,6 +810,8 @@ export declare const uiLocales: {
802
810
  perItemHint: string;
803
811
  itemColumn: string;
804
812
  };
813
+ expandRow: string;
814
+ collapseRow: string;
805
815
  };
806
816
  dateRangePicker: {
807
817
  selectPeriod: string;
@@ -47,7 +47,8 @@ declare const _default: {
47
47
  "ok": "Ok",
48
48
  "gotIt": "Entendi",
49
49
  "finishEditing": "Finalizar Edição",
50
- "editColumn": "Editar {{column}}"
50
+ "editColumn": "Editar {{column}}",
51
+ "moreOptions": "Mais opções"
51
52
  },
52
53
  "colorSwatch": {
53
54
  "noCode": "Cor sem código cadastrado"
@@ -66,7 +67,9 @@ declare const _default: {
66
67
  "enableTab": "Habilitar aba",
67
68
  "mustKeepOneEnabled": "É necessário manter ao menos uma aba habilitada",
68
69
  "disableTab": "Desabilitar tab",
69
- "enableTabShort": "Habilitar tab"
70
+ "enableTabShort": "Habilitar tab",
71
+ "scrollLeft": "Rolar abas para a esquerda",
72
+ "scrollRight": "Rolar abas para a direita"
70
73
  },
71
74
  "createTask": {
72
75
  "newTask": "Nova tarefa",
@@ -166,7 +169,9 @@ declare const _default: {
166
169
  "noTargets": "Nenhum item no alcance escolhido.",
167
170
  "perItemHint": "Altere apenas as células desejadas. As demais permanecem como estão.",
168
171
  "itemColumn": "Item"
169
- }
172
+ },
173
+ "expandRow": "Expandir linha",
174
+ "collapseRow": "Recolher linha"
170
175
  },
171
176
  "dateRangePicker": {
172
177
  "selectPeriod": "Selecione um período",
@@ -1,11 +1,11 @@
1
1
  const accordion = { "hide": "Ocultar", "expand": "Expandir" };
2
- const actions = { "save": "Salvar", "cancel": "Cancelar", "confirm": "Confirmar", "delete": "Excluir", "edit": "Editar", "create": "Criar", "add": "Adicionar", "remove": "Remover", "close": "Fechar", "back": "Voltar", "next": "Próximo", "previous": "Anterior", "continue": "Continuar", "submit": "Enviar", "send": "Enviar", "search": "Buscar", "filter": "Filtrar", "clear": "Limpar", "reset": "Redefinir", "reload": "Recarregar", "refresh": "Atualizar", "apply": "Aplicar", "export": "Exportar", "import": "Importar", "download": "Baixar", "upload": "Enviar arquivo", "duplicate": "Duplicar", "select": "Selecionar", "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "viewDetails": "Visualizar detalhes", "activate": "Ativar", "deactivate": "Inativar", "viewMore": "Ver mais", "viewLess": "Ver menos", "tryAgain": "Tentar novamente", "discardChanges": "Descartar alterações", "keepEditing": "Continuar editando", "yes": "Sim", "no": "Não", "ok": "Ok", "gotIt": "Entendi", "finishEditing": "Finalizar Edição", "editColumn": "Editar {{column}}" };
2
+ const actions = { "save": "Salvar", "cancel": "Cancelar", "confirm": "Confirmar", "delete": "Excluir", "edit": "Editar", "create": "Criar", "add": "Adicionar", "remove": "Remover", "close": "Fechar", "back": "Voltar", "next": "Próximo", "previous": "Anterior", "continue": "Continuar", "submit": "Enviar", "send": "Enviar", "search": "Buscar", "filter": "Filtrar", "clear": "Limpar", "reset": "Redefinir", "reload": "Recarregar", "refresh": "Atualizar", "apply": "Aplicar", "export": "Exportar", "import": "Importar", "download": "Baixar", "upload": "Enviar arquivo", "duplicate": "Duplicar", "select": "Selecionar", "selectAll": "Selecionar tudo", "deselectAll": "Desmarcar tudo", "viewDetails": "Visualizar detalhes", "activate": "Ativar", "deactivate": "Inativar", "viewMore": "Ver mais", "viewLess": "Ver menos", "tryAgain": "Tentar novamente", "discardChanges": "Descartar alterações", "keepEditing": "Continuar editando", "yes": "Sim", "no": "Não", "ok": "Ok", "gotIt": "Entendi", "finishEditing": "Finalizar Edição", "editColumn": "Editar {{column}}", "moreOptions": "Mais opções" };
3
3
  const colorSwatch = { "noCode": "Cor sem código cadastrado" };
4
4
  const controlledDrawer = { "resizeHandle": "Arraste para ajustar a largura" };
5
5
  const controlledSelect = { "loadingOptions": "Carregando opções", "noDataToShow": "Não há dados para mostrar", "moreItems": "+{{count}}" };
6
- const controlledTabs = { "renameTab": "Renomear aba", "tabDisabled": "Esta aba está desabilitada", "enableTab": "Habilitar aba", "mustKeepOneEnabled": "É necessário manter ao menos uma aba habilitada", "disableTab": "Desabilitar tab", "enableTabShort": "Habilitar tab" };
6
+ const controlledTabs = { "renameTab": "Renomear aba", "tabDisabled": "Esta aba está desabilitada", "enableTab": "Habilitar aba", "mustKeepOneEnabled": "É necessário manter ao menos uma aba habilitada", "disableTab": "Desabilitar tab", "enableTabShort": "Habilitar tab", "scrollLeft": "Rolar abas para a esquerda", "scrollRight": "Rolar abas para a direita" };
7
7
  const createTask = { "newTask": "Nova tarefa", "createTask": "Criar Tarefa", "newTaskTitle": "Nova Tarefa", "taskName": "Título", "createdSuccess": "Tarefa criada com sucesso para {{date}}", "taskNamePlaceholder": "Qual é a tarefa?", "taskType": "Tipo de Tarefa", "deadline": "Prazo", "description": "Descrição", "descriptionPlaceholder": "Adicione uma descrição...", "assignees": "Responsáveis", "saveTask": "Gravar Tarefa", "cancel": "Cancelar", "createdSuccessNoDate": "Tarefa criada com sucesso", "titleRequired": "O título é obrigatório", "taskTypeRequired": "O tipo de tarefa é obrigatório", "sidebarTitle": "Detalhes", "rich": { "bold": "Negrito", "italic": "Itálico", "strikethrough": "Tachado", "link": "Link", "bulletList": "Lista com marcador", "numberedList": "Lista numerada", "quote": "Citação", "indent": "Aumentar recuo", "outdent": "Diminuir recuo", "textColor": "Cor do texto", "colors": { "default": "Padrão", "brand": "Roxo", "info": "Azul", "success": "Verde", "warning": "Âmbar", "danger": "Vermelho", "accent": "Rosa", "secondary": "Turquesa", "muted": "Cinza" } }, "newTaskSubtitle": "Defina o responsável e o prazo", "createError": "Não foi possível criar a tarefa", "requiredHint": "Informe o título e o tipo de tarefa para gravar", "deadlinePlaceholder": "Selecionar data" };
8
- const dataTable = { "empty": "Nenhum registro encontrado", "error": "Não conseguimos carregar esta lista", "columns": "Colunas", "viewList": "Lista", "viewCards": "Cards", "reorderColumn": "Reordenar coluna", "restoreDefaultOrder": "Restaurar ordem padrão", "resizeColumn": "Redimensionar coluna", "restoreDefaultWidths": "Restaurar largura padrão", "viewGrouped": "Agrupamento", "viewKanban": "Kanban", "addRow": "Adicionar linha", "removeRow": "Remover linha", "editCell": "Editar", "save": "Salvar", "fillHandle": "Arraste para preencher", "editMode": { "enter": "Editar em planilha", "exit": "Sair da edição", "inactiveHint": "Ativa a edição em célula: navegação por teclado, seleção e preenchimento por arraste", "activeHint": "Edição em célula ativa. O clique na linha volta a abrir o registro quando você sair" }, "bulkEdit": { "title": "Editar em massa", "subtitle": "Escolha o campo, o novo valor e a quais itens aplicar.", "open": "Editar em massa", "hint": "Aplica um mesmo valor a vários itens de uma vez", "field": "Campo", "newValue": "Novo valor", "scopeLabel": "Aplicar a", "scopeLoaded": "Todos os carregados", "scopePicked": "Escolher itens", "searchRows": "Buscar na lista", "noRowsFound": "Nenhum item corresponde à busca.", "selectAll_one": "Selecionar o item visível", "selectAll_other": "Selecionar os {{count}} visíveis", "confirm_one": "Aplicar a {{count}} item", "confirm_other": "Aplicar a {{count}} itens", "confirmEmpty": "Selecione os itens", "subtitlePerItem": "Escolha os campos e ajuste o valor de cada item; só o que mudou será salvo.", "modeLabel": "Como aplicar", "modeSame": "Mesmo valor", "modePerItem": "Valores por item", "fields": "Campos", "confirmChanges_one": "Aplicar {{count}} alteração", "confirmChanges_other": "Aplicar {{count}} alterações", "confirmNoChanges": "Nenhuma alteração", "pickFieldsHint": "Selecione ao menos um campo para editar por item.", "noTargets": "Nenhum item no alcance escolhido.", "perItemHint": "Altere apenas as células desejadas. As demais permanecem como estão.", "itemColumn": "Item" } };
8
+ const dataTable = { "empty": "Nenhum registro encontrado", "error": "Não conseguimos carregar esta lista", "columns": "Colunas", "viewList": "Lista", "viewCards": "Cards", "reorderColumn": "Reordenar coluna", "restoreDefaultOrder": "Restaurar ordem padrão", "resizeColumn": "Redimensionar coluna", "restoreDefaultWidths": "Restaurar largura padrão", "viewGrouped": "Agrupamento", "viewKanban": "Kanban", "addRow": "Adicionar linha", "removeRow": "Remover linha", "editCell": "Editar", "save": "Salvar", "fillHandle": "Arraste para preencher", "editMode": { "enter": "Editar em planilha", "exit": "Sair da edição", "inactiveHint": "Ativa a edição em célula: navegação por teclado, seleção e preenchimento por arraste", "activeHint": "Edição em célula ativa. O clique na linha volta a abrir o registro quando você sair" }, "bulkEdit": { "title": "Editar em massa", "subtitle": "Escolha o campo, o novo valor e a quais itens aplicar.", "open": "Editar em massa", "hint": "Aplica um mesmo valor a vários itens de uma vez", "field": "Campo", "newValue": "Novo valor", "scopeLabel": "Aplicar a", "scopeLoaded": "Todos os carregados", "scopePicked": "Escolher itens", "searchRows": "Buscar na lista", "noRowsFound": "Nenhum item corresponde à busca.", "selectAll_one": "Selecionar o item visível", "selectAll_other": "Selecionar os {{count}} visíveis", "confirm_one": "Aplicar a {{count}} item", "confirm_other": "Aplicar a {{count}} itens", "confirmEmpty": "Selecione os itens", "subtitlePerItem": "Escolha os campos e ajuste o valor de cada item; só o que mudou será salvo.", "modeLabel": "Como aplicar", "modeSame": "Mesmo valor", "modePerItem": "Valores por item", "fields": "Campos", "confirmChanges_one": "Aplicar {{count}} alteração", "confirmChanges_other": "Aplicar {{count}} alterações", "confirmNoChanges": "Nenhuma alteração", "pickFieldsHint": "Selecione ao menos um campo para editar por item.", "noTargets": "Nenhum item no alcance escolhido.", "perItemHint": "Altere apenas as células desejadas. As demais permanecem como estão.", "itemColumn": "Item" }, "expandRow": "Expandir linha", "collapseRow": "Recolher linha" };
9
9
  const dateRangePicker = { "selectPeriod": "Selecione um período", "nowSelectEndDate": "Agora selecione a data final" };
10
10
  const dates = { "today": "Hoje", "yesterday": "Ontem", "tomorrow": "Amanhã", "thisWeek": "Esta semana", "lastWeek": "Semana passada", "thisMonth": "Este mês", "lastMonth": "Mês passado", "selectStartDate": "Selecione a data inicial", "selectEndDate": "Selecione a data final", "clearSelection": "Limpar Seleção", "clearPeriod": "Limpar Período Selecionado", "periodSelectedSuccess": "Período selecionado com sucesso" };
11
11
  const detailsTable = { "size": "Tam", "quantity": "Qtd" };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umodeapporg/ui",
3
- "version": "0.27.0",
3
+ "version": "0.29.0",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -419,7 +419,6 @@ button:disabled,
419
419
  font-weight: normal;
420
420
  font-style: normal;
421
421
  font-size: 1.5rem;
422
- display: inline-block;
423
422
  line-height: 1;
424
423
  text-transform: none;
425
424
  letter-spacing: normal;
@@ -432,6 +431,13 @@ button:disabled,
432
431
  font-feature-settings: 'liga';
433
432
  }
434
433
 
434
+ /* Apart from the rule above and with no specificity, because this file comes after the Tailwind
435
+ layers: on the same footing, `display` here beat `hidden` and every responsive display class a
436
+ host put on a symbol. The face stays where it is, or preflight would reset it on a <button>. */
437
+ :where(.material-symbols) {
438
+ display: inline-block;
439
+ }
440
+
435
441
  /* Set by `watchIconFont` while the icon face is not usable: the glyph box keeps its size,
436
442
  and the ligature name never shows up as text in the layout. */
437
443
  :root[data-icon-font='loading'] .material-symbols,
@@ -31,21 +31,28 @@
31
31
 
32
32
  import plugin from 'tailwindcss/plugin';
33
33
 
34
+ /**
35
+ * The prefixed twin goes first. Lightning CSS (the minifier of Next's Turbopack build) drops a
36
+ * standard declaration followed by its prefixed twin in the same rule, and Chrome ignores the
37
+ * prefixed one: the surface turns translucent without blur and nothing reports it. In this order
38
+ * Autoprefixer may also remove the twin, which is right: it does so when the host's browserslist
39
+ * no longer needs it, and adds it back when it does.
40
+ */
41
+ const backdrop = (value) => ({ WebkitBackdropFilter: value, backdropFilter: value });
42
+
34
43
  const material = ({ alphaVar, blur, blurSm, saturateVar, shadow, highlightAlpha }) => ({
35
44
  backgroundColor: `rgb(var(--glass-bg) / var(${alphaVar}))`,
36
45
  // The sheen sits ON TOP of the base fill, so it only adds opacity and can never
37
46
  // undercut the validated text contrast.
38
47
  backgroundImage: 'var(--glass-sheen)',
39
- backdropFilter: `blur(${blur}) saturate(var(${saturateVar}))`,
40
- WebkitBackdropFilter: `blur(${blur}) saturate(var(${saturateVar}))`,
48
+ ...backdrop(`blur(${blur}) saturate(var(${saturateVar}))`),
41
49
  borderWidth: '1px',
42
50
  borderStyle: 'solid',
43
51
  borderColor: 'rgb(var(--glass-edge) / var(--glass-edge-alpha))',
44
52
  boxShadow: `var(${shadow}), inset 0 1px 0 0 rgb(var(--glass-highlight) / ${highlightAlpha})`,
45
53
 
46
54
  '@media (max-width: 639px)': {
47
- backdropFilter: `blur(${blurSm}) saturate(var(${saturateVar}))`,
48
- WebkitBackdropFilter: `blur(${blurSm}) saturate(var(${saturateVar}))`,
55
+ ...backdrop(`blur(${blurSm}) saturate(var(${saturateVar}))`),
49
56
  },
50
57
 
51
58
  // No backdrop-filter (older Firefox, some embedded webviews): translucency without blur
@@ -59,8 +66,7 @@ const material = ({ alphaVar, blur, blurSm, saturateVar, shadow, highlightAlpha
59
66
  '@media (prefers-reduced-transparency: reduce)': {
60
67
  backgroundColor: 'rgb(var(--color-surface-overlay))',
61
68
  backgroundImage: 'none',
62
- backdropFilter: 'none',
63
- WebkitBackdropFilter: 'none',
69
+ ...backdrop('none'),
64
70
  },
65
71
  });
66
72
 
@@ -97,16 +103,13 @@ export default plugin(({ addUtilities }) => {
97
103
  // ever sits on it; the blur is what separates the dialog from the page underneath.
98
104
  '.glass-scrim': {
99
105
  backgroundColor: 'var(--overlay)',
100
- backdropFilter: 'blur(4px) saturate(105%)',
101
- WebkitBackdropFilter: 'blur(4px) saturate(105%)',
106
+ ...backdrop('blur(4px) saturate(105%)'),
102
107
  '@media (max-width: 639px)': {
103
- backdropFilter: 'blur(2px)',
104
- WebkitBackdropFilter: 'blur(2px)',
108
+ ...backdrop('blur(2px)'),
105
109
  },
106
110
  '@media (prefers-reduced-transparency: reduce)': {
107
111
  backgroundColor: 'var(--overlay-strong)',
108
- backdropFilter: 'none',
109
- WebkitBackdropFilter: 'none',
112
+ ...backdrop('none'),
110
113
  },
111
114
  },
112
115
 
@@ -115,8 +118,7 @@ export default plugin(({ addUtilities }) => {
115
118
  // material and a hairline, so a 32px pill does not carry a dialog's elevation.
116
119
  '.glass-chip': {
117
120
  backgroundColor: 'rgb(var(--glass-bg) / 0.78)',
118
- backdropFilter: 'blur(10px) saturate(var(--glass-saturate))',
119
- WebkitBackdropFilter: 'blur(10px) saturate(var(--glass-saturate))',
121
+ ...backdrop('blur(10px) saturate(var(--glass-saturate))'),
120
122
  borderWidth: '1px',
121
123
  borderStyle: 'solid',
122
124
  borderColor: 'rgb(var(--glass-edge) / var(--glass-edge-alpha))',
@@ -125,8 +127,7 @@ export default plugin(({ addUtilities }) => {
125
127
  },
126
128
  '@media (prefers-reduced-transparency: reduce)': {
127
129
  backgroundColor: 'rgb(var(--color-surface))',
128
- backdropFilter: 'none',
129
- WebkitBackdropFilter: 'none',
130
+ ...backdrop('none'),
130
131
  },
131
132
  },
132
133
 
@@ -134,34 +135,28 @@ export default plugin(({ addUtilities }) => {
134
135
  // own. Compose it with any tinted token when the surface is not neutral, e.g. a status
135
136
  // badge floating on a product photo: `glass-tint bg-warning-soft/95`.
136
137
  '.glass-tint': {
137
- backdropFilter: 'blur(10px) saturate(var(--glass-saturate))',
138
- WebkitBackdropFilter: 'blur(10px) saturate(var(--glass-saturate))',
138
+ ...backdrop('blur(10px) saturate(var(--glass-saturate))'),
139
139
  '@media (max-width: 639px)': {
140
- backdropFilter: 'blur(6px) saturate(var(--glass-saturate))',
141
- WebkitBackdropFilter: 'blur(6px) saturate(var(--glass-saturate))',
140
+ ...backdrop('blur(6px) saturate(var(--glass-saturate))'),
142
141
  },
143
142
  '@media (prefers-reduced-transparency: reduce)': {
144
- backdropFilter: 'none',
145
- WebkitBackdropFilter: 'none',
143
+ ...backdrop('none'),
146
144
  },
147
145
  },
148
146
 
149
147
  // A thin veil that dims content underneath while something loads. Barely any blur on
150
148
  // purpose: it must read as "busy", not as a floating panel.
151
149
  '.glass-veil': {
152
- backdropFilter: 'blur(2px) saturate(100%)',
153
- WebkitBackdropFilter: 'blur(2px) saturate(100%)',
150
+ ...backdrop('blur(2px) saturate(100%)'),
154
151
  '@media (prefers-reduced-transparency: reduce)': {
155
- backdropFilter: 'none',
156
- WebkitBackdropFilter: 'none',
152
+ ...backdrop('none'),
157
153
  },
158
154
  },
159
155
 
160
156
  // Opt out on a surface that inherited glass from a shared component.
161
157
  '.glass-none': {
162
158
  backgroundColor: 'rgb(var(--color-surface))',
163
- backdropFilter: 'none',
164
- WebkitBackdropFilter: 'none',
159
+ ...backdrop('none'),
165
160
  },
166
161
  });
167
162
  });