@sbkbs/ui 1.0.2 → 1.0.4

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 (146) hide show
  1. package/README.md +13 -10
  2. package/dist/components/Accordion/Accordion.d.ts +11 -0
  3. package/dist/components/Accordion/Accordion.js +56 -0
  4. package/dist/components/Accordion/Accordion.js.map +1 -0
  5. package/dist/components/Accordion/Accordion.stories.d.ts +7 -0
  6. package/dist/components/Alert/Alert.d.ts +6 -0
  7. package/dist/components/Alert/Alert.js +32 -0
  8. package/dist/components/Alert/Alert.js.map +1 -0
  9. package/dist/components/Alert/Alert.stories.d.ts +8 -0
  10. package/dist/components/Badge/Badge.d.ts +6 -0
  11. package/dist/components/Badge/Badge.js +35 -0
  12. package/dist/components/Badge/Badge.js.map +1 -0
  13. package/dist/components/Badge/Badge.stories.d.ts +8 -0
  14. package/dist/components/Breadcrumb/Breadcrumb.d.ts +10 -0
  15. package/dist/components/Breadcrumb/Breadcrumb.js +26 -0
  16. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
  17. package/dist/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -0
  18. package/dist/components/Button/Button.js +122 -0
  19. package/dist/components/Button/Button.js.map +1 -0
  20. package/dist/components/Button/Button.stories.d.ts +7 -0
  21. package/dist/components/Card/Card.js +33 -0
  22. package/dist/components/Card/Card.js.map +1 -0
  23. package/dist/components/Card/Card.stories.d.ts +8 -0
  24. package/dist/components/Checkbox/Checkbox.d.ts +6 -0
  25. package/dist/components/Checkbox/Checkbox.js +36 -0
  26. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  27. package/dist/components/Checkbox/Checkbox.stories.d.ts +7 -0
  28. package/dist/components/Chip/Chip.d.ts +5 -0
  29. package/dist/components/Chip/Chip.js +19 -0
  30. package/dist/components/Chip/Chip.js.map +1 -0
  31. package/dist/components/Combobox/Combobox.d.ts +17 -0
  32. package/dist/components/Combobox/Combobox.js +143 -0
  33. package/dist/components/Combobox/Combobox.js.map +1 -0
  34. package/dist/components/Combobox/Combobox.stories.d.ts +9 -0
  35. package/dist/components/Divider/Divider.d.ts +5 -0
  36. package/dist/components/Divider/Divider.js +22 -0
  37. package/dist/components/Divider/Divider.js.map +1 -0
  38. package/dist/components/EmptyState/EmptyState.d.ts +8 -0
  39. package/dist/components/EmptyState/EmptyState.js +29 -0
  40. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  41. package/dist/components/Feedback/Feedback.stories.d.ts +5 -0
  42. package/dist/components/FileUpload/FileUpload.d.ts +13 -0
  43. package/dist/components/FileUpload/FileUpload.js +116 -0
  44. package/dist/components/FileUpload/FileUpload.js.map +1 -0
  45. package/dist/components/FileUpload/FileUpload.stories.d.ts +10 -0
  46. package/dist/components/Footer/Footer.js +54 -0
  47. package/dist/components/Footer/Footer.js.map +1 -0
  48. package/dist/components/Header/Header.js +114 -0
  49. package/dist/components/Header/Header.js.map +1 -0
  50. package/dist/components/Input/Input.d.ts +2 -2
  51. package/dist/components/Input/Input.js +78 -0
  52. package/dist/components/Input/Input.js.map +1 -0
  53. package/dist/components/Input/Input.stories.d.ts +9 -0
  54. package/dist/components/Layout/Layout.d.ts +14 -0
  55. package/dist/components/Layout/Layout.js +41 -0
  56. package/dist/components/Layout/Layout.js.map +1 -0
  57. package/dist/components/Modal/Modal.js +113 -0
  58. package/dist/components/Modal/Modal.js.map +1 -0
  59. package/dist/components/Modal/Modal.stories.d.ts +8 -0
  60. package/dist/components/Navigation/Navigation.d.ts +7 -0
  61. package/dist/components/Navigation/Navigation.js +26 -0
  62. package/dist/components/Navigation/Navigation.js.map +1 -0
  63. package/dist/components/NumberInput/NumberInput.d.ts +12 -0
  64. package/dist/components/NumberInput/NumberInput.js +135 -0
  65. package/dist/components/NumberInput/NumberInput.js.map +1 -0
  66. package/dist/components/NumberInput/NumberInput.stories.d.ts +8 -0
  67. package/dist/components/PageHeader/PageHeader.d.ts +7 -0
  68. package/dist/components/PageHeader/PageHeader.js +29 -0
  69. package/dist/components/PageHeader/PageHeader.js.map +1 -0
  70. package/dist/components/Pagination/Pagination.d.ts +7 -0
  71. package/dist/components/Pagination/Pagination.js +50 -0
  72. package/dist/components/Pagination/Pagination.js.map +1 -0
  73. package/dist/components/Pagination/Pagination.stories.d.ts +8 -0
  74. package/dist/components/Paragraph/Paragraph.js +41 -0
  75. package/dist/components/Paragraph/Paragraph.js.map +1 -0
  76. package/dist/components/Popover/Popover.d.ts +7 -0
  77. package/dist/components/Popover/Popover.js +57 -0
  78. package/dist/components/Popover/Popover.js.map +1 -0
  79. package/dist/components/Radio/Radio.d.ts +6 -0
  80. package/dist/components/Radio/Radio.js +36 -0
  81. package/dist/components/Radio/Radio.js.map +1 -0
  82. package/dist/components/Radio/Radio.stories.d.ts +7 -0
  83. package/dist/components/SectionHeader/SectionHeader.d.ts +7 -0
  84. package/dist/components/SectionHeader/SectionHeader.js +19 -0
  85. package/dist/components/SectionHeader/SectionHeader.js.map +1 -0
  86. package/dist/components/Select/Select.d.ts +13 -0
  87. package/dist/components/Select/Select.js +45 -0
  88. package/dist/components/Select/Select.js.map +1 -0
  89. package/dist/components/Select/Select.stories.d.ts +8 -0
  90. package/dist/components/Skeleton/Skeleton.d.ts +7 -0
  91. package/dist/components/Skeleton/Skeleton.js +25 -0
  92. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  93. package/dist/components/Stepper/Stepper.d.ts +13 -0
  94. package/dist/components/Stepper/Stepper.js +97 -0
  95. package/dist/components/Stepper/Stepper.js.map +1 -0
  96. package/dist/components/Stepper/Stepper.stories.d.ts +8 -0
  97. package/dist/components/Subtitle/Subtitle.js +40 -0
  98. package/dist/components/Subtitle/Subtitle.js.map +1 -0
  99. package/dist/components/Switch/Switch.d.ts +7 -0
  100. package/dist/components/Switch/Switch.js +37 -0
  101. package/dist/components/Switch/Switch.js.map +1 -0
  102. package/dist/components/Switch/Switch.stories.d.ts +8 -0
  103. package/dist/components/Table/Table.d.ts +4 -0
  104. package/dist/components/Table/Table.js +17 -0
  105. package/dist/components/Table/Table.js.map +1 -0
  106. package/dist/components/Tabs/Tabs.d.ts +11 -0
  107. package/dist/components/Tabs/Tabs.js +62 -0
  108. package/dist/components/Tabs/Tabs.js.map +1 -0
  109. package/dist/components/Tabs/Tabs.stories.d.ts +8 -0
  110. package/dist/components/Tag/Tag.d.ts +5 -0
  111. package/dist/components/Tag/Tag.js +29 -0
  112. package/dist/components/Tag/Tag.js.map +1 -0
  113. package/dist/components/Textarea/Textarea.d.ts +7 -0
  114. package/dist/components/Textarea/Textarea.js +46 -0
  115. package/dist/components/Textarea/Textarea.js.map +1 -0
  116. package/dist/components/Textarea/Textarea.stories.d.ts +7 -0
  117. package/dist/components/Title/Title.js +47 -0
  118. package/dist/components/Title/Title.js.map +1 -0
  119. package/dist/components/Toast/Toast.d.ts +26 -0
  120. package/dist/components/Toast/Toast.js +110 -0
  121. package/dist/components/Toast/Toast.js.map +1 -0
  122. package/dist/components/Toast/Toast.stories.d.ts +8 -0
  123. package/dist/components/Tooltip/Tooltip.d.ts +7 -0
  124. package/dist/components/Tooltip/Tooltip.js +36 -0
  125. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  126. package/dist/index.d.ts +31 -3
  127. package/dist/index.js +88 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/node_modules/clsx/dist/clsx.js +17 -0
  130. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  131. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2925 -0
  132. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  133. package/dist/oficios-ui.umd.cjs +1 -1
  134. package/dist/oficios-ui.umd.cjs.map +1 -1
  135. package/dist/theme/ThemeProvider.d.ts +1 -1
  136. package/dist/theme/ThemeProvider.js +22 -0
  137. package/dist/theme/ThemeProvider.js.map +1 -0
  138. package/dist/theme.css +60 -64
  139. package/dist/ui.css +1 -0
  140. package/dist/utils/cn.d.ts +7 -0
  141. package/dist/utils/cn.js +7 -0
  142. package/dist/utils/cn.js.map +1 -0
  143. package/package.json +54 -5
  144. package/dist/oficios-ui.css +0 -1
  145. package/dist/oficios-ui.js +0 -593
  146. package/dist/oficios-ui.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ import { jsxs as v, jsx as a } from "react/jsx-runtime";
