@lablup/ui-common 0.1.0-alpha.2 → 0.1.0-alpha.21

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 (71) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/components/BaseCard/BaseCard.css +1 -1
  3. package/dist/assets/components/Button/Button.css +1 -1
  4. package/dist/assets/components/DataTable/DataTable.css +1 -1
  5. package/dist/assets/components/Drawer/Drawer.css +1 -1
  6. package/dist/assets/components/EmptyState/EmptyState.css +1 -1
  7. package/dist/assets/components/ErrorState/ErrorState.css +1 -1
  8. package/dist/assets/components/PageHeader/PageHeader.css +1 -1
  9. package/dist/assets/components/Select/Select.css +1 -0
  10. package/dist/assets/components/StatCard/StatCard.css +1 -1
  11. package/dist/assets/components/Tabs/Tabs.css +1 -1
  12. package/dist/assets/components/Tooltip/Tooltip.css +1 -1
  13. package/dist/components/DataTable/DataTable.d.ts +50 -6
  14. package/dist/components/DataTable/DataTable2.js +205 -133
  15. package/dist/components/DataTable/DataTable2.js.map +1 -1
  16. package/dist/components/Drawer/Drawer.d.ts +12 -1
  17. package/dist/components/Drawer/Drawer2.js +69 -51
  18. package/dist/components/Drawer/Drawer2.js.map +1 -1
  19. package/dist/components/EmptyState/EmptyState.d.ts +10 -3
  20. package/dist/components/EmptyState/EmptyState2.js +31 -48
  21. package/dist/components/EmptyState/EmptyState2.js.map +1 -1
  22. package/dist/components/EmptyState/index.d.ts +6 -1
  23. package/dist/components/ErrorState/ErrorState.d.ts +17 -4
  24. package/dist/components/ErrorState/ErrorState2.js +20 -23
  25. package/dist/components/ErrorState/ErrorState2.js.map +1 -1
  26. package/dist/components/ErrorState/index.d.ts +1 -1
  27. package/dist/components/PageHeader/PageHeader.d.ts +14 -1
  28. package/dist/components/PageHeader/PageHeader2.js +40 -24
  29. package/dist/components/PageHeader/PageHeader2.js.map +1 -1
  30. package/dist/components/Select/Select.d.ts +38 -0
  31. package/dist/components/Select/Select2.js +313 -0
  32. package/dist/components/Select/Select2.js.map +1 -0
  33. package/dist/components/Select/index.d.ts +2 -0
  34. package/dist/components/Select/index.js +2 -0
  35. package/dist/components/Skeleton/Skeleton.d.ts +11 -1
  36. package/dist/components/Skeleton/Skeleton2.js +8 -6
  37. package/dist/components/Skeleton/Skeleton2.js.map +1 -1
  38. package/dist/components/Skeleton/SkeletonCard.d.ts +3 -1
  39. package/dist/components/Skeleton/SkeletonCard2.js +13 -3
  40. package/dist/components/Skeleton/SkeletonCard2.js.map +1 -1
  41. package/dist/components/Skeleton/SkeletonChart2.js +5 -0
  42. package/dist/components/Skeleton/SkeletonChart2.js.map +1 -1
  43. package/dist/components/Skeleton/SkeletonRow.d.ts +3 -1
  44. package/dist/components/Skeleton/SkeletonRow2.js +9 -3
  45. package/dist/components/Skeleton/SkeletonRow2.js.map +1 -1
  46. package/dist/components/Skeleton/SkeletonText.d.ts +3 -1
  47. package/dist/components/Skeleton/SkeletonText2.js +7 -5
  48. package/dist/components/Skeleton/SkeletonText2.js.map +1 -1
  49. package/dist/components/StatCard/StatCard.d.ts +10 -1
  50. package/dist/components/StatCard/StatCard2.js +30 -30
  51. package/dist/components/StatCard/StatCard2.js.map +1 -1
  52. package/dist/components/Tabs/Tabs.d.ts +10 -23
  53. package/dist/components/Tabs/Tabs2.js +127 -146
  54. package/dist/components/Tabs/Tabs2.js.map +1 -1
  55. package/dist/components/Tabs/index.d.ts +2 -2
  56. package/dist/components/Tabs/index.js +2 -3
  57. package/dist/components/Tooltip/Tooltip.d.ts +15 -1
  58. package/dist/components/Tooltip/Tooltip2.js +77 -47
  59. package/dist/components/Tooltip/Tooltip2.js.map +1 -1
  60. package/dist/index.d.ts +1 -0
  61. package/dist/index.js +6 -6
  62. package/dist/styles/base.css +101 -10
  63. package/dist/styles/themes/orange-dark.css +3 -0
  64. package/dist/styles/themes/orange-light.css +6 -1
  65. package/package.json +1 -1
  66. package/dist/components/EmptyState/illustrations.d.ts +0 -51
  67. package/dist/components/EmptyState/illustrations.js +0 -571
  68. package/dist/components/EmptyState/illustrations.js.map +0 -1
  69. package/dist/components/Tabs/tabTags.d.ts +0 -9
  70. package/dist/components/Tabs/tabTags.js +0 -11
  71. package/dist/components/Tabs/tabTags.js.map +0 -1
@@ -1,5 +1,10 @@
1
1
  /**
2
2
  * EmptyState Component - Barrel Export
3
+ *
4
+ * The ten illustrations that used to ship here were one product's information
5
+ * architecture: chat, models, creations, benchmark, logs, statistics,
6
+ * schedule. No other consumer has a "creations" screen to draw for. A consumer
7
+ * passes its own artwork through `illustration` and keeps its own vocabulary.
3
8
  */
4
9
  export { EmptyState } from './EmptyState';
