@sbkbs/ui 1.0.5 → 2.0.0-beta.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 (209) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/MIGRATION.md +96 -0
  3. package/README.md +221 -115
  4. package/dist/assets/favicon/apple-touch-icon.png +0 -0
  5. package/dist/assets/favicon/favicon-96x96.png +0 -0
  6. package/dist/assets/favicon/favicon.ico +0 -0
  7. package/dist/assets/favicon/favicon.svg +1 -0
  8. package/dist/assets/favicon/site.webmanifest +21 -0
  9. package/dist/assets/favicon/web-app-manifest-192x192.png +0 -0
  10. package/dist/assets/favicon/web-app-manifest-512x512.png +0 -0
  11. package/dist/base.css +38 -0
  12. package/dist/components/Accordion/Accordion.d.ts +13 -1
  13. package/dist/components/Accordion/Accordion.js +100 -52
  14. package/dist/components/Accordion/Accordion.js.map +1 -1
  15. package/dist/components/Alert/Alert.d.ts +17 -4
  16. package/dist/components/Alert/Alert.js +64 -20
  17. package/dist/components/Alert/Alert.js.map +1 -1
  18. package/dist/components/Avatar/Avatar.d.ts +17 -0
  19. package/dist/components/Avatar/Avatar.js +66 -0
  20. package/dist/components/Avatar/Avatar.js.map +1 -0
  21. package/dist/components/Badge/Badge.d.ts +11 -2
  22. package/dist/components/Badge/Badge.js +42 -30
  23. package/dist/components/Badge/Badge.js.map +1 -1
  24. package/dist/components/Breadcrumb/Breadcrumb.d.ts +5 -2
  25. package/dist/components/Breadcrumb/Breadcrumb.js +23 -16
  26. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  27. package/dist/components/Button/Button.d.ts +10 -8
  28. package/dist/components/Button/Button.js +73 -114
  29. package/dist/components/Button/Button.js.map +1 -1
  30. package/dist/components/Card/Card.d.ts +33 -3
  31. package/dist/components/Card/Card.js +91 -30
  32. package/dist/components/Card/Card.js.map +1 -1
  33. package/dist/components/Checkbox/Checkbox.d.ts +4 -1
  34. package/dist/components/Checkbox/Checkbox.js +32 -31
  35. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  36. package/dist/components/Chip/Chip.d.ts +7 -1
  37. package/dist/components/Chip/Chip.js +19 -9
  38. package/dist/components/Chip/Chip.js.map +1 -1
  39. package/dist/components/Combobox/Combobox.d.ts +10 -2
  40. package/dist/components/Combobox/Combobox.js +146 -133
  41. package/dist/components/Combobox/Combobox.js.map +1 -1
  42. package/dist/components/Divider/Divider.d.ts +7 -1
  43. package/dist/components/Divider/Divider.js +28 -12
  44. package/dist/components/Divider/Divider.js.map +1 -1
  45. package/dist/components/DropdownMenu/DropdownMenu.d.ts +33 -0
  46. package/dist/components/DropdownMenu/DropdownMenu.js +147 -0
  47. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  48. package/dist/components/EmptyState/EmptyState.d.ts +7 -1
  49. package/dist/components/EmptyState/EmptyState.js +28 -19
  50. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  51. package/dist/components/Field/Field.d.ts +21 -0
  52. package/dist/components/Field/Field.js +35 -0
  53. package/dist/components/Field/Field.js.map +1 -0
  54. package/dist/components/FileUpload/FileUpload.d.ts +9 -2
  55. package/dist/components/FileUpload/FileUpload.js +128 -102
  56. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  57. package/dist/components/Footer/Footer.d.ts +19 -6
  58. package/dist/components/Footer/Footer.js +47 -50
  59. package/dist/components/Footer/Footer.js.map +1 -1
  60. package/dist/components/GlassPanel/GlassPanel.d.ts +18 -0
  61. package/dist/components/GlassPanel/GlassPanel.js +39 -0
  62. package/dist/components/GlassPanel/GlassPanel.js.map +1 -0
  63. package/dist/components/Header/Header.d.ts +27 -10
  64. package/dist/components/Header/Header.js +98 -98
  65. package/dist/components/Header/Header.js.map +1 -1
  66. package/dist/components/Highlight/Highlight.d.ts +13 -0
  67. package/dist/components/Highlight/Highlight.js +18 -0
  68. package/dist/components/Highlight/Highlight.js.map +1 -0
  69. package/dist/components/Icon/Icon.d.ts +21 -0
  70. package/dist/components/Icon/Icon.js +31 -0
  71. package/dist/components/Icon/Icon.js.map +1 -0
  72. package/dist/components/IconButton/IconButton.d.ts +12 -0
  73. package/dist/components/IconButton/IconButton.js +49 -0
  74. package/dist/components/IconButton/IconButton.js.map +1 -0
  75. package/dist/components/Input/Input.d.ts +3 -2
  76. package/dist/components/Input/Input.js +51 -69
  77. package/dist/components/Input/Input.js.map +1 -1
  78. package/dist/components/Layout/Layout.d.ts +2 -0
  79. package/dist/components/Layout/Layout.js +24 -18
  80. package/dist/components/Layout/Layout.js.map +1 -1
  81. package/dist/components/Logo/Logo.d.ts +27 -0
  82. package/dist/components/Logo/Logo.js +107 -0
  83. package/dist/components/Logo/Logo.js.map +1 -0
  84. package/dist/components/MiniCard/MiniCard.d.ts +21 -0
  85. package/dist/components/MiniCard/MiniCard.js +90 -0
  86. package/dist/components/MiniCard/MiniCard.js.map +1 -0
  87. package/dist/components/Modal/Modal.d.ts +16 -3
  88. package/dist/components/Modal/Modal.js +124 -93
  89. package/dist/components/Modal/Modal.js.map +1 -1
  90. package/dist/components/Navigation/Navigation.d.ts +1 -0
  91. package/dist/components/Navigation/Navigation.js +14 -14
  92. package/dist/components/Navigation/Navigation.js.map +1 -1
  93. package/dist/components/NumberInput/NumberInput.d.ts +5 -2
  94. package/dist/components/NumberInput/NumberInput.js +98 -128
  95. package/dist/components/NumberInput/NumberInput.js.map +1 -1
  96. package/dist/components/PageHeader/PageHeader.d.ts +8 -1
  97. package/dist/components/PageHeader/PageHeader.js +26 -25
  98. package/dist/components/PageHeader/PageHeader.js.map +1 -1
  99. package/dist/components/Pagination/Pagination.d.ts +15 -2
  100. package/dist/components/Pagination/Pagination.js +68 -34
  101. package/dist/components/Pagination/Pagination.js.map +1 -1
  102. package/dist/components/Paragraph/Paragraph.d.ts +8 -2
  103. package/dist/components/Paragraph/Paragraph.js +39 -36
  104. package/dist/components/Paragraph/Paragraph.js.map +1 -1
  105. package/dist/components/Popover/Popover.d.ts +12 -1
  106. package/dist/components/Popover/Popover.js +49 -37
  107. package/dist/components/Popover/Popover.js.map +1 -1
  108. package/dist/components/ProgressBar/ProgressBar.d.ts +18 -0
  109. package/dist/components/ProgressBar/ProgressBar.js +71 -0
  110. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  111. package/dist/components/Radio/Radio.d.ts +2 -1
  112. package/dist/components/Radio/Radio.js +27 -31
  113. package/dist/components/Radio/Radio.js.map +1 -1
  114. package/dist/components/SectionHeader/SectionHeader.d.ts +6 -1
  115. package/dist/components/SectionHeader/SectionHeader.js +14 -12
  116. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  117. package/dist/components/Select/Select.d.ts +6 -2
  118. package/dist/components/Select/Select.js +47 -35
  119. package/dist/components/Select/Select.js.map +1 -1
  120. package/dist/components/SideNav/SideNav.d.ts +55 -0
  121. package/dist/components/SideNav/SideNav.js +141 -0
  122. package/dist/components/SideNav/SideNav.js.map +1 -0
  123. package/dist/components/Skeleton/Skeleton.d.ts +12 -1
  124. package/dist/components/Skeleton/Skeleton.js +33 -18
  125. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  126. package/dist/components/Spinner/Spinner.d.ts +15 -0
  127. package/dist/components/Spinner/Spinner.js +57 -0
  128. package/dist/components/Spinner/Spinner.js.map +1 -0
  129. package/dist/components/Stepper/Stepper.d.ts +1 -1
  130. package/dist/components/Stepper/Stepper.js +68 -55
  131. package/dist/components/Stepper/Stepper.js.map +1 -1
  132. package/dist/components/Subtitle/Subtitle.d.ts +9 -3
  133. package/dist/components/Subtitle/Subtitle.js +29 -35
  134. package/dist/components/Subtitle/Subtitle.js.map +1 -1
  135. package/dist/components/Switch/Switch.d.ts +2 -1
  136. package/dist/components/Switch/Switch.js +45 -33
  137. package/dist/components/Switch/Switch.js.map +1 -1
  138. package/dist/components/Table/Table.d.ts +19 -1
  139. package/dist/components/Table/Table.js +48 -11
  140. package/dist/components/Table/Table.js.map +1 -1
  141. package/dist/components/Tabs/Tabs.d.ts +16 -2
  142. package/dist/components/Tabs/Tabs.js +80 -44
  143. package/dist/components/Tabs/Tabs.js.map +1 -1
  144. package/dist/components/Tag/Tag.d.ts +8 -1
  145. package/dist/components/Tag/Tag.js +27 -12
  146. package/dist/components/Tag/Tag.js.map +1 -1
  147. package/dist/components/Textarea/Textarea.d.ts +3 -1
  148. package/dist/components/Textarea/Textarea.js +36 -40
  149. package/dist/components/Textarea/Textarea.js.map +1 -1
  150. package/dist/components/Title/Title.d.ts +9 -3
  151. package/dist/components/Title/Title.js +42 -42
  152. package/dist/components/Title/Title.js.map +1 -1
  153. package/dist/components/Toast/Toast.d.ts +39 -11
  154. package/dist/components/Toast/Toast.js +130 -76
  155. package/dist/components/Toast/Toast.js.map +1 -1
  156. package/dist/components/Tooltip/Tooltip.d.ts +12 -2
  157. package/dist/components/Tooltip/Tooltip.js +50 -32
  158. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  159. package/dist/components/Typography/weight.d.ts +9 -0
  160. package/dist/components/Typography/weight.js +5 -0
  161. package/dist/components/Typography/weight.js.map +1 -0
  162. package/dist/fonts.css +8 -0
  163. package/dist/index.cjs +2 -0
  164. package/dist/index.cjs.map +1 -0
  165. package/dist/index.d.ts +55 -43
  166. package/dist/index.js +118 -83
  167. package/dist/index.js.map +1 -1
  168. package/dist/reset.css +9 -0
  169. package/dist/styles.css +1 -0
  170. package/dist/tailwind.css +153 -0
  171. package/dist/theme/ThemeProvider.d.ts +21 -3
  172. package/dist/theme/ThemeProvider.js +57 -18
  173. package/dist/theme/ThemeProvider.js.map +1 -1
  174. package/dist/theme/tokens.d.ts +43 -0
  175. package/dist/theme/tokens.js +39 -0
  176. package/dist/theme/tokens.js.map +1 -0
  177. package/dist/theme.css +296 -261
  178. package/dist/tokens.css +327 -0
  179. package/dist/utils/cn.d.ts +2 -2
  180. package/dist/utils/cn.js +19 -4
  181. package/dist/utils/cn.js.map +1 -1
  182. package/dist/utils/styles.d.ts +37 -0
  183. package/dist/utils/styles.js +35 -0
  184. package/dist/utils/styles.js.map +1 -0
  185. package/package.json +140 -114
  186. package/dist/components/Accordion/Accordion.stories.d.ts +0 -7
  187. package/dist/components/Alert/Alert.stories.d.ts +0 -8
  188. package/dist/components/Badge/Badge.stories.d.ts +0 -8
  189. package/dist/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -8
  190. package/dist/components/Button/Button.stories.d.ts +0 -7
  191. package/dist/components/Card/Card.stories.d.ts +0 -8
  192. package/dist/components/Checkbox/Checkbox.stories.d.ts +0 -7
  193. package/dist/components/Combobox/Combobox.stories.d.ts +0 -9
  194. package/dist/components/Feedback/Feedback.stories.d.ts +0 -5
  195. package/dist/components/FileUpload/FileUpload.stories.d.ts +0 -10
  196. package/dist/components/Input/Input.stories.d.ts +0 -9
  197. package/dist/components/Modal/Modal.stories.d.ts +0 -8
  198. package/dist/components/NumberInput/NumberInput.stories.d.ts +0 -8
  199. package/dist/components/Pagination/Pagination.stories.d.ts +0 -8
  200. package/dist/components/Radio/Radio.stories.d.ts +0 -7
  201. package/dist/components/Select/Select.stories.d.ts +0 -8
  202. package/dist/components/Stepper/Stepper.stories.d.ts +0 -8
  203. package/dist/components/Switch/Switch.stories.d.ts +0 -8
  204. package/dist/components/Tabs/Tabs.stories.d.ts +0 -8
  205. package/dist/components/Textarea/Textarea.stories.d.ts +0 -7
  206. package/dist/components/Toast/Toast.stories.d.ts +0 -8
  207. package/dist/oficios-ui.css +0 -1
  208. package/dist/oficios-ui.umd.cjs +0 -2
  209. package/dist/oficios-ui.umd.cjs.map +0 -1