2
+ import { useState as x, useRef as p, useCallback as b, useEffect as w, useMemo as g, useContext as h, createContext as T } from "react";
3
+ import { cn as y } from "../../utils/cn.js";
4
+ const N = ({
5
+ tone: e = "info",
6
+ title: o,
7
+ description: c,
8
+ onDismiss: s,
9
+ className: n,
10
+ ...i
11
+ }) => {
12
+ const d = {
13
+ info: "border-[var(--info-color)]/40",
14
+ success: "border-[var(--success-color)]/40",
15
+ warning: "border-[var(--warning-color)]/40",
16
+ error: "border-[var(--md-error)]/40"
17
+ }[e], l = e === "error" || e === "warning" ? "assertive" : "polite", r = e === "error" || e === "warning" ? "alert" : "status";
18
+ return /* @__PURE__ */ v(
19
+ "div",
20
+ {
21
+ className: y(
22
+ "w-[22rem] rounded-[var(--border-radius-md)] border bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-lg)]",
23
+ d,
24
+ n
25
+ ),
26
+ "aria-atomic": "true",
27
+ "aria-live": l,
28
+ onKeyDown: (t) => {
29
+ t.key === "Escape" && (s == null || s());
30
+ },
31
+ role: r,
32
+ tabIndex: 0,
33
+ ...i,
34
+ children: [
35
+ /* @__PURE__ */ v("div", { className: "flex items-start justify-between gap-2", children: [
36
+ /* @__PURE__ */ a("p", { className: "m-0 text-sm font-semibold text-[var(--text-primary)]", children: o }),
37
+ s && /* @__PURE__ */ a(
38
+ "button",
39
+ {
40
+ "aria-label": "Fechar notificação",
41
+ className: "inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--border-radius-sm)] text-[var(--text-secondary)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]",
42
+ onClick: s,
43
+ type: "button",
44
+ children: /* @__PURE__ */ a("span", { "aria-hidden": !0, children: "×" })
45
+ }
46
+ )
47
+ ] }),
48
+ c && /* @__PURE__ */ a("p", { className: "mt-1 text-sm text-[var(--text-secondary)]", children: c })
49
+ ]
50
+ }
51
+ );
52
+ }, f = T(void 0), I = ({ children: e, durationMs: o = 4e3 }) => {
53
+ const [c, s] = x([]), n = p(/* @__PURE__ */ new Map()), i = b((r) => {
54
+ const t = n.current.get(r);
55
+ t && (window.clearTimeout(t), n.current.delete(r)), s((u) => u.filter((m) => m.id !== r));
56
+ }, []), d = b(
57
+ (r) => {
58
+ const t = r.id ?? `toast-${Math.random().toString(36).slice(2, 9)}`;
59
+ s((m) => [...m, { ...r, id: t }]);
60
+ const u = window.setTimeout(() => i(t), o);
61
+ n.current.set(t, u);
62
+ },
63
+ [i, o]
64
+ );
65
+ w(() => {
66
+ const r = n.current;
67
+ return () => {
68
+ r.forEach((t) => window.clearTimeout(t)), r.clear();
69
+ };
70
+ }, []);
71
+ const l = g(
72
+ () => ({ toasts: c, pushToast: d, dismissToast: i }),
73
+ [c, d, i]
74
+ );
75
+ return /* @__PURE__ */ v(f.Provider, { value: l, children: [
76
+ e,
77
+ /* @__PURE__ */ a(C, {})
78
+ ] });
79
+ }, M = () => {
80
+ const e = h(f);
81
+ if (!e)
82
+ throw new Error("useToast must be used inside ToastProvider");
83
+ return e;
84
+ }, C = () => {
85
+ const e = h(f);
86
+ return !e || e.toasts.length === 0 ? null : /* @__PURE__ */ a(
87
+ "div",
88
+ {
89
+ "aria-label": "Notificações",
90
+ className: "pointer-events-none fixed bottom-4 right-4 z-[1200] grid gap-2",
91
+ role: "region",
92
+ children: e.toasts.map((o) => /* @__PURE__ */ a(
93
+ N,
94
+ {
95
+ ...o,
96
+ className: "pointer-events-auto",
97
+ onDismiss: () => e.dismissToast(o.id)
98
+ },
99
+ o.id
100
+ ))
101
+ }
102
+ );
103
+ };
104
+ export {
105
+ N as Toast,
106
+ I as ToastProvider,
107
+ C as ToastViewport,
108
+ M as useToast
109
+ };
110
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.js","sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import type React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ToastProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n id?: string;\n description?: React.ReactNode;\n onDismiss?: () => void;\n title: React.ReactNode;\n tone?: 'info' | 'success' | 'warning' | 'error';\n}\n\nexport const Toast: React.FC<ToastProps> = ({\n tone = 'info',\n title,\n description,\n onDismiss,\n className,\n ...props\n}) => {\n const toneClass = {\n info: 'border-[var(--info-color)]/40',\n success: 'border-[var(--success-color)]/40',\n warning: 'border-[var(--warning-color)]/40',\n error: 'border-[var(--md-error)]/40',\n }[tone];\n const liveMode = tone === 'error' || tone === 'warning' ? 'assertive' : 'polite';\n const role = tone === 'error' || tone === 'warning' ? 'alert' : 'status';\n\n return (\n <div\n className={cn(\n 'w-[22rem] rounded-[var(--border-radius-md)] border bg-[var(--bg-secondary)] p-3 shadow-[var(--shadow-lg)]',\n toneClass,\n className,\n )}\n aria-atomic=\"true\"\n aria-live={liveMode}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n onDismiss?.();\n }\n }}\n role={role}\n tabIndex={0}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"m-0 text-sm font-semibold text-[var(--text-primary)]\">{title}</p>\n {onDismiss && (\n <button\n aria-label=\"Fechar notificação\"\n className=\"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--border-radius-sm)] text-[var(--text-secondary)] transition hover:bg-[var(--bg-hover)] hover:text-[var(--text-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]\"\n onClick={onDismiss}\n type=\"button\"\n >\n <span aria-hidden>×</span>\n </button>\n )}\n </div>\n {description && <p className=\"mt-1 text-sm text-[var(--text-secondary)]\">{description}</p>}\n </div>\n );\n};\n\ninterface ToastContextValue {\n dismissToast: (id: string) => void;\n pushToast: (toast: Omit<ToastProps, 'id'> & { id?: string }) => void;\n toasts: Array<ToastProps & { id: string }>;\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined);\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n durationMs?: number;\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ children, durationMs = 4000 }) => {\n const [toasts, setToasts] = useState<Array<ToastProps & { id: string }>>([]);\n const timeoutIdsRef = useRef<Map<string, number>>(new Map());\n\n const dismissToast = useCallback((id: string) => {\n const timeoutId = timeoutIdsRef.current.get(id);\n if (timeoutId) {\n window.clearTimeout(timeoutId);\n timeoutIdsRef.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const pushToast = useCallback(\n (toast: Omit<ToastProps, 'id'> & { id?: string }) => {\n const id = toast.id ?? `toast-${Math.random().toString(36).slice(2, 9)}`;\n setToasts((prev) => [...prev, { ...toast, id }]);\n const timeoutId = window.setTimeout(() => dismissToast(id), durationMs);\n timeoutIdsRef.current.set(id, timeoutId);\n },\n [dismissToast, durationMs],\n );\n\n useEffect(() => {\n const ids = timeoutIdsRef.current;\n return () => {\n ids.forEach((timeoutId) => window.clearTimeout(timeoutId));\n ids.clear();\n };\n }, []);\n\n const value = useMemo(\n () => ({ toasts, pushToast, dismissToast }),\n [toasts, pushToast, dismissToast],\n );\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <ToastViewport />\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = (): ToastContextValue => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used inside ToastProvider');\n }\n return context;\n};\n\nexport const ToastViewport: React.FC = () => {\n const context = useContext(ToastContext);\n if (!context || context.toasts.length === 0) {\n return null;\n }\n return (\n <div\n aria-label=\"Notificações\"\n className=\"pointer-events-none fixed bottom-4 right-4 z-[1200] grid gap-2\"\n role=\"region\"\n >\n {context.toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n className=\"pointer-events-auto\"\n onDismiss={() => context.dismissToast(toast.id)}\n />\n ))}\n </div>\n );\n};\n"],"names":["Toast","tone","title","description","onDismiss","className","props","toneClass","liveMode","role","jsxs","cn","event","jsx","ToastContext","createContext","ToastProvider","children","durationMs","toasts","setToasts","useState","timeoutIdsRef","useRef","dismissToast","useCallback","id","timeoutId","prev","toast","pushToast","useEffect","ids","value","useMemo","ToastViewport","useToast","context","useContext"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Toast } from './Toast';
3
+ declare const meta: Meta<typeof Toast>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Toast>;
6
+ export declare const Playground: Story;
7
+ export declare const AllTones: Story;
8
+ export declare const WithProvider: Story;
@@ -0,0 +1,7 @@
1
+ import type React from 'react';
2
+ export interface TooltipProps {
3
+ children: React.ReactNode;
4
+ content: React.ReactNode;
5
+ side?: 'top' | 'bottom';
6
+ }
7
+ export declare const Tooltip: React.FC<TooltipProps>;
@@ -0,0 +1,36 @@
1
+ import { jsx as s, jsxs as d } from "react/jsx-runtime";
2
+ import { useState as f, useId as m, isValidElement as u } from "react";
3
+ import { cn as x } from "../../utils/cn.js";
4
+ const g = ({ children: t, content: r, side: i = "top" }) => {
5
+ const [o, e] = f(!1), a = m(), l = i === "top" ? "bottom-full mb-2 left-1/2 -translate-x-1/2" : "top-full mt-2 left-1/2 -translate-x-1/2", n = {
6
+ "aria-describedby": a,
7
+ onBlur: () => e(!1),
8
+ onFocus: () => e(!0),
9
+ onKeyDown: (c) => {
10
+ c.key === "Escape" && e(!1);
11
+ },
12
+ onMouseEnter: () => e(!0),
13
+ onMouseLeave: () => e(!1)
14
+ }, p = u(t) ? /* @__PURE__ */ s("span", { className: "inline-flex", ...n, children: t }) : /* @__PURE__ */ s("span", { className: "inline-flex", tabIndex: 0, ...n, children: t });
15
+ return /* @__PURE__ */ d("span", { className: "relative inline-flex", children: [
16
+ p,
17
+ /* @__PURE__ */ s(
18
+ "span",
19
+ {
20
+ "aria-hidden": !o,
21
+ className: x(
22
+ "pointer-events-none absolute z-20 whitespace-nowrap rounded bg-[var(--brand-cinza-escuro)] px-2 py-1 text-xs text-white shadow-[var(--shadow-sm)] transition",
23
+ o ? "opacity-100" : "opacity-0",
24
+ l
25
+ ),
26
+ id: a,
27
+ role: "tooltip",
28
+ children: r
29
+ }
30
+ )
31
+ ] });
32
+ };
33
+ export {
34
+ g as Tooltip
35
+ };
36
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import type React from 'react';\nimport { isValidElement, useId, useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n side?: 'top' | 'bottom';\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ children, content, side = 'top' }) => {\n const [open, setOpen] = useState(false);\n const tooltipId = useId();\n const sideClass =\n side === 'top'\n ? 'bottom-full mb-2 left-1/2 -translate-x-1/2'\n : 'top-full mt-2 left-1/2 -translate-x-1/2';\n\n const triggerProps = {\n 'aria-describedby': tooltipId,\n onBlur: () => setOpen(false),\n onFocus: () => setOpen(true),\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n },\n onMouseEnter: () => setOpen(true),\n onMouseLeave: () => setOpen(false),\n };\n\n const trigger = isValidElement(children) ? (\n <span className=\"inline-flex\" {...triggerProps}>\n {children}\n </span>\n ) : (\n <span className=\"inline-flex\" tabIndex={0} {...triggerProps}>\n {children}\n </span>\n );\n\n return (\n <span className=\"relative inline-flex\">\n {trigger}\n <span\n aria-hidden={!open}\n className={cn(\n 'pointer-events-none absolute z-20 whitespace-nowrap rounded bg-[var(--brand-cinza-escuro)] px-2 py-1 text-xs text-white shadow-[var(--shadow-sm)] transition',\n open ? 'opacity-100' : 'opacity-0',\n sideClass,\n )}\n id={tooltipId}\n role=\"tooltip\"\n >\n {content}\n </span>\n </span>\n );\n};\n"],"names":["Tooltip","children","content","side","open","setOpen","useState","tooltipId","useId","sideClass","triggerProps","event","trigger","isValidElement","jsx","jsxs","cn"],"mappings":";;;AAUO,MAAMA,IAAkC,CAAC,EAAE,UAAAC,GAAU,SAAAC,GAAS,MAAAC,IAAO,YAAY;AACtF,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAYC,EAAA,GACZC,IACJN,MAAS,QACL,+CACA,2CAEAO,IAAe;AAAA,IACnB,oBAAoBH;AAAA,IACpB,QAAQ,MAAMF,EAAQ,EAAK;AAAA,IAC3B,SAAS,MAAMA,EAAQ,EAAI;AAAA,IAC3B,WAAW,CAACM,MAA+B;AACzC,MAAIA,EAAM,QAAQ,YAChBN,EAAQ,EAAK;AAAA,IAEjB;AAAA,IACA,cAAc,MAAMA,EAAQ,EAAI;AAAA,IAChC,cAAc,MAAMA,EAAQ,EAAK;AAAA,EAAA,GAG7BO,IAAUC,EAAeZ,CAAQ,sBACpC,QAAA,EAAK,WAAU,eAAe,GAAGS,GAC/B,UAAAT,GACH,IAEA,gBAAAa,EAAC,UAAK,WAAU,eAAc,UAAU,GAAI,GAAGJ,GAC5C,UAAAT,GACH;AAGF,SACE,gBAAAc,EAAC,QAAA,EAAK,WAAU,wBACb,UAAA;AAAA,IAAAH;AAAA,IACD,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAa,CAACV;AAAA,QACd,WAAWY;AAAA,UACT;AAAA,UACAZ,IAAO,gBAAgB;AAAA,UACvBK;AAAA,QAAA;AAAA,QAEF,IAAIF;AAAA,QACJ,MAAK;AAAA,QAEJ,UAAAL;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
package/dist/index.d.ts CHANGED
@@ -14,13 +14,41 @@
14
14
  */