5
- export type { EmptyStateProps, EmptyStateAction, EmptyStateSecondaryAction, IllustrationType, } from './EmptyState';
10
+ export type { EmptyStateProps, EmptyStateAction, EmptyStateSecondaryAction, } from './EmptyState';
@@ -1,11 +1,24 @@
1
- export type ErrorType = "network" | "configuration" | "model" | "permission" | "generic";
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * How the error reads, not what it is about.
4
+ *
5
+ * This prop used to be a union of five names: network, configuration, model,
6
+ * permission, generic. Two of those, and "model" in particular, are one
7
+ * product's categories rather than anything a shared component can reason
8
+ * about, and all five resolved to three colours anyway: network and permission
9
+ * were the same amber, model and generic the same red. A consumer decides
10
+ * which of its own error categories reads as which tone.
11
+ */
12
+ export type ErrorTone = "danger" | "warning" | "accent";
2
13
  export interface ErrorAction {
3
14
  label: string;
4
15
  onClick: () => void;
5
16
  }
6
17
  export interface ErrorStateProps {
7
- /** Error type determines icon and default styling */
8
- type?: ErrorType;
18
+ /** How the error reads. Defaults to `danger`. */
19
+ tone?: ErrorTone;
20
+ /** Replaces the default alert icon. */
21
+ icon?: ReactNode;
9
22
  /** Error title - main heading */
10
23
  title: string;
11
24
  /** Detailed error message */
@@ -22,4 +35,4 @@ export interface ErrorStateProps {
22
35
  /**
23
36
  * ErrorState Component
24
37
  */
25
- export declare function ErrorState({ type, title, message, primaryAction, secondaryAction, className, showIcon, }: ErrorStateProps): import("react").JSX.Element;
38
+ export declare function ErrorState({ tone, icon, title, message, primaryAction, secondaryAction, className, showIcon, }: ErrorStateProps): import("react").JSX.Element;
@@ -4,56 +4,53 @@ import { AlertCircleIcon as t } from "../../icons/AlertCircleIcon.js";
4
4
  import { useCallback as n } from "react";
5
5
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
6
  //#region src/components/ErrorState/ErrorState.tsx
7
- function a(e) {
8
- return /* @__PURE__ */ r(t, { size: 48 });
9
- }
10
- function o({ type: t = "generic", title: o, message: s, primaryAction: c, secondaryAction: l, className: u = "", showIcon: d = !0 }) {
11
- let f = n(() => {
12
- c?.onClick();
13
- }, [c]), p = n(() => {
7
+ function a({ tone: a = "danger", icon: o, title: s, message: c, primaryAction: l, secondaryAction: u, className: d = "", showIcon: f = !0 }) {
8
+ let p = n(() => {
14
9
  l?.onClick();
15
- }, [l]), m = [
10
+ }, [l]), m = n(() => {
11
+ u?.onClick();
12
+ }, [u]), h = [
16
13
  "error-state",
17
- `error-state--${t}`,
18
- u
14
+ `error-state--${a}`,
15
+ d
19
16
  ].filter(Boolean).join(" ");
20
17
  return /* @__PURE__ */ i("div", {
21
- className: m,
18
+ className: h,
22
19
  role: "alert",
23
20
  "aria-live": "polite",
24
21
  children: [
25
- d && /* @__PURE__ */ r("div", {
22
+ f && /* @__PURE__ */ r("div", {
26
23
  className: "error-state__icon",
27
24
  "aria-hidden": "true",
28
- children: a(t)
25
+ children: o ?? /* @__PURE__ */ r(t, { size: 48 })
29
26
  }),
30
27
  /* @__PURE__ */ r("h2", {
31
28
  className: "error-state__title",
32
- children: o
29
+ children: s
33
30
  }),
34
31
  /* @__PURE__ */ r("p", {
35
32
  className: "error-state__message",
36
- children: s
33
+ children: c
37
34
  }),
38
- (c || l) && /* @__PURE__ */ i("div", {
35
+ (l || u) && /* @__PURE__ */ i("div", {
39
36
  className: "error-state__actions",
40
- children: [c && /* @__PURE__ */ r(e, {
37
+ children: [l && /* @__PURE__ */ r(e, {
41
38
  variant: "primary",
42
- onClick: f,
39
+ onClick: p,
43
40
  className: "error-state__action-btn error-state__action-btn--primary",
44
- children: c.label
45
- }), l && /* @__PURE__ */ r(e, {
41
+ children: l.label
42
+ }), u && /* @__PURE__ */ r(e, {
46
43
  variant: "secondary",
47
- onClick: p,
44
+ onClick: m,
48
45
  className: "error-state__action-btn error-state__action-btn--secondary",
49
- children: l.label
46
+ children: u.label
50
47
  })]
51
48
  })
52
49
  ]
53
50
  });
54
51
  }
55
52
  //#endregion
56
- export { o as ErrorState };
53
+ export { a as ErrorState };
57
54
 
58
55
  //# sourceMappingURL=ErrorState2.js.map
59
56
  import "../../assets/components/ErrorState/ErrorState.css";
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorState2.js","names":[],"sources":["../../../src/components/ErrorState/ErrorState.tsx"],"sourcesContent":["/**\n * ErrorState Component\n *\n * Unified error state component with recovery actions.\n * Provides consistent error presentation across all pages with actionable buttons.\n *\n * Features:\n * - Error type variants (network, configuration, model, permission, generic)\n * - Primary and secondary action buttons\n * - Accessible (ARIA attributes, focus management)\n * - Dark/light theme support\n */\n\nimport { useCallback } from \"react\";\nimport { AlertCircleIcon } from \"../../icons/AlertCircleIcon\";\nimport { Button } from \"../Button\";\nimport \"./ErrorState.css\";\n\nexport type ErrorType =\n \"network\" | \"configuration\" | \"model\" | \"permission\" | \"generic\";\n\nexport interface ErrorAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ErrorStateProps {\n /** Error type determines icon and default styling */\n type?: ErrorType;\n /** Error title - main heading */\n title: string;\n /** Detailed error message */\n message: string;\n /** Primary action button (e.g., Retry, Go to Settings) */\n primaryAction?: ErrorAction;\n /** Secondary action button (e.g., View Logs, Report Issue) */\n secondaryAction?: ErrorAction;\n /** Additional CSS classes */\n className?: string;\n /** Whether to show error icon */\n showIcon?: boolean;\n}\n\n/**\n * Get icon for error type\n */\nfunction getErrorIcon(_type: ErrorType): React.ReactNode {\n // All error types use the same AlertCircleIcon for now\n // Can be extended with different icons per type in the future\n return <AlertCircleIcon size={48} />;\n}\n\n/**\n * ErrorState Component\n */\nexport function ErrorState({\n type = \"generic\",\n title,\n message,\n primaryAction,\n secondaryAction,\n className = \"\",\n showIcon = true,\n}: ErrorStateProps) {\n const handlePrimaryAction = useCallback(() => {\n primaryAction?.onClick();\n }, [primaryAction]);\n\n const handleSecondaryAction = useCallback(() => {\n secondaryAction?.onClick();\n }, [secondaryAction]);\n\n const containerClass = [\"error-state\", `error-state--${type}`, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClass} role=\"alert\" aria-live=\"polite\">\n {showIcon && (\n <div className=\"error-state__icon\" aria-hidden=\"true\">\n {getErrorIcon(type)}\n </div>\n )}\n\n <h2 className=\"error-state__title\">{title}</h2>\n\n <p className=\"error-state__message\">{message}</p>\n\n {(primaryAction || secondaryAction) && (\n <div className=\"error-state__actions\">\n {primaryAction && (\n <Button\n variant=\"primary\"\n onClick={handlePrimaryAction}\n className=\"error-state__action-btn error-state__action-btn--primary\"\n >\n {primaryAction.label}\n </Button>\n )}\n\n {secondaryAction && (\n <Button\n variant=\"secondary\"\n onClick={handleSecondaryAction}\n className=\"error-state__action-btn error-state__action-btn--secondary\"\n >\n {secondaryAction.label}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;AA8CA,SAAS,EAAa,GAAmC;CAGvD,OAAO,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;AACrC;AAKA,SAAgB,EAAW,EACzB,UAAO,WACP,UACA,YACA,kBACA,oBACA,eAAY,IACZ,cAAW,MACO;CAClB,IAAM,IAAsB,QAAkB;EAC5C,GAAe,QAAQ;CACzB,GAAG,CAAC,CAAa,CAAC,GAEZ,IAAwB,QAAkB;EAC9C,GAAiB,QAAQ;CAC3B,GAAG,CAAC,CAAe,CAAC,GAEd,IAAiB;EAAC;EAAe,gBAAgB;EAAQ;CAAS,CAAC,CACtE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OACE,kBAAC,OAAD;EAAK,WAAW;EAAgB,MAAK;EAAQ,aAAU;EAAvD,UAAA;GACG,KACC,kBAAC,OAAD;IAAK,WAAU;IAAoB,eAAY;IAC5C,UAAA,EAAa,CAAI;GACf,CAAA;GAGP,kBAAC,MAAD;IAAI,WAAU;IAAsB,UAAA;GAAU,CAAA;GAE9C,kBAAC,KAAD;IAAG,WAAU;IAAwB,UAAA;GAAW,CAAA;IAE9C,KAAiB,MACjB,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,SAAS;KACT,WAAU;KAET,UAAA,EAAc;IACT,CAAA,GAGT,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,SAAS;KACT,WAAU;KAET,UAAA,EAAgB;IACX,CAAA,CAEP;;EAEJ;;AAET"}
1
+ {"version":3,"file":"ErrorState2.js","names":[],"sources":["../../../src/components/ErrorState/ErrorState.tsx"],"sourcesContent":["/**\n * ErrorState Component\n *\n * Unified error state component with recovery actions.\n * Provides consistent error presentation across all pages with actionable buttons.\n *\n * Features:\n * - Three visual tones\n * - Primary and secondary action buttons\n * - Accessible (ARIA attributes, focus management)\n * - Dark/light theme support\n */\n\nimport type { ReactNode } from \"react\";\nimport { useCallback } from \"react\";\nimport { AlertCircleIcon } from \"../../icons/AlertCircleIcon\";\nimport { Button } from \"../Button\";\nimport \"./ErrorState.css\";\n\n/**\n * How the error reads, not what it is about.\n *\n * This prop used to be a union of five names: network, configuration, model,\n * permission, generic. Two of those, and \"model\" in particular, are one\n * product's categories rather than anything a shared component can reason\n * about, and all five resolved to three colours anyway: network and permission\n * were the same amber, model and generic the same red. A consumer decides\n * which of its own error categories reads as which tone.\n */\nexport type ErrorTone = \"danger\" | \"warning\" | \"accent\";\n\nexport interface ErrorAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ErrorStateProps {\n /** How the error reads. Defaults to `danger`. */\n tone?: ErrorTone;\n /** Replaces the default alert icon. */\n icon?: ReactNode;\n /** Error title - main heading */\n title: string;\n /** Detailed error message */\n message: string;\n /** Primary action button (e.g., Retry, Go to Settings) */\n primaryAction?: ErrorAction;\n /** Secondary action button (e.g., View Logs, Report Issue) */\n secondaryAction?: ErrorAction;\n /** Additional CSS classes */\n className?: string;\n /** Whether to show error icon */\n showIcon?: boolean;\n}\n\n/**\n * ErrorState Component\n */\nexport function ErrorState({\n tone = \"danger\",\n icon,\n title,\n message,\n primaryAction,\n secondaryAction,\n className = \"\",\n showIcon = true,\n}: ErrorStateProps) {\n const handlePrimaryAction = useCallback(() => {\n primaryAction?.onClick();\n }, [primaryAction]);\n\n const handleSecondaryAction = useCallback(() => {\n secondaryAction?.onClick();\n }, [secondaryAction]);\n\n const containerClass = [\"error-state\", `error-state--${tone}`, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClass} role=\"alert\" aria-live=\"polite\">\n {showIcon && (\n <div className=\"error-state__icon\" aria-hidden=\"true\">\n {icon ?? <AlertCircleIcon size={48} />}\n </div>\n )}\n\n <h2 className=\"error-state__title\">{title}</h2>\n\n <p className=\"error-state__message\">{message}</p>\n\n {(primaryAction || secondaryAction) && (\n <div className=\"error-state__actions\">\n {primaryAction && (\n <Button\n variant=\"primary\"\n onClick={handlePrimaryAction}\n className=\"error-state__action-btn error-state__action-btn--primary\"\n >\n {primaryAction.label}\n </Button>\n )}\n\n {secondaryAction && (\n <Button\n variant=\"secondary\"\n onClick={handleSecondaryAction}\n className=\"error-state__action-btn error-state__action-btn--secondary\"\n >\n {secondaryAction.label}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;AA0DA,SAAgB,EAAW,EACzB,UAAO,UACP,SACA,UACA,YACA,kBACA,oBACA,eAAY,IACZ,cAAW,MACO;CAClB,IAAM,IAAsB,QAAkB;EAC5C,GAAe,QAAQ;CACzB,GAAG,CAAC,CAAa,CAAC,GAEZ,IAAwB,QAAkB;EAC9C,GAAiB,QAAQ;CAC3B,GAAG,CAAC,CAAe,CAAC,GAEd,IAAiB;EAAC;EAAe,gBAAgB;EAAQ;CAAS,CAAC,CACtE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OACE,kBAAC,OAAD;EAAK,WAAW;EAAgB,MAAK;EAAQ,aAAU;EAAvD,UAAA;GACG,KACC,kBAAC,OAAD;IAAK,WAAU;IAAoB,eAAY;IAC5C,UAAA,KAAQ,kBAAC,GAAD,EAAiB,MAAM,GAAK,CAAA;GAClC,CAAA;GAGP,kBAAC,MAAD;IAAI,WAAU;IAAsB,UAAA;GAAU,CAAA;GAE9C,kBAAC,KAAD;IAAG,WAAU;IAAwB,UAAA;GAAW,CAAA;IAE9C,KAAiB,MACjB,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,SAAS;KACT,WAAU;KAET,UAAA,EAAc;IACT,CAAA,GAGT,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,SAAS;KACT,WAAU;KAET,UAAA,EAAgB;IACX,CAAA,CAEP;;EAEJ;;AAET"}
@@ -2,4 +2,4 @@
2
2
  * ErrorState Component Export
3
3
  */
4
4
  export { ErrorState } from './ErrorState';
5
- export type { ErrorStateProps, ErrorType, ErrorAction } from './ErrorState';
5
+ export type { ErrorStateProps, ErrorTone, ErrorAction } from './ErrorState';
@@ -8,6 +8,19 @@ export interface PageHeaderProps {
8
8
  actions?: ReactNode;
9
9
  /** Error message to display below the header */
10
10
  error?: string | null;
11
+ /**
12
+ * Secondary line under the message, for the raw detail a server returned.
13
+ * Kept separate so the message stays readable when the detail is long.
14
+ */
15
+ errorDetail?: string | null;
16
+ /**
17
+ * Callback for the Retry button, rendered before the dismiss control when
18
+ * set. Dismissal is a pure dismissal and must not retry, which is why these
19
+ * are two props rather than one.
20
+ */
21
+ onRetry?: () => void;
22
+ /** Label for the Retry button. Default: "Retry" */
23
+ retryLabel?: string;
11
24
  /** Callback when error is dismissed */
12
25
  onErrorDismiss?: () => void;
13
26
  /** Additional CSS class names */
@@ -15,4 +28,4 @@ export interface PageHeaderProps {
15
28
  /** Accessible label for the error-dismiss button. Default: "Dismiss error" */
16
29
  dismissErrorLabel?: string;
17
30
  }
18
- export declare function PageHeader({ title, description, actions, error, onErrorDismiss, className, dismissErrorLabel, }: PageHeaderProps): import("react").JSX.Element;
31
+ export declare function PageHeader({ title, description, actions, error, onErrorDismiss, className, errorDetail, onRetry, retryLabel, dismissErrorLabel, }: PageHeaderProps): import("react").JSX.Element;
@@ -1,43 +1,59 @@
1
+ import { Button as e } from "../Button/Button2.js";
1
2
  /* empty css */
2
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
4
  //#region src/components/PageHeader/PageHeader.tsx
4
- function n({ title: n, description: r, actions: i, error: a, onErrorDismiss: o, className: s = "", dismissErrorLabel: c = "Dismiss error" }) {
5
- let l = ["page-header", s].filter(Boolean).join(" ");
6
- return /* @__PURE__ */ t("header", {
7
- className: l,
8
- children: [/* @__PURE__ */ t("div", {
5
+ function r({ title: r, description: i, actions: a, error: o, onErrorDismiss: s, className: c = "", errorDetail: l, onRetry: u, retryLabel: d = "Retry", dismissErrorLabel: f = "Dismiss error" }) {
6
+ let p = ["page-header", c].filter(Boolean).join(" ");
7
+ return /* @__PURE__ */ n("header", {
8
+ className: p,
9
+ children: [/* @__PURE__ */ n("div", {
9
10
  className: "page-header__content",
10
- children: [/* @__PURE__ */ t("div", {
11
+ children: [/* @__PURE__ */ n("div", {
11
12
  className: "page-header__text",
12
- children: [/* @__PURE__ */ e("h1", {
13
+ children: [/* @__PURE__ */ t("h1", {
13
14
  className: "page-header__title",
14
- children: n
15
- }), r && /* @__PURE__ */ e("p", {
16
- className: "page-header__description",
17
15
  children: r
16
+ }), i && /* @__PURE__ */ t("p", {
17
+ className: "page-header__description",
18
+ children: i
18
19
  })]
19
- }), i && /* @__PURE__ */ e("div", {
20
+ }), a && /* @__PURE__ */ t("div", {
20
21
  className: "page-header__actions",
21
- children: i
22
+ children: a
22
23
  })]
23
- }), a && /* @__PURE__ */ t("div", {
24
+ }), o && /* @__PURE__ */ n("div", {
24
25
  className: "page-header__error",
25
26
  role: "alert",
26
- children: [/* @__PURE__ */ e("span", {
27
- className: "page-header__error-text",
28
- children: a
29
- }), o && /* @__PURE__ */ e("button", {
30
- type: "button",
31
- className: "page-header__error-dismiss",
32
- onClick: o,
33
- "aria-label": c,
34
- children: "×"
27
+ children: [/* @__PURE__ */ n("div", {
28
+ className: "page-header__error-body",
29
+ children: [/* @__PURE__ */ t("span", {
30
+ className: "page-header__error-text",
31
+ children: o
32
+ }), l && /* @__PURE__ */ t("span", {
33
+ className: "page-header__error-detail",
34
+ children: l
35
+ })]
36
+ }), (u || s) && /* @__PURE__ */ n("div", {
37
+ className: "page-header__error-actions",
38
+ children: [u && /* @__PURE__ */ t(e, {
39
+ variant: "secondary",
40
+ size: "small",
41
+ className: "page-header__error-retry",
42
+ onClick: u,
43
+ children: d
44
+ }), s && /* @__PURE__ */ t("button", {
45
+ type: "button",
46
+ className: "page-header__error-dismiss",
47
+ onClick: s,
48
+ "aria-label": f,
49
+ children: "×"
50
+ })]
35
51
  })]
36
52
  })]
37
53
  });
38
54
  }
39
55
  //#endregion
40
- export { n as PageHeader };
56
+ export { r as PageHeader };
41
57
 
42
58
  //# sourceMappingURL=PageHeader2.js.map
43
59
  import "../../assets/components/PageHeader/PageHeader.css";
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader2.js","names":[],"sources":["../../../src/components/PageHeader/PageHeader.tsx"],"sourcesContent":["/**\n * PageHeader Component\n *\n * Standardized page header with title, description, and optional action buttons.\n * Provides consistent styling and layout across all pages.\n *\n * @example\n * // Basic usage\n * <PageHeader\n * title=\"Models\"\n * description=\"Manage and browse your local models\"\n * />\n *\n * @example\n * // With action buttons\n * <PageHeader\n * title=\"Settings\"\n * description=\"Configure application settings\"\n * actions={\n * <>\n * <Button variant=\"secondary\">Import</Button>\n * <Button variant=\"primary\">Save</Button>\n * </>\n * }\n * />\n *\n * @example\n * // With error display\n * <PageHeader\n * title=\"Engines\"\n * description=\"Manage runtime engines\"\n * error={error}\n * onErrorDismiss={() => clearError()}\n * />\n */\n\nimport type { ReactNode } from \"react\";\nimport \"./PageHeader.css\";\n\nexport interface PageHeaderProps {\n /** Page title - displayed as h1 */\n title: string;\n /** Page description - displayed below title */\n description?: string;\n /** Optional action buttons or elements on the right side */\n actions?: ReactNode;\n /** Error message to display below the header */\n error?: string | null;\n /** Callback when error is dismissed */\n onErrorDismiss?: () => void;\n /** Additional CSS class names */\n className?: string;\n /** Accessible label for the error-dismiss button. Default: \"Dismiss error\" */\n dismissErrorLabel?: string;\n}\n\nexport function PageHeader({\n title,\n description,\n actions,\n error,\n onErrorDismiss,\n className = \"\",\n dismissErrorLabel = \"Dismiss error\",\n}: PageHeaderProps) {\n const classes = [\"page-header\", className].filter(Boolean).join(\" \");\n\n return (\n <header className={classes}>\n <div className=\"page-header__content\">\n <div className=\"page-header__text\">\n <h1 className=\"page-header__title\">{title}</h1>\n {description && <p className=\"page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"page-header__actions\">{actions}</div>}\n </div>\n {error && (\n <div className=\"page-header__error\" role=\"alert\">\n <span className=\"page-header__error-text\">{error}</span>\n {onErrorDismiss && (\n <button\n type=\"button\"\n className=\"page-header__error-dismiss\"\n onClick={onErrorDismiss}\n aria-label={dismissErrorLabel}\n >\n ×\n </button>\n )}\n </div>\n )}\n </header>\n );\n}\n"],"mappings":";;;AAwDA,SAAgB,EAAW,EACzB,UACA,gBACA,YACA,UACA,mBACA,eAAY,IACZ,uBAAoB,mBACF;CAClB,IAAM,IAAU,CAAC,eAAe,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEnE,OACE,kBAAC,UAAD;EAAQ,WAAW;EAAnB,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;KAAsB,UAAA;IAAU,CAAA,GAC7C,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4B,UAAA;IAAe,CAAA,CACrE;GACJ,CAAA,GAAA,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAwB,UAAA;GAAa,CAAA,CAC7D;EACJ,CAAA,GAAA,KACC,kBAAC,OAAD;GAAK,WAAU;GAAqB,MAAK;GAAzC,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAA2B,UAAA;GAAY,CAAA,GACtD,KACC,kBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,SAAS;IACT,cAAY;IACb,UAAA;GAEO,CAAA,CAEP;EAED,CAAA,CAAA;;AAEZ"}
1
+ {"version":3,"file":"PageHeader2.js","names":[],"sources":["../../../src/components/PageHeader/PageHeader.tsx"],"sourcesContent":["/**\n * PageHeader Component\n *\n * Standardized page header with title, description, and optional action buttons.\n * Provides consistent styling and layout across all pages.\n *\n * @example\n * // Basic usage\n * <PageHeader\n * title=\"Models\"\n * description=\"Manage and browse your local models\"\n * />\n *\n * @example\n * // With action buttons\n * <PageHeader\n * title=\"Settings\"\n * description=\"Configure application settings\"\n * actions={\n * <>\n * <Button variant=\"secondary\">Import</Button>\n * <Button variant=\"primary\">Save</Button>\n * </>\n * }\n * />\n *\n * @example\n * // With error display\n * <PageHeader\n * title=\"Engines\"\n * description=\"Manage runtime engines\"\n * error={error}\n * onErrorDismiss={() => clearError()}\n * />\n */\n\nimport type { ReactNode } from \"react\";\nimport { Button } from \"../Button\";\nimport \"./PageHeader.css\";\n\nexport interface PageHeaderProps {\n /** Page title - displayed as h1 */\n title: string;\n /** Page description - displayed below title */\n description?: string;\n /** Optional action buttons or elements on the right side */\n actions?: ReactNode;\n /** Error message to display below the header */\n error?: string | null;\n /**\n * Secondary line under the message, for the raw detail a server returned.\n * Kept separate so the message stays readable when the detail is long.\n */\n errorDetail?: string | null;\n /**\n * Callback for the Retry button, rendered before the dismiss control when\n * set. Dismissal is a pure dismissal and must not retry, which is why these\n * are two props rather than one.\n */\n onRetry?: () => void;\n /** Label for the Retry button. Default: \"Retry\" */\n retryLabel?: string;\n /** Callback when error is dismissed */\n onErrorDismiss?: () => void;\n /** Additional CSS class names */\n className?: string;\n /** Accessible label for the error-dismiss button. Default: \"Dismiss error\" */\n dismissErrorLabel?: string;\n}\n\nexport function PageHeader({\n title,\n description,\n actions,\n error,\n onErrorDismiss,\n className = \"\",\n errorDetail,\n onRetry,\n retryLabel = \"Retry\",\n dismissErrorLabel = \"Dismiss error\",\n}: PageHeaderProps) {\n const classes = [\"page-header\", className].filter(Boolean).join(\" \");\n\n return (\n <header className={classes}>\n <div className=\"page-header__content\">\n <div className=\"page-header__text\">\n <h1 className=\"page-header__title\">{title}</h1>\n {description && <p className=\"page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"page-header__actions\">{actions}</div>}\n </div>\n {error && (\n <div className=\"page-header__error\" role=\"alert\">\n <div className=\"page-header__error-body\">\n <span className=\"page-header__error-text\">{error}</span>\n {errorDetail && (\n <span className=\"page-header__error-detail\">{errorDetail}</span>\n )}\n </div>\n {(onRetry || onErrorDismiss) && (\n <div className=\"page-header__error-actions\">\n {onRetry && (\n <Button\n variant=\"secondary\"\n size=\"small\"\n className=\"page-header__error-retry\"\n onClick={onRetry}\n >\n {retryLabel}\n </Button>\n )}\n {onErrorDismiss && (\n <button\n type=\"button\"\n className=\"page-header__error-dismiss\"\n onClick={onErrorDismiss}\n aria-label={dismissErrorLabel}\n >\n ×\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </header>\n );\n}\n"],"mappings":";;;;AAsEA,SAAgB,EAAW,EACzB,UACA,gBACA,YACA,UACA,mBACA,eAAY,IACZ,gBACA,YACA,gBAAa,SACb,uBAAoB,mBACF;CAClB,IAAM,IAAU,CAAC,eAAe,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEnE,OACE,kBAAC,UAAD;EAAQ,WAAW;EAAnB,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;KAAsB,UAAA;IAAU,CAAA,GAC7C,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4B,UAAA;IAAe,CAAA,CACrE;GACJ,CAAA,GAAA,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAwB,UAAA;GAAa,CAAA,CAC7D;EACJ,CAAA,GAAA,KACC,kBAAC,OAAD;GAAK,WAAU;GAAqB,MAAK;GAAzC,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,QAAD;KAAM,WAAU;KAA2B,UAAA;IAAY,CAAA,GACtD,KACC,kBAAC,QAAD;KAAM,WAAU;KAA6B,UAAA;IAAkB,CAAA,CAE9D;GACH,CAAA,IAAA,KAAW,MACX,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,KACC,kBAAC,GAAD;KACE,SAAQ;KACR,MAAK;KACL,WAAU;KACV,SAAS;KAER,UAAA;IACK,CAAA,GAET,KACC,kBAAC,UAAD;KACE,MAAK;KACL,WAAU;KACV,SAAS;KACT,cAAY;KACb,UAAA;IAEO,CAAA,CAEP;GAEJ,CAAA,CAAA;EAED,CAAA,CAAA;;AAEZ"}
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ export interface SelectOption<T extends string = string> {
3
+ value: T;
4
+ label: string;
5
+ description?: string;
6
+ icon?: ReactNode;
7
+ /** Keep an unavailable choice visible while preventing its selection. */
8
+ disabled?: boolean;
9
+ }
10
+ export interface SelectProps<T extends string = string> {
11
+ value: T;
12
+ onChange: (value: T) => void;
13
+ onBlur?: () => void;
14
+ options: SelectOption<T>[];
15
+ /**
16
+ * Field label rendered above the trigger, the way `TextInput` renders its
17
+ * own. Names the trigger and the listbox through `aria-labelledby`, so a
18
+ * caller that supplies it does not also need `aria-label`.
19
+ */
20
+ label?: ReactNode;
21
+ placeholder?: string;
22
+ disabled?: boolean;
23
+ size?: "small" | "default" | "medium" | "large";
24
+ fullWidth?: boolean;
25
+ className?: string;
26
+ searchable?: boolean;
27
+ searchPlaceholder?: string;
28
+ "aria-label"?: string;
29
+ "aria-describedby"?: string;
30
+ invalid?: boolean;
31
+ /**
32
+ * Shown in place of the list when a search matches nothing. English default,
33
+ * because this package cannot resolve a consumer's locale key: a product that
34
+ * localises passes its own words.
35
+ */
36
+ noOptionsLabel?: string;
37
+ }
38
+ export declare function Select<T extends string = string>({ value, onChange, onBlur, options, label, placeholder, disabled, size, fullWidth, className, searchable, searchPlaceholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, invalid, noOptionsLabel, }: SelectProps<T>): import("react").JSX.Element;
@@ -0,0 +1,313 @@
1
+ /* empty css */
2
+ import { useCallback as e, useEffect as t, useId as n, useMemo as r, useRef as i, useState as a } from "react";
3
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
+ import { createPortal as c } from "react-dom";
5
+ //#region src/components/Select/Select.tsx
6
+ function l({ value: l, onChange: u, onBlur: d, options: f, label: p, placeholder: ee = "Select...", disabled: m = !1, size: h = "default", fullWidth: g = !1, className: _ = "", searchable: v = !1, searchPlaceholder: y, "aria-label": b, "aria-describedby": x, invalid: S = !1, noOptionsLabel: C = "No options" }) {
7
+ let [w, T] = a(!1), [E, D] = a(-1), [O, k] = a(""), [A, te] = a({
8
+ top: 0,
9
+ left: 0,
10
+ width: 0
11
+ }), j = i(null), M = i(null), N = i(null), P = i(null), F = i([]), I = n(), L = n(), R = n(), z = p != null && p !== !1, B = f.find((e) => e.value === l), V = r(() => {
12
+ let e = O.trim().toLowerCase();
13
+ return !v || e.length === 0 ? f : f.filter((t) => [
14
+ t.label,
15
+ t.value,
16
+ t.description ?? ""
17
+ ].some((t) => t.toLowerCase().includes(e)));
18
+ }, [
19
+ f,
20
+ O,
21
+ v
22
+ ]), H = e((e, t) => {
23
+ for (let n = e; n >= 0 && n < V.length; n += t) {
24
+ let e = V[n];
25
+ if (e && !e.disabled) return n;
26
+ }
27
+ return -1;
28
+ }, [V]), U = (e) => `${L}-option-${String(e)}`, W = E >= 0 ? U(E) : void 0, G = e(() => {
29
+ if (!M.current) return;
30
+ let e = M.current.getBoundingClientRect();
31
+ te({
32
+ top: e.bottom + 4,
33
+ left: e.left,
34
+ width: e.width
35
+ });
36
+ }, []), K = e(() => {
37
+ if (m) return;
38
+ G(), T(!0);
39
+ let e = V.findIndex((e) => e.value === l && !e.disabled);
40
+ D(e === -1 ? H(0, 1) : e);
41
+ }, [
42
+ m,
43
+ V,
44
+ l,
45
+ G,
46
+ H
47
+ ]), q = e(() => {
48
+ T(!1), D(-1), k(""), M.current?.focus();
49
+ }, []), J = e((e, t) => {
50
+ t && (t.stopPropagation(), t.preventDefault()), !e.disabled && (u(e.value), q());
51
+ }, [u, q]);
52
+ t(() => {
53
+ let e = (e) => {
54
+ if (!w) return;
55
+ let t = e.target, n = j.current && !j.current.contains(t), r = N.current && !N.current.contains(t);
56
+ n && r && q();
57
+ }, t = (e) => {
58
+ e.key === "Escape" && w && q();
59
+ };
60
+ return w && (document.addEventListener("mousedown", e), document.addEventListener("keydown", t)), () => {
61
+ document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
62
+ };
63
+ }, [w, q]), t(() => {
64
+ if (!w) return;
65
+ let e = () => {
66
+ G();
67
+ };
68
+ return window.addEventListener("resize", e), window.addEventListener("scroll", e, !0), () => {
69
+ window.removeEventListener("resize", e), window.removeEventListener("scroll", e, !0);
70
+ };
71
+ }, [w, G]), t(() => {
72
+ w && v && P.current?.focus();
73
+ }, [w, v]), t(() => {
74
+ if (!w || !v) return;
75
+ F.current = [];
76
+ let e = V.findIndex((e) => e.value === l && !e.disabled);
77
+ D(e >= 0 ? e : H(0, 1));
78
+ }, [
79
+ w,
80
+ O,
81
+ v,
82
+ l,
83
+ V,
84
+ H
85
+ ]);
86
+ let Y = e((e) => {
87
+ if (!m) switch (e.key) {
88
+ case "Enter":
89
+ case " ":
90
+ if (e.preventDefault(), w) {
91
+ let e = V[E];
92
+ e && J(e);
93
+ } else K();
94
+ break;
95
+ case "Escape":
96
+ e.preventDefault(), w && q();
97
+ break;
98
+ case "ArrowDown":
99
+ if (e.preventDefault(), !w) K();
100
+ else {
101
+ let e = H(E + 1, 1);
102
+ e >= 0 && D(e);
103
+ }
104
+ break;
105
+ case "ArrowUp":
106
+ if (e.preventDefault(), w) {
107
+ let e = H(E - 1, -1);
108
+ e >= 0 && D(e);
109
+ }
110
+ break;
111
+ case "Tab": w && q();
112
+ }
113
+ }, [
114
+ m,
115
+ w,
116
+ E,
117
+ V,
118
+ H,
119
+ K,
120
+ q,
121
+ J
122
+ ]), X = e((e) => {
123
+ switch (e.key) {
124
+ case "Enter": {
125
+ e.preventDefault();
126
+ let t = V[E];
127
+ t && J(t);
128
+ break;
129
+ }
130
+ case "Escape":
131
+ e.preventDefault(), e.stopPropagation(), q();
132
+ break;
133
+ case "ArrowDown":
134
+ e.preventDefault(), D((e) => {
135
+ let t = H(e + 1, 1);
136
+ return t >= 0 ? t : e;
137
+ });
138
+ break;
139
+ case "ArrowUp":
140
+ e.preventDefault(), D((e) => {
141
+ let t = H(e - 1, -1);
142
+ return t >= 0 ? t : e;
143
+ });
144
+ break;
145
+ case "Tab": q();
146
+ }
147
+ }, [
148
+ q,
149
+ E,
150
+ J,
151
+ V,
152
+ H
153
+ ]);
154
+ t(() => {
155
+ let e = F.current[E];
156
+ w && E >= 0 && e && e.scrollIntoView({
157
+ block: "nearest",
158
+ behavior: "smooth"
159
+ });
160
+ }, [w, E]);
161
+ let Z = h === "default" ? "" : `select--${h}`, ne = g ? "select--full-width" : "", re = z ? "select--labelled" : "", Q = z ? R : void 0, $ = y ?? b;
162
+ return /* @__PURE__ */ s("div", {
163
+ ref: j,
164
+ className: `select ${Z} ${ne} ${re} ${w ? "select--open" : ""} ${m ? "select--disabled" : ""} ${_}`,
165
+ children: [
166
+ z && /* @__PURE__ */ o("span", {
167
+ className: "select__label",
168
+ id: R,
169
+ children: p
170
+ }),
171
+ /* @__PURE__ */ s("button", {
172
+ ref: M,
173
+ type: "button",
174
+ className: "select__trigger",
175
+ onClick: () => {
176
+ w ? q() : K();
177
+ },
178
+ onKeyDown: Y,
179
+ onBlur: d,
180
+ disabled: m,
181
+ "aria-haspopup": "listbox",
182
+ "aria-expanded": w,
183
+ "aria-controls": w ? I : void 0,
184
+ "aria-activedescendant": w ? W : void 0,
185
+ "aria-label": b,
186
+ "aria-labelledby": Q,
187
+ "aria-describedby": x,
188
+ "aria-invalid": S || void 0,
189
+ children: [B ? /* @__PURE__ */ s("span", {
190
+ className: "select__value",
191
+ children: [B.icon && /* @__PURE__ */ o("span", {
192
+ className: "select__value-icon",
193
+ children: B.icon
194
+ }), /* @__PURE__ */ o("span", {
195
+ className: "select__value-label",
196
+ children: B.label
197
+ })]
198
+ }) : /* @__PURE__ */ o("span", {
199
+ className: "select__placeholder",
200
+ children: ee
201
+ }), /* @__PURE__ */ o("span", {
202
+ className: `select__chevron ${w ? "select__chevron--open" : ""}`,
203
+ children: /* @__PURE__ */ o("svg", {
204
+ width: "10",
205
+ height: "6",
206
+ viewBox: "0 0 10 6",
207
+ fill: "none",
208
+ xmlns: "http://www.w3.org/2000/svg",
209
+ children: /* @__PURE__ */ o("path", {
210
+ d: "M1 1L5 5L9 1",
211
+ stroke: "currentColor",
212
+ strokeWidth: "1.5",
213
+ strokeLinecap: "round",
214
+ strokeLinejoin: "round"
215
+ })
216
+ })
217
+ })]
218
+ }),
219
+ w && c(/* @__PURE__ */ s("div", {
220
+ ref: N,
221
+ className: "select__dropdown select__dropdown--portal",
222
+ style: {
223
+ position: "fixed",
224
+ top: `${String(A.top)}px`,
225
+ left: `${String(A.left)}px`,
226
+ width: `${String(A.width)}px`
227
+ },
228
+ children: [v && /* @__PURE__ */ o("div", {
229
+ className: "select__search",
230
+ children: /* @__PURE__ */ o("input", {
231
+ ref: P,
232
+ className: "select__search-input",
233
+ type: "search",
234
+ value: O,
235
+ onChange: (e) => k(e.currentTarget.value),
236
+ onKeyDown: X,
237
+ placeholder: y,
238
+ "aria-label": $,
239
+ "aria-labelledby": $ ? void 0 : Q,
240
+ "aria-controls": I,
241
+ "aria-activedescendant": W,
242
+ autoComplete: "off",
243
+ spellCheck: !1
244
+ })
245
+ }), /* @__PURE__ */ o("div", {
246
+ className: "select__options",
247
+ role: "listbox",
248
+ id: I,
249
+ "aria-label": b,
250
+ "aria-labelledby": Q,
251
+ children: V.length === 0 ? /* @__PURE__ */ o("div", {
252
+ className: "select__empty",
253
+ children: C
254
+ }) : V.map((e, t) => /* @__PURE__ */ s("div", {
255
+ id: U(t),
256
+ ref: (e) => {
257
+ F.current[t] = e;
258
+ },
259
+ className: `select__option ${e.value === l ? "select__option--selected" : ""} ${t === E ? "select__option--focused" : ""} ${e.disabled ? "select__option--disabled" : ""}`,
260
+ role: "option",
261
+ "aria-selected": e.value === l,
262
+ "aria-disabled": e.disabled || void 0,
263
+ "aria-label": e.description ? e.label + ". " + e.description : void 0,
264
+ onClick: (t) => {
265
+ J(e, t);
266
+ },
267
+ onMouseEnter: () => {
268
+ e.disabled || D(t);
269
+ },
270
+ children: [
271
+ e.icon && /* @__PURE__ */ o("span", {
272
+ className: "select__option-icon",
273
+ children: e.icon
274
+ }),
275
+ /* @__PURE__ */ s("div", {
276
+ className: "select__option-content",
277
+ children: [/* @__PURE__ */ o("span", {
278
+ className: "select__option-label",
279
+ children: e.label
280
+ }), e.description && /* @__PURE__ */ o("span", {
281
+ className: "select__option-description",
282
+ children: e.description
283
+ })]
284
+ }),
285
+ e.value === l && /* @__PURE__ */ o("span", {
286
+ className: "select__option-check",
287
+ children: /* @__PURE__ */ o("svg", {
288
+ width: "14",
289
+ height: "10",
290
+ viewBox: "0 0 14 10",
291
+ fill: "none",
292
+ xmlns: "http://www.w3.org/2000/svg",
293
+ children: /* @__PURE__ */ o("path", {
294
+ d: "M1 5L5 9L13 1",
295
+ stroke: "currentColor",
296
+ strokeWidth: "2",
297
+ strokeLinecap: "round",
298
+ strokeLinejoin: "round"
299
+ })
300
+ })
301
+ })
302
+ ]
303
+ }, e.value))
304
+ })]
305
+ }), document.body)
306
+ ]
307
+ });
308
+ }
309
+ //#endregion
310
+ export { l as Select };
311
+
312
+ //# sourceMappingURL=Select2.js.map
313
+ import "../../assets/components/Select/Select.css";