@@ -1,86 +1,99 @@
1
- import { jsx as r, jsxs as d } from "react/jsx-runtime";
2
- import { cn as a } from "../../utils/cn.js";
3
- const f = ({
4
- items: n,
5
- currentStep: o,
6
- orientation: m = "horizontal",
7
- className: c,
8
- ...p
1
+ import { jsx as t, jsxs as n, Fragment as u } from "react/jsx-runtime";
2
+ import { Check as x } from "lucide-react";
3
+ import { cn as r } from "../../utils/cn.js";
4
+ const g = ({
5
+ items: o,
6
+ currentStep: m,
7
+ orientation: f = "horizontal",
8
+ className: p,
9
+ ...b
9
10
  }) => {
10
- const s = n.findIndex((e) => e.id === o), v = (e) => e < s ? "completed" : e === s ? "active" : "pending", i = m === "horizontal";
11
- return /* @__PURE__ */ r(
11
+ const l = o.findIndex((e) => e.id === m), a = f === "horizontal", h = (e) => e < l ? "completed" : e === l ? "active" : "pending", c = (e) => e ? "bg-sbk-primary" : "bg-sbk-line-strong";
12
+ return /* @__PURE__ */ t(
12
13
  "div",
13
14
  {
14
15
  "aria-label": "Progresso",
15
- className: a(i ? "flex items-start" : "flex flex-col", c),
16
+ className: r(a ? "flex items-start" : "flex flex-col", p),
16
17
  role: "list",
17
- ...p,
18
- children: n.map((e, l) => {
19
- const t = v(l), x = l === n.length - 1;
20
- return /* @__PURE__ */ d(
18
+ ...b,
19
+ children: o.map((e, i) => {
20
+ const s = h(i), d = i === o.length - 1;
21
+ return /* @__PURE__ */ n(
21
22
  "div",
22
23
  {
23
- className: a("flex", i ? "flex-1 flex-col items-center" : "gap-4"),
24
+ className: r("flex", a ? "flex-1 flex-col items-center" : "gap-4"),
24
25
  role: "listitem",
25
26
  children: [
26
- /* @__PURE__ */ d(
27
+ /* @__PURE__ */ n(
27
28
  "div",
28
29
  {
29
- className: a(
30
- i ? "flex w-full items-center" : "flex flex-col items-center"
30
+ className: r(
31
+ a ? "flex w-full items-center" : "flex flex-col items-center"
31
32
  ),
32
33
  children: [
33
- /* @__PURE__ */ r(
34
+ a && /* Conector esquerdo: espaçador no 1º item, linha colorida nos demais */
35
+ (i === 0 ? /* @__PURE__ */ t("div", { className: "flex-1", "aria-hidden": "true" }) : /* @__PURE__ */ t(
34
36
  "div",
35
37
  {
36
- "aria-current": t === "active" ? "step" : void 0,
37
- className: a(
38
- "relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border-2 text-sm font-semibold transition",
39
- t === "completed" && "border-[var(--md-primary)] bg-[var(--md-primary)] text-[var(--md-on-primary)]",
40
- t === "active" && "border-[var(--md-primary)] bg-[var(--md-surface)] text-[var(--md-primary)]",
41
- t === "pending" && "border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--text-muted)]"
42
- ),
43
- children: t === "completed" ? /* @__PURE__ */ r(
44
- "svg",
45
- {
46
- className: "h-4 w-4",
47
- fill: "none",
48
- stroke: "currentColor",
49
- strokeWidth: "2.5",
50
- viewBox: "0 0 24 24",
51
- children: /* @__PURE__ */ r("path", { d: "M20 6 9 17l-5-5", strokeLinecap: "round", strokeLinejoin: "round" })
52
- }
53
- ) : l + 1
38
+ "aria-hidden": "true",
39
+ className: r("h-0.5 flex-1", c(i <= l))
54
40
  }
55
- ),
56
- !x && /* @__PURE__ */ r(
41
+ )),
42
+ /* @__PURE__ */ t(
57
43
  "div",
58
44
  {
59
- className: a(
60
- "transition",
61
- i ? "h-0.5 flex-1" : "my-1 ml-[1.0625rem] w-0.5 flex-1",
62
- l < s ? "bg-[var(--md-primary)]" : "bg-[var(--md-outline-variant)]"
45
+ "aria-current": s === "active" ? "step" : void 0,
46
+ className: r(
47
+ "relative z-10 flex size-9 shrink-0 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors motion-reduce:transition-none",
48
+ s === "completed" && "border-sbk-primary bg-sbk-primary text-sbk-on-primary",
49
+ s === "active" && "border-sbk-primary bg-sbk-surface text-sbk-primary",
50
+ s === "pending" && "border-sbk-line-strong bg-sbk-surface text-sbk-fg-muted"
63
51
  ),
64
- "aria-hidden": "true"
52
+ children: s === "completed" ? /* @__PURE__ */ n(u, { children: [
53
+ /* @__PURE__ */ t(x, { "aria-hidden": "true", className: "size-4", strokeWidth: 2.5 }),
54
+ /* @__PURE__ */ t("span", { className: "sr-only", children: "Concluído: " })
55
+ ] }) : i + 1
65
56
  }
57
+ ),
58
+ a ? (
59
+ /* Conector direito: linha colorida se não for último, espaçador se for */
60
+ d ? /* @__PURE__ */ t("div", { className: "flex-1", "aria-hidden": "true" }) : /* @__PURE__ */ t(
61
+ "div",
62
+ {
63
+ "aria-hidden": "true",
64
+ className: r("h-0.5 flex-1", c(i < l))
65
+ }
66
+ )
67
+ ) : (
68
+ /* Conector vertical (para orientação vertical) */
69
+ !d && /* @__PURE__ */ t(
70
+ "div",
71
+ {
72
+ "aria-hidden": "true",
73
+ className: r(
74
+ "my-1 ml-[1.0625rem] w-0.5 flex-1",
75
+ c(i < l)
76
+ )
77
+ }
78
+ )
66
79
  )
67
80
  ]
68
81
  }
69
82
  ),
70
- /* @__PURE__ */ d("div", { className: a("mt-2 text-center", i ? "" : "mt-0 pb-6 text-left"), children: [
71
- /* @__PURE__ */ r(
83
+ /* @__PURE__ */ n("div", { className: r("mt-2 text-center", !a && "mt-0 pb-6 text-left"), children: [
84
+ /* @__PURE__ */ t(
72
85
  "p",
73
86
  {
74
- className: a(
75
- "text-sm font-medium leading-tight",
76
- t === "active" && "text-[var(--md-primary)]",
77
- t === "completed" && "text-[var(--text-primary)]",
78
- t === "pending" && "text-[var(--text-muted)]"
87
+ className: r(
88
+ "m-0 text-sm font-semibold leading-tight",
89
+ s === "active" && "text-sbk-fg-heading",
90
+ s === "completed" && "text-sbk-fg",
91
+ s === "pending" && "font-light text-sbk-fg-muted"
79
92
  ),
80
93
  children: e.label
81
94
  }
82
95
  ),
83
- e.description && /* @__PURE__ */ r("p", { className: "mt-0.5 text-xs text-[var(--text-muted)]", children: e.description })
96
+ e.description && /* @__PURE__ */ t("p", { className: "m-0 mt-0.5 text-xs font-light text-sbk-fg-muted", children: e.description })
84
97
  ] })
85
98
  ]
86
99
  },
@@ -90,8 +103,8 @@ const f = ({
90
103
  }
91
104
  );
92
105
  };
93
- f.displayName = "Stepper";
106
+ g.displayName = "Stepper";
94
107
  export {
95
- f as Stepper
108
+ g as Stepper
96
109
  };
97
110
  //# sourceMappingURL=Stepper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stepper.js","sources":["../../../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface StepperItem {\n description?: string;\n id: string;\n label: string;\n}\n\nexport type StepStatus = 'completed' | 'active' | 'pending';\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n currentStep: string;\n items: StepperItem[];\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Stepper: React.FC<StepperProps> = ({\n items,\n currentStep,\n orientation = 'horizontal',\n className,\n ...props\n}) => {\n const currentIndex = items.findIndex((item) => item.id === currentStep);\n\n const getStatus = (index: number): StepStatus => {\n if (index < currentIndex) return 'completed';\n if (index === currentIndex) return 'active';\n return 'pending';\n };\n\n const isHorizontal = orientation === 'horizontal';\n\n return (\n <div\n aria-label=\"Progresso\"\n className={cn(isHorizontal ? 'flex items-start' : 'flex flex-col', className)}\n role=\"list\"\n {...props}\n >\n {items.map((item, index) => {\n const status = getStatus(index);\n const isLast = index === items.length - 1;\n\n return (\n <div\n key={item.id}\n className={cn('flex', isHorizontal ? 'flex-1 flex-col items-center' : 'gap-4')}\n role=\"listitem\"\n >\n {/* Step indicator + connector */}\n <div\n className={cn(\n isHorizontal ? 'flex w-full items-center' : 'flex flex-col items-center',\n )}\n >\n {/* Circle */}\n <div\n aria-current={status === 'active' ? 'step' : undefined}\n className={cn(\n 'relative z-10 flex h-9 w-9 shrink-0 items-center justify-center rounded-full border-2 text-sm font-semibold transition',\n status === 'completed' &&\n 'border-[var(--md-primary)] bg-[var(--md-primary)] text-[var(--md-on-primary)]',\n status === 'active' &&\n 'border-[var(--md-primary)] bg-[var(--md-surface)] text-[var(--md-primary)]',\n status === 'pending' &&\n 'border-[var(--md-outline-variant)] bg-[var(--md-surface)] text-[var(--text-muted)]',\n )}\n >\n {status === 'completed' ? (\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M20 6 9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : (\n index + 1\n )}\n </div>\n\n {/* Connector line */}\n {!isLast && (\n <div\n className={cn(\n 'transition',\n isHorizontal ? 'h-0.5 flex-1' : 'my-1 ml-[1.0625rem] w-0.5 flex-1',\n index < currentIndex\n ? 'bg-[var(--md-primary)]'\n : 'bg-[var(--md-outline-variant)]',\n )}\n aria-hidden=\"true\"\n />\n )}\n </div>\n\n {/* Label + description */}\n <div className={cn('mt-2 text-center', isHorizontal ? '' : 'mt-0 pb-6 text-left')}>\n <p\n className={cn(\n 'text-sm font-medium leading-tight',\n status === 'active' && 'text-[var(--md-primary)]',\n status === 'completed' && 'text-[var(--text-primary)]',\n status === 'pending' && 'text-[var(--text-muted)]',\n )}\n >\n {item.label}\n </p>\n {item.description && (\n <p className=\"mt-0.5 text-xs text-[var(--text-muted)]\">{item.description}</p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nStepper.displayName = 'Stepper';\n"],"names":["Stepper","items","currentStep","orientation","className","props","currentIndex","item","getStatus","index","isHorizontal","jsx","cn","status","isLast","jsxs"],"mappings":";;AAiBO,MAAMA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeL,EAAM,UAAU,CAACM,MAASA,EAAK,OAAOL,CAAW,GAEhEM,IAAY,CAACC,MACbA,IAAQH,IAAqB,cAC7BG,MAAUH,IAAqB,WAC5B,WAGHI,IAAeP,MAAgB;AAErC,SACE,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAWC,EAAGF,IAAe,qBAAqB,iBAAiBN,CAAS;AAAA,MAC5E,MAAK;AAAA,MACJ,GAAGC;AAAA,MAEH,UAAAJ,EAAM,IAAI,CAACM,GAAME,MAAU;AAC1B,cAAMI,IAASL,EAAUC,CAAK,GACxBK,IAASL,MAAUR,EAAM,SAAS;AAExC,eACE,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWH,EAAG,QAAQF,IAAe,iCAAiC,OAAO;AAAA,YAC7E,MAAK;AAAA,YAGL,UAAA;AAAA,cAAA,gBAAAK;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWH;AAAA,oBACTF,IAAe,6BAA6B;AAAA,kBAAA;AAAA,kBAI9C,UAAA;AAAA,oBAAA,gBAAAC;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,gBAAcE,MAAW,WAAW,SAAS;AAAA,wBAC7C,WAAWD;AAAA,0BACT;AAAA,0BACAC,MAAW,eACT;AAAA,0BACFA,MAAW,YACT;AAAA,0BACFA,MAAW,aACT;AAAA,wBAAA;AAAA,wBAGH,gBAAW,cACV,gBAAAF;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,WAAU;AAAA,4BACV,MAAK;AAAA,4BACL,QAAO;AAAA,4BACP,aAAY;AAAA,4BACZ,SAAQ;AAAA,4BAER,4BAAC,QAAA,EAAK,GAAE,mBAAkB,eAAc,SAAQ,gBAAe,QAAA,CAAQ;AAAA,0BAAA;AAAA,wBAAA,IAGzEF,IAAQ;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAKX,CAACK,KACA,gBAAAH;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWC;AAAA,0BACT;AAAA,0BACAF,IAAe,iBAAiB;AAAA,0BAChCD,IAAQH,IACJ,2BACA;AAAA,wBAAA;AAAA,wBAEN,eAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACd;AAAA,gBAAA;AAAA,cAAA;AAAA,cAKJ,gBAAAS,EAAC,SAAI,WAAWH,EAAG,oBAAoBF,IAAe,KAAK,qBAAqB,GAC9E,UAAA;AAAA,gBAAA,gBAAAC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWC;AAAA,sBACT;AAAA,sBACAC,MAAW,YAAY;AAAA,sBACvBA,MAAW,eAAe;AAAA,sBAC1BA,MAAW,aAAa;AAAA,oBAAA;AAAA,oBAGzB,UAAAN,EAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEPA,EAAK,eACJ,gBAAAI,EAAC,OAAE,WAAU,2CAA2C,YAAK,YAAA,CAAY;AAAA,cAAA,EAAA,CAE7E;AAAA,YAAA;AAAA,UAAA;AAAA,UApEKJ,EAAK;AAAA,QAAA;AAAA,MAuEhB,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAP,EAAQ,cAAc;"}
1
+ {"version":3,"file":"Stepper.js","sources":["../../../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import type React from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface StepperItem {\n description?: string;\n id: string;\n label: string;\n}\n\nexport type StepStatus = 'completed' | 'active' | 'pending';\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n currentStep: string;\n items: StepperItem[];\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Stepper: React.FC<StepperProps> = ({\n items,\n currentStep,\n orientation = 'horizontal',\n className,\n ...props\n}) => {\n const currentIndex = items.findIndex((item) => item.id === currentStep);\n const isHorizontal = orientation === 'horizontal';\n\n const getStatus = (index: number): StepStatus => {\n if (index < currentIndex) return 'completed';\n if (index === currentIndex) return 'active';\n return 'pending';\n };\n\n const connectorColor = (isActive: boolean) =>\n isActive ? 'bg-sbk-primary' : 'bg-sbk-line-strong';\n\n return (\n <div\n aria-label=\"Progresso\"\n className={cn(isHorizontal ? 'flex items-start' : 'flex flex-col', className)}\n role=\"list\"\n {...props}\n >\n {items.map((item, index) => {\n const status = getStatus(index);\n const isLast = index === items.length - 1;\n\n return (\n <div\n key={item.id}\n className={cn('flex', isHorizontal ? 'flex-1 flex-col items-center' : 'gap-4')}\n role=\"listitem\"\n >\n {/* ── Indicador + conectores ─────────────────── */}\n <div\n className={cn(\n isHorizontal ? 'flex w-full items-center' : 'flex flex-col items-center',\n )}\n >\n {isHorizontal &&\n /* Conector esquerdo: espaçador no 1º item, linha colorida nos demais */\n (index === 0 ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n aria-hidden=\"true\"\n className={cn('h-0.5 flex-1', connectorColor(index <= currentIndex))}\n />\n ))}\n\n {/* Círculo */}\n <div\n aria-current={status === 'active' ? 'step' : undefined}\n className={cn(\n 'relative z-10 flex size-9 shrink-0 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors motion-reduce:transition-none',\n status === 'completed' && 'border-sbk-primary bg-sbk-primary text-sbk-on-primary',\n status === 'active' && 'border-sbk-primary bg-sbk-surface text-sbk-primary',\n status === 'pending' && 'border-sbk-line-strong bg-sbk-surface text-sbk-fg-muted',\n )}\n >\n {status === 'completed' ? (\n <>\n <Check aria-hidden=\"true\" className=\"size-4\" strokeWidth={2.5} />\n <span className=\"sr-only\">Concluído: </span>\n </>\n ) : (\n index + 1\n )}\n </div>\n\n {isHorizontal ? (\n /* Conector direito: linha colorida se não for último, espaçador se for */\n isLast ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n aria-hidden=\"true\"\n className={cn('h-0.5 flex-1', connectorColor(index < currentIndex))}\n />\n )\n ) : (\n /* Conector vertical (para orientação vertical) */\n !isLast && (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'my-1 ml-[1.0625rem] w-0.5 flex-1',\n connectorColor(index < currentIndex),\n )}\n />\n )\n )}\n </div>\n\n {/* ── Label + descrição ──────────────────────── */}\n <div className={cn('mt-2 text-center', !isHorizontal && 'mt-0 pb-6 text-left')}>\n <p\n className={cn(\n 'm-0 text-sm font-semibold leading-tight',\n status === 'active' && 'text-sbk-fg-heading',\n status === 'completed' && 'text-sbk-fg',\n status === 'pending' && 'font-light text-sbk-fg-muted',\n )}\n >\n {item.label}\n </p>\n {item.description && (\n <p className=\"m-0 mt-0.5 text-xs font-light text-sbk-fg-muted\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nStepper.displayName = 'Stepper';\n"],"names":["Stepper","items","currentStep","orientation","className","props","currentIndex","item","isHorizontal","getStatus","index","connectorColor","isActive","jsx","cn","status","isLast","jsxs","Fragment","Check"],"mappings":"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"}
@@ -1,11 +1,17 @@
1
1
  import type React from 'react';
2
+ import { type TextWeight } from '../Typography/weight';
2
3
  export interface SubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {
3
4
  align?: 'left' | 'center' | 'right';
4
- as?: 'p' | 'span' | 'div';
5
+ as?: 'p' | 'span' | 'div' | 'h2' | 'h3' | 'h4';
5
6
  children: React.ReactNode;
6
7
  italic?: boolean;
8
+ /** Cor secundária (Chumbo Leve). */
7
9
  muted?: boolean;
8
10
  size?: 'xs' | 'sm' | 'md' | 'lg';
9
- weight?: 'normal' | 'medium' | 'semibold';
11
+ /** Padrão: semibold (brand book: subtítulos em Seminegrito). */
12
+ weight?: TextWeight;
10
13
  }
11
- export declare const Subtitle: React.FC<SubtitleProps>;
14
+ export declare const Subtitle: {
15
+ ({ as: Tag, size, weight, align, muted, italic, children, className, ...props }: SubtitleProps): import("react/jsx-runtime").JSX.Element;
16
+ displayName: string;
17
+ };
@@ -1,40 +1,34 @@
1
- import { jsx as v } from "react/jsx-runtime";
2
- const h = ({
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { cn as r } from "../../utils/cn.js";
3
+ import { weightClass as g } from "../Typography/weight.js";
4
+ const n = { xs: "text-xs", sm: "text-sm", md: "text-base", lg: "text-lg" }, c = { left: "text-left", center: "text-center", right: "text-right" }, b = ({
3
5
  as: t = "p",
4
6
  size: e = "md",
5
- weight: o = "normal",
6
- align: n = "left",
7
- muted: a = !1,
8
- italic: s = !1,
9
- children: i,
10
- className: r = "",
11
- ...l
12
- }) => {
13
- const m = t, f = {
14
- xs: "text-[var(--font-size-xs)]",
15
- sm: "text-[var(--font-size-sm)]",
16
- md: "text-[var(--font-size-base)]",
17
- lg: "text-[var(--font-size-lg)]"
18
- }, c = {
19
- normal: "font-[var(--font-weight-normal)]",
20
- medium: "font-[var(--font-weight-medium)]",
21
- semibold: "font-[var(--font-weight-semibold)]"
22
- }, x = {
23
- left: "text-left",
24
- center: "text-center",
25
- right: "text-right"
26
- }, g = [
27
- "m-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]",
28
- f[e],
29
- c[o],
30
- x[n],
31
- s ? "italic" : "not-italic",
32
- a ? "text-[var(--text-muted)] opacity-80" : "",
33
- r
34
- ].filter(Boolean).join(" ");
35
- return /* @__PURE__ */ v(m, { className: g, ...l, children: i });
36
- };
7
+ weight: s = "semibold",
8
+ align: l = "left",
9
+ muted: m = !1,
10
+ italic: i = !1,
11
+ children: x,
12
+ className: o,
13
+ ...a
14
+ }) => /* @__PURE__ */ f(
15
+ t,
16
+ {
17
+ className: r(
18
+ "m-0 font-sbk leading-snug",
19
+ n[e],
20
+ g(s),
21
+ c[l],
22
+ m ? "text-sbk-fg-muted" : "text-sbk-fg",
23
+ i && "italic",
24
+ o
25
+ ),
26
+ ...a,
27
+ children: x
28
+ }
29
+ );
30
+ b.displayName = "Subtitle";
37
31
  export {
38
- h as Subtitle
32
+ b as Subtitle
39
33
  };
40
34
  //# sourceMappingURL=Subtitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subtitle.js","sources":["../../../src/components/Subtitle/Subtitle.tsx"],"sourcesContent":["import type React from 'react';\n\nexport interface SubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'p' | 'span' | 'div';\n children: React.ReactNode;\n italic?: boolean;\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n weight?: 'normal' | 'medium' | 'semibold';\n}\n\nexport const Subtitle: React.FC<SubtitleProps> = ({\n as = 'p',\n size = 'md',\n weight = 'normal',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className = '',\n ...props\n}) => {\n const Component = as;\n const sizeClassMap: Record<NonNullable<SubtitleProps['size']>, string> = {\n xs: 'text-[var(--font-size-xs)]',\n sm: 'text-[var(--font-size-sm)]',\n md: 'text-[var(--font-size-base)]',\n lg: 'text-[var(--font-size-lg)]',\n };\n const weightClassMap: Record<NonNullable<SubtitleProps['weight']>, string> = {\n normal: 'font-[var(--font-weight-normal)]',\n medium: 'font-[var(--font-weight-medium)]',\n semibold: 'font-[var(--font-weight-semibold)]',\n };\n const alignClassMap: Record<NonNullable<SubtitleProps['align']>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n const combinedClass = [\n 'm-0 leading-[var(--line-height-normal)] text-[var(--text-secondary)] transition-[var(--transition-colors)]',\n sizeClassMap[size],\n weightClassMap[weight],\n alignClassMap[align],\n italic ? 'italic' : 'not-italic',\n muted ? 'text-[var(--text-muted)] opacity-80' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Component className={combinedClass} {...props}>\n {children}\n </Component>\n );\n};\n"],"names":["Subtitle","as","size","weight","align","muted","italic","children","className","props","Component","sizeClassMap","weightClassMap","alignClassMap","combinedClass"],"mappings":";AAYO,MAAMA,IAAoC,CAAC;AAAA,EAChD,IAAAC,IAAK;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAYT,GACZU,IAAmE;AAAA,IACvE,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAEAC,IAAuE;AAAA,IAC3E,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EAAA,GAENC,IAAqE;AAAA,IACzE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA,GAEHC,IAAgB;AAAA,IACpB;AAAA,IACAH,EAAaT,CAAI;AAAA,IACjBU,EAAeT,CAAM;AAAA,IACrBU,EAAcT,CAAK;AAAA,IACnBE,IAAS,WAAW;AAAA,IACpBD,IAAQ,wCAAwC;AAAA,IAChDG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACGE,GAAA,EAAU,WAAWI,GAAgB,GAAGL,GACtC,UAAAF,GACH;AAEJ;"}
1
+ {"version":3,"file":"Subtitle.js","sources":["../../../src/components/Subtitle/Subtitle.tsx"],"sourcesContent":["import type React from 'react';\nimport { cn } from '../../utils/cn';\nimport { type TextWeight, weightClass } from '../Typography/weight';\n\nexport interface SubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {\n align?: 'left' | 'center' | 'right';\n as?: 'p' | 'span' | 'div' | 'h2' | 'h3' | 'h4';\n children: React.ReactNode;\n italic?: boolean;\n /** Cor secundária (Chumbo Leve). */\n muted?: boolean;\n size?: 'xs' | 'sm' | 'md' | 'lg';\n /** Padrão: semibold (brand book: subtítulos em Seminegrito). */\n weight?: TextWeight;\n}\n\nconst SIZE_CLASS = { xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg' } as const;\nconst ALIGN_CLASS = { left: 'text-left', center: 'text-center', right: 'text-right' } as const;\n\nexport const Subtitle = ({\n as: Tag = 'p',\n size = 'md',\n weight = 'semibold',\n align = 'left',\n muted = false,\n italic = false,\n children,\n className,\n ...props\n}: SubtitleProps) => (\n <Tag\n className={cn(\n 'm-0 font-sbk leading-snug',\n SIZE_CLASS[size],\n weightClass(weight),\n ALIGN_CLASS[align],\n muted ? 'text-sbk-fg-muted' : 'text-sbk-fg',\n italic && 'italic',\n className,\n )}\n {...props}\n >\n {children}\n </Tag>\n);\n\nSubtitle.displayName = 'Subtitle';\n"],"names":["SIZE_CLASS","ALIGN_CLASS","Subtitle","Tag","size","weight","align","muted","italic","children","className","props","jsx","cn","weightClass"],"mappings":";;;AAgBA,MAAMA,IAAa,EAAE,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,UAAA,GAClEC,IAAc,EAAE,MAAM,aAAa,QAAQ,eAAe,OAAO,aAAA,GAE1DC,IAAW,CAAC;AAAA,EACvB,IAAIC,IAAM;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAACT;AAAA,EAAA;AAAA,IACC,WAAWU;AAAA,MACT;AAAA,MACAb,EAAWI,CAAI;AAAA,MACfU,EAAYT,CAAM;AAAA,MAClBJ,EAAYK,CAAK;AAAA,MACjBC,IAAQ,sBAAsB;AAAA,MAC9BC,KAAU;AAAA,MACVE;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAF;AAAA,EAAA;AACH;AAGFP,EAAS,cAAc;"}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  export interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
3
3
  checked?: boolean;
4
- label?: string;
4
+ label?: React.ReactNode;
5
5
  onCheckedChange?: (checked: boolean) => void;
6
+ size?: 'sm' | 'md';
6
7
  }
7
8
  export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1,37 +1,49 @@
1
- import { jsxs as n, jsx as t } from "react/jsx-runtime";
2
- import m from "react";
3
- import { cn as s } from "../../utils/cn.js";
4
- const f = m.forwardRef(
5
- ({ checked: r = !1, onCheckedChange: i, label: e, className: a, ...o }, l) => /* @__PURE__ */ n("div", { className: s("inline-flex items-center gap-2", a), children: [
6
- /* @__PURE__ */ t(
7
- "button",
8
- {
9
- ref: l,
10
- "aria-checked": r,
11
- className: s(
12
- "relative inline-flex h-6 w-11 items-center rounded-full border transition focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]",
13
- r ? "border-[var(--md-primary)] bg-[var(--md-primary)]" : "border-[var(--md-outline)] bg-[var(--md-surface-container-high)]"
14
- ),
15
- onClick: () => i == null ? void 0 : i(!r),
16
- role: "switch",
17
- type: "button",
18
- ...o,
19
- children: /* @__PURE__ */ t(
20
- "span",
21
- {
22
- className: s(
23
- "inline-block h-5 w-5 rounded-full bg-[var(--md-surface)] shadow transition",
24
- r ? "translate-x-5" : "translate-x-0.5"
25
- )
26
- }
27
- )
28
- }
29
- ),
30
- e && /* @__PURE__ */ t("span", { className: "text-sm text-[var(--text-primary)]", children: e })
31
- ] })
1
+ import { jsxs as b, jsx as o } from "react/jsx-runtime";
2
+ import f, { useId as p } from "react";
3
+ import { cn as i } from "../../utils/cn.js";
4
+ import { focusRing as x, transitionColors as w, buttonReset as N } from "../../utils/styles.js";
5
+ const k = { sm: "h-5 w-9", md: "h-6 w-11" }, y = { sm: "size-4", md: "size-5" }, R = { sm: "translate-x-4", md: "translate-x-5" }, g = f.forwardRef(
6
+ ({ checked: r = !1, onCheckedChange: t, label: n, size: s = "md", className: l, id: m, disabled: e, ...c }, d) => {
7
+ const u = p(), a = m ?? u;
8
+ return /* @__PURE__ */ b("div", { className: i("inline-flex items-center gap-2", e && "opacity-60", l), children: [
9
+ /* @__PURE__ */ o(
10
+ "button",
11
+ {
12
+ ref: d,
13
+ "aria-checked": r,
14
+ className: i(
15
+ N,
16
+ "relative inline-flex shrink-0 cursor-pointer items-center rounded-full border disabled:cursor-not-allowed",
17
+ k[s],
18
+ w,
19
+ x,
20
+ r ? "border-sbk-primary bg-sbk-primary" : "border-sbk-line-strong bg-sbk-surface-sunken"
21
+ ),
22
+ disabled: e,
23
+ id: a,
24
+ onClick: () => t == null ? void 0 : t(!r),
25
+ role: "switch",
26
+ type: "button",
27
+ ...c,
28
+ children: /* @__PURE__ */ o(
29
+ "span",
30
+ {
31
+ "aria-hidden": "true",
32
+ className: i(
33
+ "inline-block rounded-full bg-sbk-branco shadow-sbk-sm transition-transform duration-150 motion-reduce:transition-none",
34
+ y[s],
35
+ r ? R[s] : "translate-x-0.5"
36
+ )
37
+ }
38
+ )
39
+ }
40
+ ),
41
+ n && /* @__PURE__ */ o("label", { className: "cursor-pointer text-sm font-light text-sbk-fg", htmlFor: a, children: n })
42
+ ] });
43
+ }
32
44
  );
33
- f.displayName = "Switch";
45
+ g.displayName = "Switch";
34
46
  export {
35
- f as Switch
47
+ g as Switch
36
48
  };
37
49
  //# sourceMappingURL=Switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SwitchProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'onChange'\n> {\n checked?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked = false, onCheckedChange, label, className, ...props }, ref) => {\n return (\n <div className={cn('inline-flex items-center gap-2', className)}>\n <button\n ref={ref}\n aria-checked={checked}\n className={cn(\n 'relative inline-flex h-6 w-11 items-center rounded-full border transition focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-color-focus)]',\n checked\n ? 'border-[var(--md-primary)] bg-[var(--md-primary)]'\n : 'border-[var(--md-outline)] bg-[var(--md-surface-container-high)]',\n )}\n onClick={() => onCheckedChange?.(!checked)}\n role=\"switch\"\n type=\"button\"\n {...props}\n >\n <span\n className={cn(\n 'inline-block h-5 w-5 rounded-full bg-[var(--md-surface)] shadow transition',\n checked ? 'translate-x-5' : 'translate-x-0.5',\n )}\n />\n </button>\n {label && <span className=\"text-sm text-[var(--text-primary)]\">{label}</span>}\n </div>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","React","checked","onCheckedChange","label","className","props","ref","cn","jsx"],"mappings":";;;AAYO,MAAMA,IAASC,EAAM;AAAA,EAC1B,CAAC,EAAE,SAAAC,IAAU,IAAO,iBAAAC,GAAiB,OAAAC,GAAO,WAAAC,GAAW,GAAGC,EAAA,GAASC,wBAE9D,OAAA,EAAI,WAAWC,EAAG,kCAAkCH,CAAS,GAC5D,UAAA;AAAA,IAAA,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,gBAAcL;AAAA,QACd,WAAWM;AAAA,UACT;AAAA,UACAN,IACI,sDACA;AAAA,QAAA;AAAA,QAEN,SAAS,MAAMC,KAAA,gBAAAA,EAAkB,CAACD;AAAA,QAClC,MAAK;AAAA,QACL,MAAK;AAAA,QACJ,GAAGI;AAAA,QAEJ,UAAA,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACT;AAAA,cACAN,IAAU,kBAAkB;AAAA,YAAA;AAAA,UAC9B;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAEDE,KAAS,gBAAAK,EAAC,QAAA,EAAK,WAAU,sCAAsC,UAAAL,EAAA,CAAM;AAAA,EAAA,GACxE;AAGN;AAEAJ,EAAO,cAAc;"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport { cn } from '../../utils/cn';\nimport { buttonReset, focusRing, transitionColors } from '../../utils/styles';\n\nexport interface SwitchProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'onChange'\n> {\n checked?: boolean;\n label?: React.ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n size?: 'sm' | 'md';\n}\n\nconst TRACK = { sm: 'h-5 w-9', md: 'h-6 w-11' } as const;\nconst THUMB = { sm: 'size-4', md: 'size-5' } as const;\nconst THUMB_ON = { sm: 'translate-x-4', md: 'translate-x-5' } as const;\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n { checked = false, onCheckedChange, label, size = 'md', className, id, disabled, ...props },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n\n return (\n <div className={cn('inline-flex items-center gap-2', disabled && 'opacity-60', className)}>\n <button\n ref={ref}\n aria-checked={checked}\n className={cn(\n buttonReset,\n 'relative inline-flex shrink-0 cursor-pointer items-center rounded-full border disabled:cursor-not-allowed',\n TRACK[size],\n transitionColors,\n focusRing,\n checked\n ? 'border-sbk-primary bg-sbk-primary'\n : 'border-sbk-line-strong bg-sbk-surface-sunken',\n )}\n disabled={disabled}\n id={switchId}\n onClick={() => onCheckedChange?.(!checked)}\n role=\"switch\"\n type=\"button\"\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-block rounded-full bg-sbk-branco shadow-sbk-sm transition-transform duration-150 motion-reduce:transition-none',\n THUMB[size],\n checked ? THUMB_ON[size] : 'translate-x-0.5',\n )}\n />\n </button>\n {label && (\n <label className=\"cursor-pointer text-sm font-light text-sbk-fg\" htmlFor={switchId}>\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["TRACK","THUMB","THUMB_ON","Switch","React","checked","onCheckedChange","label","size","className","id","disabled","props","ref","autoId","useId","switchId","jsxs","cn","jsx","buttonReset","transitionColors","focusRing"],"mappings":";;;;AAcA,MAAMA,IAAQ,EAAE,IAAI,WAAW,IAAI,WAAA,GAC7BC,IAAQ,EAAE,IAAI,UAAU,IAAI,SAAA,GAC5BC,IAAW,EAAE,IAAI,iBAAiB,IAAI,gBAAA,GAE/BC,IAASC,EAAM;AAAA,EAC1B,CACE,EAAE,SAAAC,IAAU,IAAO,iBAAAC,GAAiB,OAAAC,GAAO,MAAAC,IAAO,MAAM,WAAAC,GAAW,IAAAC,GAAI,UAAAC,GAAU,GAAGC,EAAA,GACpFC,MACG;AACH,UAAMC,IAASC,EAAA,GACTC,IAAWN,KAAMI;AAEvB,WACE,gBAAAG,EAAC,SAAI,WAAWC,EAAG,kCAAkCP,KAAY,cAAcF,CAAS,GACtF,UAAA;AAAA,MAAA,gBAAAU;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAN;AAAA,UACA,gBAAcR;AAAA,UACd,WAAWa;AAAA,YACTE;AAAA,YACA;AAAA,YACApB,EAAMQ,CAAI;AAAA,YACVa;AAAA,YACAC;AAAA,YACAjB,IACI,sCACA;AAAA,UAAA;AAAA,UAEN,UAAAM;AAAA,UACA,IAAIK;AAAA,UACJ,SAAS,MAAMV,KAAA,gBAAAA,EAAkB,CAACD;AAAA,UAClC,MAAK;AAAA,UACL,MAAK;AAAA,UACJ,GAAGO;AAAA,UAEJ,UAAA,gBAAAO;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAWD;AAAA,gBACT;AAAA,gBACAjB,EAAMO,CAAI;AAAA,gBACVH,IAAUH,EAASM,CAAI,IAAI;AAAA,cAAA;AAAA,YAC7B;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,MAEDD,KACC,gBAAAY,EAAC,SAAA,EAAM,WAAU,iDAAgD,SAASH,GACvE,UAAAT,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAJ,EAAO,cAAc;"}
@@ -1,4 +1,22 @@
1
1
  import type React from 'react';
2
2
  export interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
3
+ /** Legenda da tabela (visível ou apenas para leitores de tela com `captionHidden`). */
4
+ caption?: React.ReactNode;
5
+ captionHidden?: boolean;
6
+ /** Linhas mais baixas. */
7
+ dense?: boolean;
8
+ /** Realce de hover nas linhas do corpo. Padrão: true. */
9
+ hoverable?: boolean;
10
+ /** Linhas zebradas. */
11
+ striped?: boolean;
12
+ /** Classe do container com rolagem horizontal. */
13
+ wrapperClassName?: string;
3
14
  }
4
- export declare const Table: React.FC<TableProps>;
15
+ /**
16
+ * Tabela estilizada. Use <thead>/<tbody> com <th scope="col"> normalmente;
17
+ * o estilo das células é aplicado pelo componente.
18
+ */
19
+ export declare const Table: {
20
+ ({ caption, captionHidden, dense, hoverable, striped, className, wrapperClassName, children, ...props }: TableProps): import("react/jsx-runtime").JSX.Element;
21
+ displayName: string;
22
+ };
@@ -1,17 +1,54 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { cn as d } from "../../utils/cn.js";
3
- const b = ({ className: e, children: o, ...a }) => /* @__PURE__ */ r("div", { className: "overflow-x-auto rounded-[var(--border-radius-md)] border border-[var(--border-color)]", children: /* @__PURE__ */ r(
4
- "table",
1
+ import { jsx as s, jsxs as h } from "react/jsx-runtime";
2
+ import { cn as t } from "../../utils/cn.js";
3
+ const f = ({
4
+ caption: e,
5
+ captionHidden: r = !1,
6
+ dense: d = !1,
7
+ hoverable: l = !0,
8
+ striped: b = !1,
9
+ className: o,
10
+ wrapperClassName: a,
11
+ children: n,
12
+ ..._
13
+ }) => /* @__PURE__ */ s(
14
+ "div",
5
15
  {
6
- className: d(
7
- "w-full min-w-[36rem] border-collapse bg-[var(--bg-secondary)] text-left",
8
- e
16
+ className: t(
17
+ "overflow-x-auto rounded-sbk-sm border border-sbk-line bg-sbk-surface",
18
+ a
9
19
  ),
10
- ...a,
11
- children: o
20
+ children: /* @__PURE__ */ h(
21
+ "table",
22
+ {
23
+ className: t(
24
+ "w-full border-collapse text-left text-sm text-sbk-fg",
25
+ "[&_th]:bg-sbk-surface-sunken [&_th]:font-semibold [&_th]:text-sbk-fg-heading [&_th]:text-xs [&_th]:uppercase [&_th]:tracking-wide",
26
+ "[&_td]:font-light [&_td]:border-t [&_td]:border-sbk-line",
27
+ d ? "[&_td]:px-3 [&_td]:py-2 [&_th]:px-3 [&_th]:py-2" : "[&_td]:px-4 [&_td]:py-3 [&_th]:px-4 [&_th]:py-3",
28
+ l && "[&_tbody_tr:hover]:bg-sbk-surface-hover",
29
+ b && "[&_tbody_tr:nth-child(even)]:bg-sbk-surface-sunken",
30
+ o
31
+ ),
32
+ ..._,
33
+ children: [
34
+ e && /* @__PURE__ */ s(
35
+ "caption",
36
+ {
37
+ className: t(
38
+ "px-4 py-3 text-left text-sm font-semibold text-sbk-fg-heading",
39
+ r && "sr-only"
40
+ ),
41
+ children: e
42
+ }
43
+ ),
44
+ n
45
+ ]
46
+ }
47
+ )
12
48
  }
13
- ) });
49
+ );
50
+ f.displayName = "Table";
14
51
  export {
15
- b as Table
52
+ f as Table
16
53
  };
17
54
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {}\n\nexport const Table: React.FC<TableProps> = ({ className, children, ...props }) => {\n return (\n <div className=\"overflow-x-auto rounded-[var(--border-radius-md)] border border-[var(--border-color)]\">\n <table\n className={cn(\n 'w-full min-w-[36rem] border-collapse bg-[var(--bg-secondary)] text-left',\n className,\n )}\n {...props}\n >\n {children}\n </table>\n </div>\n );\n};\n"],"names":["Table","className","children","props","jsx","cn"],"mappings":";;AAKO,MAAMA,IAA8B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,QAElE,gBAAAC,EAAC,OAAA,EAAI,WAAU,yFACb,UAAA,gBAAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEH,UAAAD;AAAA,EAAA;AAAA,GAEL;"}
1
+ {"version":3,"file":"Table.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["import type React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Legenda da tabela (visível ou apenas para leitores de tela com `captionHidden`). */\n caption?: React.ReactNode;\n captionHidden?: boolean;\n /** Linhas mais baixas. */\n dense?: boolean;\n /** Realce de hover nas linhas do corpo. Padrão: true. */\n hoverable?: boolean;\n /** Linhas zebradas. */\n striped?: boolean;\n /** Classe do container com rolagem horizontal. */\n wrapperClassName?: string;\n}\n\n/**\n * Tabela estilizada. Use <thead>/<tbody> com <th scope=\"col\"> normalmente;\n * o estilo das células é aplicado pelo componente.\n */\nexport const Table = ({\n caption,\n captionHidden = false,\n dense = false,\n hoverable = true,\n striped = false,\n className,\n wrapperClassName,\n children,\n ...props\n}: TableProps) => (\n <div\n className={cn(\n 'overflow-x-auto rounded-sbk-sm border border-sbk-line bg-sbk-surface',\n wrapperClassName,\n )}\n >\n <table\n className={cn(\n 'w-full border-collapse text-left text-sm text-sbk-fg',\n '[&_th]:bg-sbk-surface-sunken [&_th]:font-semibold [&_th]:text-sbk-fg-heading [&_th]:text-xs [&_th]:uppercase [&_th]:tracking-wide',\n '[&_td]:font-light [&_td]:border-t [&_td]:border-sbk-line',\n dense\n ? '[&_td]:px-3 [&_td]:py-2 [&_th]:px-3 [&_th]:py-2'\n : '[&_td]:px-4 [&_td]:py-3 [&_th]:px-4 [&_th]:py-3',\n hoverable && '[&_tbody_tr:hover]:bg-sbk-surface-hover',\n striped && '[&_tbody_tr:nth-child(even)]:bg-sbk-surface-sunken',\n className,\n )}\n {...props}\n >\n {caption && (\n <caption\n className={cn(\n 'px-4 py-3 text-left text-sm font-semibold text-sbk-fg-heading',\n captionHidden && 'sr-only',\n )}\n >\n {caption}\n </caption>\n )}\n {children}\n </table>\n </div>\n);\n\nTable.displayName = 'Table';\n"],"names":["Table","caption","captionHidden","dense","hoverable","striped","className","wrapperClassName","children","props","jsx","cn","jsxs"],"mappings":";;AAqBO,MAAMA,IAAQ,CAAC;AAAA,EACpB,SAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAGF,UAAA,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACAR,IACI,oDACA;AAAA,UACJC,KAAa;AAAA,UACbC,KAAW;AAAA,UACXC;AAAA,QAAA;AAAA,QAED,GAAGG;AAAA,QAEH,UAAA;AAAA,UAAAR,KACC,gBAAAS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT;AAAA,gBACAT,KAAiB;AAAA,cAAA;AAAA,cAGlB,UAAAD;AAAA,YAAA;AAAA,UAAA;AAAA,UAGJO;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AACF;AAGFR,EAAM,cAAc;"}
@@ -1,11 +1,25 @@
1
1
  import type React from 'react';
2
2
  export interface TabItem {
3
3
  content: React.ReactNode;
4
+ disabled?: boolean;
5
+ icon?: React.ReactNode;
4
6
  id: string;
5
- label: string;
7
+ label: React.ReactNode;
6
8
  }
7
9
  export interface TabsProps {
10
+ /** Rótulo acessível da lista de abas. */
11
+ 'aria-label'?: string;
12
+ className?: string;
8
13
  defaultTabId?: string;
9
14
  items: TabItem[];
15
+ onTabChange?: (id: string) => void;
16
+ /** Aba ativa controlada externamente. */
17
+ tabId?: string;
18
+ /** `pill`: segmentado. `line`: sublinhado. Padrão: pill. */
19
+ variant?: 'pill' | 'line';
10
20
  }
11
- export declare const Tabs: React.FC<TabsProps>;
21
+ /** Abas (padrão ARIA tabs com ativação automática): setas, Home e End. */
22
+ export declare const Tabs: {
23
+ ({ items, defaultTabId, tabId, onTabChange, variant, className, "aria-label": ariaLabel, }: TabsProps): import("react/jsx-runtime").JSX.Element;
24
+ displayName: string;
25
+ };