15
15
  import './tailwind.css';
16
16
  import './theme/theme.css';
17
- export { Button, type ButtonPalette, type ButtonProps, } from './components/Button/Button';
17
+ export { Accordion, type AccordionItem, type AccordionProps, } from './components/Accordion/Accordion';
18
+ export { Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, } from './components/Breadcrumb/Breadcrumb';
19
+ export { Combobox, type ComboboxOption, type ComboboxProps } from './components/Combobox/Combobox';
20
+ export { FileUpload, type FileUploadProps } from './components/FileUpload/FileUpload';
21
+ export { NumberInput, type NumberInputProps } from './components/NumberInput/NumberInput';
22
+ export { Stepper, type StepperItem, type StepperProps, type StepStatus, } from './components/Stepper/Stepper';
23
+ export { Button, type ButtonPalette, type ButtonProps } from './components/Button/Button';
24
+ export { Alert, type AlertProps } from './components/Alert/Alert';
25
+ export { Badge, type BadgeProps } from './components/Badge/Badge';
18
26
  export { Card, type CardProps } from './components/Card/Card';
27
+ export { Checkbox, type CheckboxProps } from './components/Checkbox/Checkbox';
28
+ export { Chip, type ChipProps } from './components/Chip/Chip';
29
+ export { Divider, type DividerProps } from './components/Divider/Divider';
30
+ export { EmptyState, type EmptyStateProps } from './components/EmptyState/EmptyState';
19
31
  export { Footer, type FooterProps } from './components/Footer/Footer';
