@giddaa-housing/ui 3.1.0 → 3.3.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 (69) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -3
  3. package/css/theme.css +4 -1
  4. package/dist/accordion.js +3 -2
  5. package/dist/activity-timeline.js +2 -2
  6. package/dist/alert.js +4 -4
  7. package/dist/breadcrumb.js +3 -3
  8. package/dist/button.js +8 -4
  9. package/dist/calendar.js +3 -3
  10. package/dist/call-card.js +1 -1
  11. package/dist/carousel.js +3 -3
  12. package/dist/chart.js +1 -1
  13. package/dist/chat.js +1 -1
  14. package/dist/checkbox.js +2 -2
  15. package/dist/combobox.js +6 -6
  16. package/dist/cta.js +3 -3
  17. package/dist/currency-selector.d.ts +10 -8
  18. package/dist/currency-selector.js +247 -28
  19. package/dist/data-table.js +2 -2
  20. package/dist/date-picker.js +6 -6
  21. package/dist/dialog.js +2 -2
  22. package/dist/dropdown-menu.js +20 -20
  23. package/dist/dropzone.js +1 -1
  24. package/dist/editorial-card.d.ts +20 -11
  25. package/dist/editorial-card.js +67 -2
  26. package/dist/file-upload.js +1 -1
  27. package/dist/filter.js +1 -1
  28. package/dist/footer.d.ts +8 -3
  29. package/dist/footer.js +16 -5
  30. package/dist/icons.d.ts +93 -0
  31. package/dist/icons.js +905 -0
  32. package/dist/infinite-scroll.js +1 -1
  33. package/dist/input-otp.js +2 -2
  34. package/dist/kpi-card.js +1 -1
  35. package/dist/match.js +1 -1
  36. package/dist/media-gallery-hero.js +4 -4
  37. package/dist/media-player.js +59 -48
  38. package/dist/message.js +1 -1
  39. package/dist/mobile-sidebar.js +4 -4
  40. package/dist/multi-step-form.js +2 -2
  41. package/dist/number-input.js +3 -3
  42. package/dist/pagination.js +4 -4
  43. package/dist/password-input.js +1 -1
  44. package/dist/phone-input.js +4 -4
  45. package/dist/photo-gallery.js +3 -3
  46. package/dist/price-tag.js +1 -1
  47. package/dist/property-listing-card.js +1 -1
  48. package/dist/rich-text-editor.js +4 -4
  49. package/dist/scroll-spy.d.ts +61 -0
  50. package/dist/scroll-spy.js +295 -0
  51. package/dist/search-input.js +1 -1
  52. package/dist/select.js +6 -6
  53. package/dist/sheet.js +2 -2
  54. package/dist/sidebar.js +1 -1
  55. package/dist/stepper.js +2 -2
  56. package/dist/styles.css +239 -26
  57. package/dist/tabs.d.ts +13 -1
  58. package/dist/tabs.js +9 -2
  59. package/dist/tag.js +1 -1
  60. package/dist/testimonial-block.js +1 -1
  61. package/dist/theme-switcher.d.ts +31 -0
  62. package/dist/theme-switcher.js +78 -0
  63. package/dist/time-picker.js +2 -2
  64. package/dist/toast.d.ts +38 -10
  65. package/dist/toast.js +56 -52
  66. package/dist/top-navbar.js +3 -3
  67. package/dist/video-player-dialog.d.ts +57 -0
  68. package/dist/video-player-dialog.js +188 -0
  69. package/package.json +17 -2
@@ -1,13 +1,20 @@
1
1
  "use client";
2
+ import { ArrowRight, Play, Star } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
4
5
  import { buttonVariants } from "./button.js";
5
- import { ArrowRight, Play } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
8
8
  import { useRender } from "@base-ui/react/use-render";
9
9
  import { cva } from "class-variance-authority";
10
10
  //#region src/editorial-card.tsx