20
32
  export { Header, type HeaderProps } from './components/Header/Header';
21
33
  export { Input, type InputProps } from './components/Input/Input';
34
+ export { Container, Grid, Stack, type ContainerProps, type GridProps, type StackProps, } from './components/Layout/Layout';
22
35
  export { Modal, type ModalProps } from './components/Modal/Modal';
23
- export { Paragraph, type ParagraphProps, } from './components/Paragraph/Paragraph';
36
+ export { Sidebar, Topbar, type SidebarProps, type TopbarProps, } from './components/Navigation/Navigation';
37
+ export { Pagination, type PaginationProps } from './components/Pagination/Pagination';
38
+ export { Paragraph, type ParagraphProps } from './components/Paragraph/Paragraph';
39
+ export { PageHeader, type PageHeaderProps } from './components/PageHeader/PageHeader';
40
+ export { Popover, type PopoverProps } from './components/Popover/Popover';
41
+ export { Radio, type RadioProps } from './components/Radio/Radio';
42
+ export { SectionHeader, type SectionHeaderProps } from './components/SectionHeader/SectionHeader';
43
+ export { Select, type SelectOption, type SelectProps } from './components/Select/Select';
44
+ export { Skeleton, type SkeletonProps } from './components/Skeleton/Skeleton';
24
45
  export { Subtitle, type SubtitleProps } from './components/Subtitle/Subtitle';
46
+ export { Switch, type SwitchProps } from './components/Switch/Switch';
47
+ export { Tag, type TagProps } from './components/Tag/Tag';
48
+ export { Tabs, type TabItem, type TabsProps } from './components/Tabs/Tabs';
49
+ export { Table, type TableProps } from './components/Table/Table';
50
+ export { Textarea, type TextareaProps } from './components/Textarea/Textarea';
51
+ export { Toast, ToastProvider, ToastViewport, type ToastProps, type ToastProviderProps, useToast, } from './components/Toast/Toast';
25
52
  export { Title, type TitleProps } from './components/Title/Title';
26
- export { type Theme, ThemeProvider, useTheme, } from './theme/ThemeProvider';
53
+ export { Tooltip, type TooltipProps } from './components/Tooltip/Tooltip';
54
+ export { type Theme, ThemeProvider, useTheme } from './theme/ThemeProvider';
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ import { Accordion as p } from "./components/Accordion/Accordion.js";
4
+ import { Breadcrumb as x } from "./components/Breadcrumb/Breadcrumb.js";
5
+ import { Combobox as a } from "./components/Combobox/Combobox.js";
6
+ import { FileUpload as d } from "./components/FileUpload/FileUpload.js";
7
+ import { NumberInput as b } from "./components/NumberInput/NumberInput.js";
8
+ import { Stepper as n } from "./components/Stepper/Stepper.js";
9
+ import { Button as c } from "./components/Button/Button.js";
10
+ import { Alert as s } from "./components/Alert/Alert.js";
11
+ import { Badge as P } from "./components/Badge/Badge.js";
12
+ import { Card as C } from "./components/Card/Card.js";
13
+ import { Checkbox as k } from "./components/Checkbox/Checkbox.js";
14
+ import { Chip as H } from "./components/Chip/Chip.js";
15
+ import { Divider as A } from "./components/Divider/Divider.js";
16
+ import { EmptyState as I } from "./components/EmptyState/EmptyState.js";
17
+ import { Footer as D } from "./components/Footer/Footer.js";
18
+ import { Header as G } from "./components/Header/Header.js";
19
+ import { Input as N } from "./components/Input/Input.js";
20
+ import { Container as U, Grid as V, Stack as j } from "./components/Layout/Layout.js";
21
+ import { Modal as z } from "./components/Modal/Modal.js";
22
+ import { Sidebar as K, Topbar as L } from "./components/Navigation/Navigation.js";
23
+ import { Pagination as Q } from "./components/Pagination/Pagination.js";
24
+ import { Paragraph as X } from "./components/Paragraph/Paragraph.js";
25
+ import { PageHeader as Z } from "./components/PageHeader/PageHeader.js";
26
+ import { Popover as $ } from "./components/Popover/Popover.js";
27
+ import { Radio as ro } from "./components/Radio/Radio.js";
28
+ import { SectionHeader as to } from "./components/SectionHeader/SectionHeader.js";
29
+ import { Select as mo } from "./components/Select/Select.js";
30
+ import { Skeleton as fo } from "./components/Skeleton/Skeleton.js";
31
+ import { Subtitle as io } from "./components/Subtitle/Subtitle.js";
32
+ import { Switch as bo } from "./components/Switch/Switch.js";
33
+ import { Tag as no } from "./components/Tag/Tag.js";
34
+ import { Tabs as co } from "./components/Tabs/Tabs.js";
35
+ import { Table as so } from "./components/Table/Table.js";
36
+ import { Textarea as Po } from "./components/Textarea/Textarea.js";
37
+ import { Toast as Co, ToastProvider as vo, ToastViewport as ko, useToast as Bo } from "./components/Toast/Toast.js";
38
+ import { Title as wo } from "./components/Title/Title.js";
39
+ import { Tooltip as Fo } from "./components/Tooltip/Tooltip.js";
40
+ import { ThemeProvider as yo, useTheme as Do } from "./theme/ThemeProvider.js";
41
+ export {
42
+ p as Accordion,
43
+ s as Alert,
44
+ P as Badge,
45
+ x as Breadcrumb,
46
+ c as Button,
47
+ C as Card,
48
+ k as Checkbox,
49
+ H as Chip,
50
+ a as Combobox,
51
+ U as Container,
52
+ A as Divider,
53
+ I as EmptyState,
54
+ d as FileUpload,
55
+ D as Footer,
56
+ V as Grid,
57
+ G as Header,
58
+ N as Input,
59
+ z as Modal,
60
+ b as NumberInput,
61
+ Z as PageHeader,
62
+ Q as Pagination,
63
+ X as Paragraph,
64
+ $ as Popover,
65
+ ro as Radio,
66
+ to as SectionHeader,
67
+ mo as Select,
68
+ K as Sidebar,
69
+ fo as Skeleton,
70
+ j as Stack,
71
+ n as Stepper,
72
+ io as Subtitle,
73
+ bo as Switch,
74
+ so as Table,
75
+ co as Tabs,
76
+ no as Tag,
77
+ Po as Textarea,
78
+ yo as ThemeProvider,
79
+ wo as Title,
80
+ Co as Toast,
81
+ vo as ToastProvider,
82
+ ko as ToastViewport,
83
+ Fo as Tooltip,
84
+ L as Topbar,
85
+ Do as useTheme,
86
+ Bo as useToast
87
+ };
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ function i(r) {
2
+ var f, n, t = "";
3
+ if (typeof r == "string" || typeof r == "number") t += r;
4
+ else if (typeof r == "object") if (Array.isArray(r)) {
5
+ var o = r.length;
6
+ for (f = 0; f < o; f++) r[f] && (n = i(r[f])) && (t && (t += " "), t += n);
7
+ } else for (n in r) r[n] && (t && (t += " "), t += n);
8
+ return t;
9
+ }
10
+ function a() {
11
+ for (var r, f, n = 0, t = "", o = arguments.length; n < o; n++) (r = arguments[n]) && (f = i(r)) && (t && (t += " "), t += f);
12
+ return t;
13
+ }
14
+ export {
15
+ a as clsx
16
+ };
17
+ //# sourceMappingURL=clsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clsx.js","sources":["../../../../node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":["r","e","t","f","n","clsx"],"mappings":"AAAA,SAASA,EAAEC,GAAE;AAAC,MAAIC,GAAEC,GAAEC,IAAE;AAAG,MAAa,OAAOH,KAAjB,YAA8B,OAAOA,KAAjB,SAAmB,CAAAG,KAAGH;AAAA,WAAoB,OAAOA,KAAjB,SAAmB,KAAG,MAAM,QAAQA,CAAC,GAAE;AAAC,QAAI,IAAEA,EAAE;AAAO,SAAIC,IAAE,GAAEA,IAAE,GAAEA,IAAI,CAAAD,EAAEC,CAAC,MAAIC,IAAEH,EAAEC,EAAEC,CAAC,CAAC,OAAKE,MAAIA,KAAG,MAAKA,KAAGD;AAAA,EAAE,MAAM,MAAIA,KAAKF,EAAE,CAAAA,EAAEE,CAAC,MAAIC,MAAIA,KAAG,MAAKA,KAAGD;AAAG,SAAOC;AAAC;AAAQ,SAASC,IAAM;AAAC,WAAQJ,GAAEC,GAAEC,IAAE,GAAEC,IAAE,IAAG,IAAE,UAAU,QAAOD,IAAE,GAAEA,IAAI,EAACF,IAAE,UAAUE,CAAC,OAAKD,IAAEF,EAAEC,CAAC,OAAKG,MAAIA,KAAG,MAAKA,KAAGF;AAAG,SAAOE;AAAC;","x_google_ignoreList":[0]}