11
+ const STAR_INDEXES = [
12
+ 0,
13
+ 1,
14
+ 2,
15
+ 3,
16
+ 4
17
+ ];
11
18
  const editorialCardVariants = cva("group/editorial-card relative flex w-full min-w-0 flex-col overflow-hidden rounded-2xl border border-line-subtle bg-surface text-fg-primary transition-[background-color,border-color,box-shadow]", {
12
19
  variants: { size: {
13
20
  sm: "gap-2.5 p-4",
@@ -119,6 +126,64 @@ function EditorialCardAttribution({ authorName, brand, className, prefix = "By",
119
126
  state: { slot: "editorial-card-attribution" }
120
127
  });
121
128
  }
129
+ function clampRating(rating) {
130
+ return Math.min(5, Math.max(0, rating));
131
+ }
132
+ function formatRating(rating) {
133
+ return clampRating(rating).toFixed(1);
134
+ }
135
+ function formatReviewSource({ reviewLabel, source, totalReviews }) {
136
+ const label = reviewLabel ?? (totalReviews === 1 ? "review" : "reviews");
137
+ if (source && typeof totalReviews === "number") return /* @__PURE__ */ jsxs(Fragment, { children: [
138
+ totalReviews.toLocaleString(),
139
+ " ",
140
+ source,
141
+ " ",
142
+ label
143
+ ] });
144
+ if (source) return source;
145
+ if (typeof totalReviews === "number") return `${totalReviews.toLocaleString()} ${label}`;
146
+ return null;
147
+ }
148
+ function EditorialCardRating({ className, rating, render, reviewLabel, showScore = true, source, totalReviews, ...props }) {
149
+ const formattedRating = formatRating(rating);
150
+ const roundedRating = Math.round(clampRating(rating));
151
+ const reviewSource = formatReviewSource({
152
+ reviewLabel,
153
+ source,
154
+ totalReviews
155
+ });
156
+ return useRender({
157
+ defaultTagName: "div",
158
+ props: mergeProps({
159
+ className: cn("flex min-w-0 flex-wrap items-center gap-gdt-sm text-fg-primary", className),
160
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
161
+ showScore ? /* @__PURE__ */ jsx("span", {
162
+ className: "font-bold text-gdt-sm group-data-[size=md]/editorial-card:text-gdt-md group-data-[size=lg]/editorial-card:text-gdt-lg",
163
+ children: formattedRating
164
+ }) : null,
165
+ /* @__PURE__ */ jsx("span", {
166
+ "aria-label": `${formattedRating} out of 5`,
167
+ className: cn("inline-flex shrink-0 items-center gap-0.5 text-surface-accent", "[&>svg]:size-4 group-data-[size=md]/editorial-card:[&>svg]:size-4.5 group-data-[size=lg]/editorial-card:[&>svg]:size-5"),
168
+ role: "img",
169
+ children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(Star, {
170
+ "aria-hidden": "true",
171
+ fill: index < roundedRating ? "currentColor" : "none"
172
+ }, index))
173
+ }),
174
+ reviewSource ? /* @__PURE__ */ jsx("span", {
175
+ className: "text-gdt-xs text-fg-secondary group-data-[size=lg]/editorial-card:text-gdt-sm",
176
+ children: reviewSource
177
+ }) : null
178
+ ] })
179
+ }, props),
180
+ render,
181
+ state: {
182
+ rating: formattedRating,
183
+ slot: "editorial-card-rating"
184
+ }
185
+ });
186
+ }
122
187
  function EditorialCardExcerpt({ className, render, ...props }) {
123
188
  return useRender({
124
189
  defaultTagName: "p",
@@ -142,4 +207,4 @@ function EditorialCardLink({ className, render, children, ...props }) {
142
207
  });
143
208
  }
144
209
  //#endregion
145
- export { EditorialCard, EditorialCardAttribution, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, EditorialCardTitle, editorialCardVariants };
210
+ export { EditorialCard, EditorialCardAttribution, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, EditorialCardRating, EditorialCardTitle, editorialCardVariants };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { File, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { CircularProgress, Progress, ProgressValue } from "./progress.js";
4
- import { File, X } from "lucide-react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { createContext, useContext } from "react";
7
7
  //#region src/file-upload.tsx
package/dist/filter.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { Plus, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Button } from "./button.js";
4
5
  import { Input } from "./input.js";
5
6
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select.js";
6
7
  import { Field, FieldError } from "./field.js";
7
- import { Plus, X } from "lucide-react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import * as React from "react";
10
10
  //#region src/filter.tsx
package/dist/footer.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { n as InputSize } from "./input-CfoEJ8A6.js";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
+ import { VariantProps } from "class-variance-authority";
3
4
  import * as React from "react";
4
5
  //#region src/footer.d.ts
5
6
  type FooterRootProps = React.ComponentProps<"footer"> & {
@@ -20,10 +21,14 @@ declare function FooterSection({ className, ...props }: React.ComponentProps<"di
20
21
  declare function FooterSectionTitle({ className, ...props }: React.ComponentProps<"h3">): React.JSX.Element;
21
22
  declare function FooterLinkList({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
22
23
  declare function FooterLinkItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
23
- type FooterLinkProps = useRender.ComponentProps<"a"> & {
24
+ declare const footerLinkVariants: (props?: ({
25
+ variant?: "brand" | "default" | null | undefined;
26
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
27
+ type FooterLinkVariant = NonNullable<VariantProps<typeof footerLinkVariants>["variant"]>;
28
+ type FooterLinkProps = useRender.ComponentProps<"a"> & VariantProps<typeof footerLinkVariants> & {
24
29
  showArrow?: boolean;
25
30
  };
26
- declare function FooterLink({ className, children, render, showArrow, ...props }: FooterLinkProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
31
+ declare function FooterLink({ className, children, render, showArrow, variant, ...props }: FooterLinkProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
27
32
  declare function FooterContactGrid({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
28
33
  declare function FooterContact({ className, ...props }: React.ComponentProps<"address">): React.JSX.Element;
29
34
  declare function FooterContactTitle({ className, ...props }: React.ComponentProps<"h3">): React.JSX.Element;
@@ -39,4 +44,4 @@ declare function FooterNewsletterControl({ className, children, size, ...props }
39
44
  declare function FooterBottom({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
40
45
  declare function FooterLegalLinks({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
41
46
  //#endregion
42
- export { FooterBody, FooterBottom, FooterContact, FooterContactGrid, FooterContactTitle, FooterCta, FooterCtaActions, FooterCtaContent, FooterCtaDescription, FooterCtaTitle, FooterDescription, FooterHeader, FooterLegalLinks, FooterLink, FooterLinkItem, FooterLinkList, type FooterLinkProps, FooterNav, FooterNewsletter, FooterNewsletterControl, FooterNewsletterDescription, FooterNewsletterTitle, FooterRoot, type FooterRootProps, FooterSection, FooterSectionTitle, FooterSocialItem, FooterSocialLink, FooterSocialList, FooterTitle };
47
+ export { FooterBody, FooterBottom, FooterContact, FooterContactGrid, FooterContactTitle, FooterCta, FooterCtaActions, FooterCtaContent, FooterCtaDescription, FooterCtaTitle, FooterDescription, FooterHeader, FooterLegalLinks, FooterLink, FooterLinkItem, FooterLinkList, type FooterLinkProps, type FooterLinkVariant, FooterNav, FooterNewsletter, FooterNewsletterControl, FooterNewsletterDescription, FooterNewsletterTitle, FooterRoot, type FooterRootProps, FooterSection, FooterSectionTitle, FooterSocialItem, FooterSocialLink, FooterSocialList, FooterTitle, footerLinkVariants };
package/dist/footer.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use client";
2
+ import { ChevronRight } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Button } from "./button.js";
4
5
  import { Input } from "./input.js";
5
- import { ChevronRight } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
8
8
  import { useRender } from "@base-ui/react/use-render";
9
+ import { cva } from "class-variance-authority";
9
10
  //#region src/footer.tsx
10
11
  function FooterRoot({ className, containerClassName, children, ...props }) {
11
12
  return /* @__PURE__ */ jsx("footer", {
@@ -117,18 +118,28 @@ function FooterLinkItem({ className, ...props }) {
117
118
  ...props
118
119
  });
119
120
  }
120
- function FooterLink({ className, children, render, showArrow = false, ...props }) {
121
+ const footerLinkVariants = cva("inline-flex items-center gap-gdt-sm underline-offset-4 transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2", {
122
+ variants: { variant: {
123
+ default: "text-fg-secondary hover:text-fg-brand",
124
+ brand: "text-fg-brand"
125
+ } },
126
+ defaultVariants: { variant: "default" }
127
+ });
128
+ function FooterLink({ className, children, render, showArrow = false, variant = "default", ...props }) {
121
129
  return useRender({
122
130
  defaultTagName: "a",
123
131
  props: mergeProps({
124
- className: cn("inline-flex items-center gap-gdt-sm text-fg-secondary underline-offset-4 transition-colors hover:text-fg-brand hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2", className),
132
+ className: cn(footerLinkVariants({ variant }), className),
125
133
  children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", { children }), showArrow && /* @__PURE__ */ jsx(ChevronRight, {
126
134
  "aria-hidden": "true",
127
135
  className: "size-3.5"
128
136
  })] })
129
137
  }, props),
130
138
  render,
131
- state: { slot: "footer-link" }
139
+ state: {
140
+ slot: "footer-link",
141
+ variant
142
+ }
132
143
  });
133
144
  }
134
145
  function FooterContactGrid({ className, ...props }) {
@@ -229,4 +240,4 @@ function FooterLegalLinks({ className, ...props }) {
229
240
  });
230
241
  }
231
242
  //#endregion
232
- export { FooterBody, FooterBottom, FooterContact, FooterContactGrid, FooterContactTitle, FooterCta, FooterCtaActions, FooterCtaContent, FooterCtaDescription, FooterCtaTitle, FooterDescription, FooterHeader, FooterLegalLinks, FooterLink, FooterLinkItem, FooterLinkList, FooterNav, FooterNewsletter, FooterNewsletterControl, FooterNewsletterDescription, FooterNewsletterTitle, FooterRoot, FooterSection, FooterSectionTitle, FooterSocialItem, FooterSocialLink, FooterSocialList, FooterTitle };
243
+ export { FooterBody, FooterBottom, FooterContact, FooterContactGrid, FooterContactTitle, FooterCta, FooterCtaActions, FooterCtaContent, FooterCtaDescription, FooterCtaTitle, FooterDescription, FooterHeader, FooterLegalLinks, FooterLink, FooterLinkItem, FooterLinkList, FooterNav, FooterNewsletter, FooterNewsletterControl, FooterNewsletterDescription, FooterNewsletterTitle, FooterRoot, FooterSection, FooterSectionTitle, FooterSocialItem, FooterSocialLink, FooterSocialList, FooterTitle, footerLinkVariants };
@@ -0,0 +1,93 @@
1
+ import { ReactElement, ReactNode, SVGProps } from "react";
2
+ //#region src/icons.d.ts
3
+ type IconProps = Omit<SVGProps<SVGSVGElement>, "children"> & {
4
+ /** Square edge length applied to `width` and `height`. Defaults to `24`. */
5
+ size?: number | string;
6
+ };
7
+ type IconComponent = (props: IconProps) => ReactElement;
8
+ /**
9
+ * Bare SVG frame shared by every glyph. Exported so apps can draw a one-off
10
+ * icon that inherits the same sizing, stroke, and colour behaviour.
11
+ */
12
+ declare function Icon({ name, size, strokeWidth, children, ...props }: IconProps & {
13
+ name?: string;
14
+ children: ReactNode;
15
+ }): import("react").JSX.Element;
16
+ declare function AlignCenter(props: IconProps): import("react").JSX.Element;
17
+ declare function AlignJustify(props: IconProps): import("react").JSX.Element;
18
+ declare function AlignLeft(props: IconProps): import("react").JSX.Element;
19
+ declare function AlignRight(props: IconProps): import("react").JSX.Element;
20
+ declare function ArrowDown(props: IconProps): import("react").JSX.Element;
21
+ declare function ArrowRight(props: IconProps): import("react").JSX.Element;
22
+ declare function ArrowUp(props: IconProps): import("react").JSX.Element;
23
+ declare function ArrowUpRight(props: IconProps): import("react").JSX.Element;
24
+ declare function Baseline(props: IconProps): import("react").JSX.Element;
25
+ declare function Bold(props: IconProps): import("react").JSX.Element;
26
+ declare function Calendar(props: IconProps): import("react").JSX.Element;
27
+ declare function Captions(props: IconProps): import("react").JSX.Element;
28
+ declare function CaptionsOff(props: IconProps): import("react").JSX.Element;
29
+ declare function Check(props: IconProps): import("react").JSX.Element;
30
+ declare function CheckCheck(props: IconProps): import("react").JSX.Element;
31
+ declare function ChevronDown(props: IconProps): import("react").JSX.Element;
32
+ declare function ChevronLeft(props: IconProps): import("react").JSX.Element;
33
+ declare function ChevronRight(props: IconProps): import("react").JSX.Element;
34
+ declare function ChevronUp(props: IconProps): import("react").JSX.Element;
35
+ declare function ChevronsUpDown(props: IconProps): import("react").JSX.Element;
36
+ declare function Clock(props: IconProps): import("react").JSX.Element;
37
+ declare function Code2(props: IconProps): import("react").JSX.Element;
38
+ declare function Eye(props: IconProps): import("react").JSX.Element;
39
+ declare function EyeOff(props: IconProps): import("react").JSX.Element;
40
+ declare function File(props: IconProps): import("react").JSX.Element;
41
+ declare function FileText(props: IconProps): import("react").JSX.Element;
42
+ declare function Fullscreen(props: IconProps): import("react").JSX.Element;
43
+ declare function Image(props: IconProps): import("react").JSX.Element;
44
+ declare function Info(props: IconProps): import("react").JSX.Element;
45
+ declare function Italic(props: IconProps): import("react").JSX.Element;
46
+ declare function Link2(props: IconProps): import("react").JSX.Element;
47
+ declare function List(props: IconProps): import("react").JSX.Element;
48
+ declare function ListOrdered(props: IconProps): import("react").JSX.Element;
49
+ declare function ListVideo(props: IconProps): import("react").JSX.Element;
50
+ declare function Loader(props: IconProps): import("react").JSX.Element;
51
+ declare function Loader2(props: IconProps): import("react").JSX.Element;
52
+ declare function Maximize(props: IconProps): import("react").JSX.Element;
53
+ declare function Maximize2(props: IconProps): import("react").JSX.Element;
54
+ declare function Menu(props: IconProps): import("react").JSX.Element;
55
+ declare function Mic(props: IconProps): import("react").JSX.Element;
56
+ declare function MicOff(props: IconProps): import("react").JSX.Element;
57
+ declare function Minimize(props: IconProps): import("react").JSX.Element;
58
+ declare function Minimize2(props: IconProps): import("react").JSX.Element;
59
+ declare function Minus(props: IconProps): import("react").JSX.Element;
60
+ declare function Monitor(props: IconProps): import("react").JSX.Element;
61
+ declare function Moon(props: IconProps): import("react").JSX.Element;
62
+ declare function MoreHorizontal(props: IconProps): import("react").JSX.Element;
63
+ declare function Pause(props: IconProps): import("react").JSX.Element;
64
+ declare function Phone(props: IconProps): import("react").JSX.Element;
65
+ declare function PictureInPicture2(props: IconProps): import("react").JSX.Element;
66
+ declare function Pin(props: IconProps): import("react").JSX.Element;
67
+ declare function Play(props: IconProps): import("react").JSX.Element;
68
+ declare function Plus(props: IconProps): import("react").JSX.Element;
69
+ declare function Quote(props: IconProps): import("react").JSX.Element;
70
+ declare function Redo2(props: IconProps): import("react").JSX.Element;
71
+ declare function RefreshCcw(props: IconProps): import("react").JSX.Element;
72
+ declare function Repeat2(props: IconProps): import("react").JSX.Element;
73
+ declare function RotateCcw(props: IconProps): import("react").JSX.Element;
74
+ declare function RotateCw(props: IconProps): import("react").JSX.Element;
75
+ declare function Search(props: IconProps): import("react").JSX.Element;
76
+ declare function SearchX(props: IconProps): import("react").JSX.Element;
77
+ declare function Send(props: IconProps): import("react").JSX.Element;
78
+ declare function Settings(props: IconProps): import("react").JSX.Element;
79
+ declare function SlidersHorizontal(props: IconProps): import("react").JSX.Element;
80
+ declare function Star(props: IconProps): import("react").JSX.Element;
81
+ declare function Sun(props: IconProps): import("react").JSX.Element;
82
+ declare function TriangleAlert(props: IconProps): import("react").JSX.Element;
83
+ declare function Underline(props: IconProps): import("react").JSX.Element;
84
+ declare function Undo2(props: IconProps): import("react").JSX.Element;
85
+ declare function UploadCloud(props: IconProps): import("react").JSX.Element;
86
+ declare function User(props: IconProps): import("react").JSX.Element;
87
+ declare function Video(props: IconProps): import("react").JSX.Element;
88
+ declare function Volume1(props: IconProps): import("react").JSX.Element;
89
+ declare function Volume2(props: IconProps): import("react").JSX.Element;
90
+ declare function VolumeX(props: IconProps): import("react").JSX.Element;
91
+ declare function X(props: IconProps): import("react").JSX.Element;
92
+ //#endregion
93
+ export { AlignCenter, AlignJustify, AlignLeft, AlignRight, ArrowDown, ArrowRight, ArrowUp, ArrowUpRight, Baseline, Bold, Calendar, Captions, CaptionsOff, Check, CheckCheck, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, ChevronsUpDown, Clock, Code2, Eye, EyeOff, File, FileText, Fullscreen, Icon, type IconComponent, type IconProps, Image, Info, Italic, Link2, List, ListOrdered, ListVideo, Loader, Loader2, Maximize, Maximize2, Menu, Mic, MicOff, Minimize, Minimize2, Minus, Monitor, Moon, MoreHorizontal, Pause, Phone, PictureInPicture2, Pin, Play, Plus, Quote, Redo2, RefreshCcw, Repeat2, RotateCcw, RotateCw, Search, SearchX, Send, Settings, SlidersHorizontal, Star, Sun, TriangleAlert, Underline, Undo2, UploadCloud, User, Video, Volume1, Volume2, VolumeX, X };