@snksergio/design-system 0.33.0 → 0.35.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 (39) hide show
  1. package/README.md +39 -0
  2. package/dist-lib/chunks/{input-Vkj4PEp9.cjs → input-CizzMZ20.cjs} +2 -2
  3. package/dist-lib/chunks/{input-Vkj4PEp9.cjs.map → input-CizzMZ20.cjs.map} +1 -1
  4. package/dist-lib/chunks/{input-K0PDBqVB.mjs → input-Cym0k4ZI.mjs} +2 -2
  5. package/dist-lib/chunks/{input-K0PDBqVB.mjs.map → input-Cym0k4ZI.mjs.map} +1 -1
  6. package/dist-lib/chunks/{kpi-delta-RBYsYF3x.cjs → kpi-delta-DrSJPMCY.cjs} +2 -2
  7. package/dist-lib/chunks/{kpi-delta-RBYsYF3x.cjs.map → kpi-delta-DrSJPMCY.cjs.map} +1 -1
  8. package/dist-lib/chunks/{kpi-delta-DnuXr8nh.mjs → kpi-delta-FhfuIg27.mjs} +2 -2
  9. package/dist-lib/chunks/{kpi-delta-DnuXr8nh.mjs.map → kpi-delta-FhfuIg27.mjs.map} +1 -1
  10. package/dist-lib/chunks/{page-header-CS1NxTW3.cjs → page-header-BMzUloFi.cjs} +2 -2
  11. package/dist-lib/chunks/{page-header-CS1NxTW3.cjs.map → page-header-BMzUloFi.cjs.map} +1 -1
  12. package/dist-lib/chunks/{page-header-dkeQlVOY.mjs → page-header-Buh6YlQM.mjs} +2 -2
  13. package/dist-lib/chunks/{page-header-dkeQlVOY.mjs.map → page-header-Buh6YlQM.mjs.map} +1 -1
  14. package/dist-lib/chunks/{panel-Bux4oHs4.mjs → panel-Cdl0GPVE.mjs} +3 -3
  15. package/dist-lib/chunks/{panel-Bux4oHs4.mjs.map → panel-Cdl0GPVE.mjs.map} +1 -1
  16. package/dist-lib/chunks/{panel-CrvABv4t.cjs → panel-DlyaLunw.cjs} +3 -3
  17. package/dist-lib/chunks/{panel-CrvABv4t.cjs.map → panel-DlyaLunw.cjs.map} +1 -1
  18. package/dist-lib/chunks/{useTheme-CTiMYKox.cjs → useTheme-D4alxxGV.cjs} +8 -4
  19. package/dist-lib/chunks/{useTheme-Cnpuditi.mjs.map → useTheme-D4alxxGV.cjs.map} +1 -1
  20. package/dist-lib/chunks/{useTheme-Cnpuditi.mjs → useTheme-DF2xbSdI.mjs} +8 -4
  21. package/dist-lib/chunks/{useTheme-CTiMYKox.cjs.map → useTheme-DF2xbSdI.mjs.map} +1 -1
  22. package/dist-lib/fonts/Geist-Variable.woff2 +0 -0
  23. package/dist-lib/fonts/GeistMono-Variable.woff2 +0 -0
  24. package/dist-lib/index.cjs +5 -5
  25. package/dist-lib/index.mjs +8 -8
  26. package/dist-lib/preview/chat.cjs +2 -2
  27. package/dist-lib/preview/chat.mjs +2 -2
  28. package/dist-lib/preview/clientes.cjs +4 -4
  29. package/dist-lib/preview/clientes.mjs +4 -4
  30. package/dist-lib/preview/dashboard.cjs +3 -3
  31. package/dist-lib/preview/dashboard.mjs +3 -3
  32. package/dist-lib/src/components/ui/AppShell/app-shell.d.ts +3 -2
  33. package/dist-lib/src/components/ui/AppShell/app-shell.d.ts.map +1 -1
  34. package/dist-lib/src/components/ui/AppShell/app-shell.styles.d.ts +21 -4
  35. package/dist-lib/src/components/ui/AppShell/app-shell.styles.d.ts.map +1 -1
  36. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts +13 -3
  37. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts.map +1 -1
  38. package/dist-lib/theme.css +73 -0
  39. package/package.json +5 -2
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const panel = require("./chunks/panel-CrvABv4t.cjs");
4
- const useTheme = require("./chunks/useTheme-CTiMYKox.cjs");
3
+ const panel = require("./chunks/panel-DlyaLunw.cjs");
4
+ const useTheme = require("./chunks/useTheme-D4alxxGV.cjs");
5
5
  const jsxRuntime = require("react/jsx-runtime");
6
6
  const React = require("react");
7
7
  const lucideReact = require("lucide-react");
8
8
  const SeparatorPrimitive = require("@radix-ui/react-separator");
9
- const input = require("./chunks/input-Vkj4PEp9.cjs");
10
- const kpiDelta = require("./chunks/kpi-delta-RBYsYF3x.cjs");
11
- const pageHeader = require("./chunks/page-header-CS1NxTW3.cjs");
9
+ const input = require("./chunks/input-CizzMZ20.cjs");
10
+ const kpiDelta = require("./chunks/kpi-delta-DrSJPMCY.cjs");
11
+ const pageHeader = require("./chunks/page-header-BMzUloFi.cjs");
12
12
  const TooltipPrimitive = require("@radix-ui/react-tooltip");
13
13
  const CollapsiblePrimitive = require("@radix-ui/react-collapsible");
14
14
  function _interopNamespaceDefault(e) {
@@ -1,17 +1,17 @@
1
- import { C as Checkbox, g as getContrastTextColor, a as FormField, e as Avatar, i as isFilterEntryActive, f as FilterPopover, T as ToolbarToolButton, h as ButtonGroup, j as ToolbarSimpleFilterDrawer, k as ACTIONS_COLUMN_WIDTH, l as Calendar, m as Textarea } from "./chunks/panel-Bux4oHs4.mjs";
2
- import { n, A, B, o, q, r, s, t, D, u, v, w, x, y, z, E, G, H, d, I, J, K, L, M, F, b, N, c, O, Q, P, R, S, U, V, W, X, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, p, am, an, ao, ap, aq } from "./chunks/panel-Bux4oHs4.mjs";
3
- import { t as tv, c as cn, P as Popover, j as PopoverTrigger, k as PopoverContent, B as Button, l as Dialog, m as DialogTrigger, n as DialogContent, o as DialogTitle, C as Chip, p as PopoverAnchor, q as DialogClose, r as DialogDescription, D as DropdownMenu, f as DropdownMenuTrigger, g as DropdownMenuContent, h as DropdownMenuItem, s as CommandDialog, v as CommandInput, w as CommandList, x as CommandEmpty, y as CommandGroup, z as CommandItem, E as DropdownMenuGroup, F as DropdownMenuLabel, i as DropdownMenuSeparator } from "./chunks/useTheme-Cnpuditi.mjs";
4
- import { A as A2, d as d2, e, H as H2, G as G2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, Q as Q2, R as R2, S as S2, T, U as U2, V as V2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, a0 as a02, a1 as a12, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, a7 as a72, a8 as a82, u as u2 } from "./chunks/useTheme-Cnpuditi.mjs";
1
+ import { C as Checkbox, g as getContrastTextColor, a as FormField, e as Avatar, i as isFilterEntryActive, f as FilterPopover, T as ToolbarToolButton, h as ButtonGroup, j as ToolbarSimpleFilterDrawer, k as ACTIONS_COLUMN_WIDTH, l as Calendar, m as Textarea } from "./chunks/panel-Cdl0GPVE.mjs";
2
+ import { n, A, B, o, q, r, s, t, D, u, v, w, x, y, z, E, G, H, d, I, J, K, L, M, F, b, N, c, O, Q, P, R, S, U, V, W, X, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, p, am, an, ao, ap, aq } from "./chunks/panel-Cdl0GPVE.mjs";
3
+ import { t as tv, c as cn, P as Popover, j as PopoverTrigger, k as PopoverContent, B as Button, l as Dialog, m as DialogTrigger, n as DialogContent, o as DialogTitle, C as Chip, p as PopoverAnchor, q as DialogClose, r as DialogDescription, D as DropdownMenu, f as DropdownMenuTrigger, g as DropdownMenuContent, h as DropdownMenuItem, s as CommandDialog, v as CommandInput, w as CommandList, x as CommandEmpty, y as CommandGroup, z as CommandItem, E as DropdownMenuGroup, F as DropdownMenuLabel, i as DropdownMenuSeparator } from "./chunks/useTheme-DF2xbSdI.mjs";
4
+ import { A as A2, d as d2, e, H as H2, G as G2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, Q as Q2, R as R2, S as S2, T, U as U2, V as V2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, a0 as a02, a1 as a12, a2 as a22, a3 as a32, a4 as a42, a5 as a52, a6 as a62, a7 as a72, a8 as a82, u as u2 } from "./chunks/useTheme-DF2xbSdI.mjs";
5
5
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
6
6
  import * as React from "react";
7
7
  import { forwardRef, useId, useState, Fragment as Fragment$1, isValidElement, useCallback, useMemo, createElement, useRef, useEffect, useLayoutEffect, createContext, useContext } from "react";
8
8
  import { Check, MoreHorizontal, SlidersHorizontal, Calendar as Calendar$1, AlertCircle, CheckCheck, Clock, MoreVertical, Ban, X as X3, CalendarDays, ChevronDown, ChevronLeft, ChevronRight, PanelLeftClose, ChevronsUpDown, Search, User } from "lucide-react";
9
9
  import { Reply } from "lucide-react";
10
10
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
11
- import { I as Input } from "./chunks/input-K0PDBqVB.mjs";
12
- import { i } from "./chunks/input-K0PDBqVB.mjs";
13
- import { a, b as b2, K as K3 } from "./chunks/kpi-delta-DnuXr8nh.mjs";
14
- import { P as P2, p as p2 } from "./chunks/page-header-dkeQlVOY.mjs";
11
+ import { I as Input } from "./chunks/input-Cym0k4ZI.mjs";
12
+ import { i } from "./chunks/input-Cym0k4ZI.mjs";
13
+ import { a, b as b2, K as K3 } from "./chunks/kpi-delta-FhfuIg27.mjs";
14
+ import { P as P2, p as p2 } from "./chunks/page-header-Buh6YlQM.mjs";
15
15
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
16
16
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
17
17
  const cardCheckbox = tv({
@@ -2,11 +2,11 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const useTheme = require("../chunks/useTheme-CTiMYKox.cjs");
5
+ const useTheme = require("../chunks/useTheme-D4alxxGV.cjs");
6
6
  const lucideReact = require("lucide-react");
7
7
  const appShellMocks = require("../chunks/app-shell-mocks-oO_IV3Gw.cjs");
8
8
  const chatV2Mocks = require("../chunks/chat-v2-mocks-BV9Wha_Z.cjs");
9
- const input = require("../chunks/input-Vkj4PEp9.cjs");
9
+ const input = require("../chunks/input-CizzMZ20.cjs");
10
10
  const chatV2Styles = useTheme.tv({
11
11
  slots: {
12
12
  /** Body do AppShell — flex row com gap entre colunas. `relative` pra mobile overlays. */
@@ -1,10 +1,10 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { useState, useRef, useEffect, useCallback, useMemo } from "react";
3
- import { t as tv, D as DropdownMenu, f as DropdownMenuTrigger, B as Button, g as DropdownMenuContent, h as DropdownMenuItem, i as DropdownMenuSeparator, a as Avatar, b as AvatarFallback, C as Chip, c as cn, d as ChipGroup, e as ChipGroupItem, u as useTheme, A as AppShell } from "../chunks/useTheme-Cnpuditi.mjs";
3
+ import { t as tv, D as DropdownMenu, f as DropdownMenuTrigger, B as Button, g as DropdownMenuContent, h as DropdownMenuItem, i as DropdownMenuSeparator, a as Avatar, b as AvatarFallback, C as Chip, c as cn, d as ChipGroup, e as ChipGroupItem, u as useTheme, A as AppShell } from "../chunks/useTheme-DF2xbSdI.mjs";
4
4
  import { MoreVertical, CheckCircle2, Phone, Video, Tag, UserPlus, Archive, CheckCheck, Check, ArrowLeft, PanelRightClose, PanelRightOpen, Paperclip, Smile, Send, Mic, ChevronDown, X, Plus, Menu, Search } from "lucide-react";
5
5
  import { e as APP_SHELL_THEME_OPTIONS, c as APP_SHELL_MESSAGES, d as APP_SHELL_NOTIFICATIONS, A as APP_SHELL_COMMANDS, a as APP_SHELL_CONTEXTS } from "../chunks/app-shell-mocks-kWIVSzLs.mjs";
6
6
  import { C as CHANNEL_LABEL, a as CHANNEL_HEX, S as SAMPLE_MESSAGES, b as STATUS_DOT, F as FILTER_GROUPS, d as CONVERSATIONS, e as CONVERSATION_DETAILS, D as DEFAULT_DETAIL } from "../chunks/chat-v2-mocks-DvZRkhmz.mjs";
7
- import { I as Input } from "../chunks/input-K0PDBqVB.mjs";
7
+ import { I as Input } from "../chunks/input-Cym0k4ZI.mjs";
8
8
  const chatV2Styles = tv({
9
9
  slots: {
10
10
  /** Body do AppShell — flex row com gap entre colunas. `relative` pra mobile overlays. */
@@ -2,12 +2,12 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const useTheme = require("../chunks/useTheme-CTiMYKox.cjs");
5
+ const useTheme = require("../chunks/useTheme-D4alxxGV.cjs");
6
6
  const lucideReact = require("lucide-react");
7
7
  const clientesShowcaseMocks = require("../chunks/clientes-showcase-mocks-CwhluBTT.cjs");
8
- const panel = require("../chunks/panel-CrvABv4t.cjs");
9
- require("../chunks/input-Vkj4PEp9.cjs");
10
- const pageHeader = require("../chunks/page-header-CS1NxTW3.cjs");
8
+ const panel = require("../chunks/panel-DlyaLunw.cjs");
9
+ require("../chunks/input-CizzMZ20.cjs");
10
+ const pageHeader = require("../chunks/page-header-BMzUloFi.cjs");
11
11
  require("react-dom");
12
12
  const appShellMocks = require("../chunks/app-shell-mocks-oO_IV3Gw.cjs");
13
13
  const drawerFormStyles = useTheme.tv({
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useRef, useCallback, useMemo } from "react";
3
- import { t as tv, d as ChipGroup, e as ChipGroupItem, B as Button, C as Chip, a as Avatar, b as AvatarFallback, u as useTheme, A as AppShell } from "../chunks/useTheme-Cnpuditi.mjs";
3
+ import { t as tv, d as ChipGroup, e as ChipGroupItem, B as Button, C as Chip, a as Avatar, b as AvatarFallback, u as useTheme, A as AppShell } from "../chunks/useTheme-DF2xbSdI.mjs";
4
4
  import { Pencil, Trash2, ChevronDown, MoreHorizontal, Plus, Download, Maximize2, Copy, Upload, RotateCcw, MessageSquare, Archive, Clock } from "lucide-react";
5
5
  import { S as STATUSES, a as STATUS_DOT, C as CATEGORIES, b as CITIES, A as AGENTS, d as CATEGORY_KIND, f as formatBRL, e as formatShortDate, g as CLIENTS_87, K as KANBAN_COLUMNS, h as STATUS_OPTIONS, i as CATEGORY_OPTIONS, j as AGENTS_LOOKUP, k as AGENT_OPTIONS } from "../chunks/clientes-showcase-mocks-CwWGCCmf.mjs";
6
- import { P as Panel, F as FormFieldInput, a as FormField, b as FormFieldSelect, c as FormFieldTextarea, d as FloatingPanel, p as presetView, D as DataTable, B as BulkActionButton, A as AlertModal } from "../chunks/panel-Bux4oHs4.mjs";
7
- import "../chunks/input-K0PDBqVB.mjs";
8
- import { P as PageHeader } from "../chunks/page-header-dkeQlVOY.mjs";
6
+ import { P as Panel, F as FormFieldInput, a as FormField, b as FormFieldSelect, c as FormFieldTextarea, d as FloatingPanel, p as presetView, D as DataTable, B as BulkActionButton, A as AlertModal } from "../chunks/panel-Cdl0GPVE.mjs";
7
+ import "../chunks/input-Cym0k4ZI.mjs";
8
+ import { P as PageHeader } from "../chunks/page-header-Buh6YlQM.mjs";
9
9
  import "react-dom";
10
10
  import { b as APP_SHELL_LAYOUT_OPTIONS, f as APP_SHELL_USER, e as APP_SHELL_THEME_OPTIONS, c as APP_SHELL_MESSAGES, d as APP_SHELL_NOTIFICATIONS, A as APP_SHELL_COMMANDS, a as APP_SHELL_CONTEXTS } from "../chunks/app-shell-mocks-kWIVSzLs.mjs";
11
11
  const drawerFormStyles = tv({
@@ -2,11 +2,11 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const useTheme = require("../chunks/useTheme-CTiMYKox.cjs");
5
+ const useTheme = require("../chunks/useTheme-D4alxxGV.cjs");
6
6
  const lucideReact = require("lucide-react");
7
7
  const recharts = require("recharts");
8
- const pageHeader = require("../chunks/page-header-CS1NxTW3.cjs");
9
- const kpiDelta = require("../chunks/kpi-delta-RBYsYF3x.cjs");
8
+ const pageHeader = require("../chunks/page-header-BMzUloFi.cjs");
9
+ const kpiDelta = require("../chunks/kpi-delta-DrSJPMCY.cjs");
10
10
  const appShellMocks = require("../chunks/app-shell-mocks-oO_IV3Gw.cjs");
11
11
  const BRAZIL_VIEWBOX = "0 0 1000 912";
12
12
  const BRAZIL_PATHS = [
@@ -1,10 +1,10 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { u as useTheme, A as AppShell, B as Button, C as Chip, c as cn, a as Avatar, b as AvatarFallback } from "../chunks/useTheme-Cnpuditi.mjs";
3
+ import { u as useTheme, A as AppShell, B as Button, C as Chip, c as cn, a as Avatar, b as AvatarFallback } from "../chunks/useTheme-DF2xbSdI.mjs";
4
4
  import { MoreVertical, ChevronDown, Calendar, Phone, Timer, CheckCircle2, UserPlus, Clock, TrendingUp, Star, Headphones, Bot, Sun, ArrowRight, MessageSquare, Send, Mail, Search } from "lucide-react";
5
5
  import { ResponsiveContainer, BarChart, CartesianGrid, XAxis, YAxis, Tooltip, Bar, PieChart, Pie, Cell, RadialBarChart, PolarAngleAxis, RadialBar, AreaChart, Area } from "recharts";
6
- import { P as PageHeader } from "../chunks/page-header-dkeQlVOY.mjs";
7
- import { K as KpiGroup, a as Kpi, b as KpiDelta } from "../chunks/kpi-delta-DnuXr8nh.mjs";
6
+ import { P as PageHeader } from "../chunks/page-header-Buh6YlQM.mjs";
7
+ import { K as KpiGroup, a as Kpi, b as KpiDelta } from "../chunks/kpi-delta-FhfuIg27.mjs";
8
8
  import { e as APP_SHELL_THEME_OPTIONS, c as APP_SHELL_MESSAGES, d as APP_SHELL_NOTIFICATIONS, A as APP_SHELL_COMMANDS, a as APP_SHELL_CONTEXTS } from "../chunks/app-shell-mocks-kWIVSzLs.mjs";
9
9
  const BRAZIL_VIEWBOX = "0 0 1000 912";
10
10
  const BRAZIL_PATHS = [
@@ -9,8 +9,9 @@ import { AppShellProps } from './app-shell.types';
9
9
  *
10
10
  * **Padrão controlled/uncontrolled** pra `menuCollapsed`:
11
11
  * - `menuCollapsed` prop → controlled (consumer gerencia state)
12
- * - `defaultMenuCollapsed` → uncontrolled initial value
13
- * - Sem nenhum dos dois → uncontrolled, default `false`
12
+ * - `defaultMenuCollapsed` → uncontrolled initial value (vence a regra responsiva)
13
+ * - Sem nenhum dos dois → uncontrolled com default **responsivo**: colapsado
14
+ * abaixo de 1536px, expandido acima (ver o `useState` do `internalCollapsed`)
14
15
  *
15
16
  * Todas as outras props são **passthrough 1:1** pros sub-componentes.
16
17
  * AppShell não impõe styling ao body além de gap/padding fixos — consumer
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,EAEvB,QAAQ,EACR,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEX,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EAEf,IAAI,EACJ,MAAM,EACN,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EAER,aAAa,EAAE,mBAAmB,EAClC,oBAA4B,EAC5B,oBAAoB,EAEpB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,SAAS,GACV,EAAE,aAAa,2CAqFf;yBA1He,QAAQ"}
1
+ {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,EAEvB,QAAQ,EACR,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEX,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EAEf,IAAI,EACJ,MAAM,EACN,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EAER,aAAa,EAAE,mBAAmB,EAClC,oBAAoB,EACpB,oBAAoB,EAEpB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,SAAS,GACV,EAAE,aAAa,2CAgHf;yBArJe,QAAQ"}
@@ -4,8 +4,9 @@
4
4
  * Layout 2-column: sidebar à esquerda (fixa, full-height) + main area
5
5
  * à direita (Header sticky no topo + body abaixo).
6
6
  *
7
- * Body recebe `gap-gp-4xl` (24px) e `p-pad-6xl` (32px) por design — slot
8
- * "padronizado" pra todas as telas. Consumer customiza os filhos.
7
+ * Body recebe `gap-gp-4xl` (24px) fixo e padding responsivo em 3 patamares
8
+ * (18 / 24 / 32px ver `bodyInner`) por design — slot "padronizado" pra todas
9
+ * as telas. Consumer customiza só os filhos.
9
10
  */
10
11
  export declare const root: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
11
12
  /** Wrapper da área principal (Header + Body). Ocupa o resto do flex row. */
@@ -26,8 +27,24 @@ export declare const body: import('tailwind-variants').TVReturnType<{} | {} | {}
26
27
  * - `fluid` (default): ocupa 100% da largura disponível (atual)
27
28
  * - `compact`: max-width 1368px (`--container-main-content-max`), centralizado
28
29
  *
29
- * Mobile (<md): padding reduzido pra 18px telas pequenas precisam respiro
30
- * mínimo mas não zero (chat/navegação por overlays usam o bodyInner cheio).
30
+ * Padding por faixa de viewport3 patamares, não 2:
31
+ *
32
+ * < 768px (max-md) 18px — telas pequenas precisam respiro mínimo mas não
33
+ * zero (chat/navegação por overlays usam o
34
+ * bodyInner cheio).
35
+ * 768–1535 (max-2xl) 24px — NOTEBOOK. Até 2026-08-04 esta faixa herdava os
36
+ * 32px do desktop: um 1366×768 gastava a mesma
37
+ * moldura de um 4K, com muito menos área útil.
38
+ * O corte é em `2xl` (1536) e não em `xl` (1280)
39
+ * porque 1366 e 1536 são as duas resoluções de
40
+ * notebook dominantes — cortar em `xl` deixaria a
41
+ * 1536 de fora justamente onde aperta.
42
+ * ≥ 1536px 32px — desktop, valor original preservado.
43
+ *
44
+ * ⚠️ `max-md:` tem que vencer `max-2xl:` abaixo de 768px. Vence por ordem de
45
+ * fonte: o Tailwind emite as variantes `max-*` em breakpoint DECRESCENTE, então
46
+ * a regra `max-md` sai depois da `max-2xl` com a mesma especificidade. Medido no
47
+ * browser nos 3 patamares, não deduzido — é a classe de erro da L-066.
31
48
  */
32
49
  export declare const bodyInner: import('tailwind-variants').TVReturnType<{
33
50
  layout: {
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;;;;IAUlB;;;;;;;OAOG;;;;;;;;;;IAPH;;;;;;;OAOG;;;;;;;;;;IAPH;;;;;;;OAOG;;;;;qDAUL,CAAC"}
1
+ {"version":3,"file":"app-shell.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,sMAKf,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,SAAS;;;;;IAUlB;;;;;;;OAOG;;;;;;;;;;IAPH;;;;;;;OAOG;;;;;;;;;;IAPH;;;;;;;OAOG;;;;;qDAUL,CAAC"}
@@ -92,17 +92,27 @@ export type AppShellProps = {
92
92
  * interno (uncontrolled) — toggle do header dispara setInternal.
93
93
  */
94
94
  menuCollapsed?: boolean;
95
+ /**
96
+ * Estado inicial do collapse (uncontrolled). **Omitido, o default é responsivo:**
97
+ * colapsado abaixo de 1536px (mesma fronteira do padding do body), expandido
98
+ * acima — notebook perde ~200px de largura útil com o painel aberto.
99
+ *
100
+ * Passar valor explícito **vence** a regra responsiva, inclusive `false`.
101
+ * Aplicado só no mount: resize não re-colapsa, pra não brigar com quem abriu o
102
+ * menu na mão.
103
+ */
95
104
  defaultMenuCollapsed?: boolean;
96
105
  onMenuCollapseChange?: (collapsed: boolean) => void;
97
- /** Conteúdo do body — o que muda entre telas. Aplicado dentro de slot
98
- * com `gap-gp-4xl p-pad-6xl` (24px gap + 32px padding). */
106
+ /** Conteúdo do body — o que muda entre telas. Aplicado dentro de slot com
107
+ * gap 24px (`gap-gp-4xl`) e padding responsivo em 3 patamares:
108
+ * **18px** < 768px · **24px** 768–1535px (notebook) · **32px** ≥ 1536px. */
99
109
  children: ReactNode;
100
110
  /** ClassName extra no body slot (raro — use só pra ajustes pontuais). */
101
111
  bodyClassName?: string;
102
112
  /**
103
113
  * Em mobile (<md), zera o padding interno do body — útil pra telas que
104
114
  * controlam o próprio padding (chat com overlays fullscreen, mapas, etc).
105
- * Default: false (padding 18px mobile, 32px desktop).
115
+ * Default: false (18px mobile · 24px notebook · 32px desktop).
106
116
  */
107
117
  mobileEdgeToEdge?: boolean;
108
118
  /** ClassName extra no root da AppShell (afeta toda a tela). */
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-shell.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/AppShell/app-shell.types.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,50 @@
7
7
  * Customize na composição da tela (props/variantes + classes DS), não nos tokens.
8
8
  */
9
9
 
10
+ /* ── Runtime base (fonte, dark-variant, body) — ver buildRuntimeBase ──────── */
11
+
12
+ @font-face {
13
+ font-family: 'Geist';
14
+ src: url('/fonts/Geist-Variable.woff2') format('woff2');
15
+ font-weight: 100 900;
16
+ font-style: normal;
17
+ font-display: swap;
18
+ }
19
+
20
+ @font-face {
21
+ font-family: 'Geist Mono';
22
+ src: url('/fonts/GeistMono-Variable.woff2') format('woff2');
23
+ font-weight: 100 900;
24
+ font-style: normal;
25
+ font-display: swap;
26
+ }
27
+
28
+ @theme inline {
29
+ --font-sans: 'Geist', system-ui, -apple-system, sans-serif;
30
+ --font-mono: 'Geist Mono', 'Fira Code', monospace;
31
+ }
32
+
33
+ /* Dark por CLASSE, nunca por prefers-color-scheme: sem isto o tema do SO vaza
34
+ * pro app nos dois sentidos (app claro com SO escuro dispara `dark:`). */
35
+ @custom-variant dark (&:where(.dark, .dark *));
36
+
37
+ html {
38
+ font-family: var(--font-sans);
39
+ }
40
+
41
+ body {
42
+ min-height: 100vh;
43
+ background-color: var(--color-bg-canvas);
44
+ color: var(--color-fg-default);
45
+ transition: background-color 0.2s ease, color 0.2s ease;
46
+ }
47
+
48
+ @layer base {
49
+ button {
50
+ cursor: pointer;
51
+ }
52
+ }
53
+
10
54
  @theme {
11
55
  --color-bg-canvas: oklch(1 0 0);
12
56
  --color-bg-surface: oklch(1 0 0);
@@ -633,4 +677,33 @@
633
677
  &::-webkit-scrollbar-thumb:hover {
634
678
  background-color: var(--color-fg-muted);
635
679
  }
680
+ }
681
+
682
+ /* ── Superfície flutuante (usadas por 14 componentes distribuídos) ────────── */
683
+
684
+ @utility outline-float {
685
+ outline: 6px solid var(--color-overlay-float);
686
+ outline-offset: 0;
687
+ }
688
+
689
+ /* Bottom-sheet mobile de DropdownMenu/Popover (L-030/L-031).
690
+ *
691
+ * O Radix Popper envolve o Content num wrapper posicionado por `transform`
692
+ * inline, fora do alcance do className do Content — só dá pra alcançá-lo por
693
+ * seletor global. Sem este bloco, um menu marcado `mobileSheet` abre flutuando
694
+ * na posição calculada pelo Popper em vez de colar no rodapé.
695
+ *
696
+ * z-60 é load-bearing: acima de qualquer surface z-50 (drawer do sidebar mobile,
697
+ * dialog, sheet). Sem isso, um sheet aberto DE DENTRO do drawer empata em z-50 e
698
+ * renderiza atrás de forma intermitente, e o backdrop não captura o clique-fora. */
699
+ @media (width < 768px) {
700
+ [data-radix-popper-content-wrapper]:has(> [data-mobile-sheet]) {
701
+ position: fixed !important;
702
+ inset: auto 0 0 0 !important;
703
+ transform: none !important;
704
+ min-width: 0 !important;
705
+ width: 100% !important;
706
+ max-width: 100% !important;
707
+ z-index: 60 !important;
708
+ }
636
709
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snksergio/design-system",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "//distribuicao": "Canal PRIMARIO = registry shadcn (copy-in) + CLI @snksergio/create-design-system; sobe sozinho no merge (Vercel). Canal SECUNDARIO = este pacote npm (@snksergio/design-system), funcional (build:lib gera ESM+CJS+types+theme.css) e publicado por passo MANUAL do mantenedor, entao costuma ficar atras do registry. NAO e depreciado — o texto anterior dizia isso e estava errado. Publish so pelo Passo 7 do .claude/skills/ds-dev/release.md (valida com `npm run lib:verify`, pede o token, publica, revoga). Ver DISTRIBUICAO.md.",
5
5
  "description": "iGreen Design System — internal library for SaaS CRM, admin panels and dashboards. React 19 + Tailwind v4 + Shadcn + Radix.",
6
6
  "license": "UNLICENSED",
@@ -13,6 +13,7 @@
13
13
  "dist-lib/tokens.*",
14
14
  "dist-lib/theme.css",
15
15
  "dist-lib/theme/**",
16
+ "dist-lib/fonts/**",
16
17
  "dist-lib/preview/**",
17
18
  "dist-lib/chunks/**",
18
19
  "dist-lib/src/**",
@@ -91,9 +92,11 @@
91
92
  "tokens:dtcg": "tsx tokens/transforms/to-dtcg.ts > dist/tokens.tokens.json",
92
93
  "tokens:all": "npm run tokens:tw4 && npm run tokens:css && npm run tokens:dtcg",
93
94
  "tokens:check": "tsc --noEmit",
95
+ "brand:check": "node scripts/brand-check.mjs",
96
+ "brand:contrast": "node scripts/brand-contrast.mjs",
94
97
  "registry:stamp": "node scripts/registry-stamp.mjs",
95
98
  "registry:build": "npm run examples:drift && npm run tokens:tw4 && npm run registry:stamp && npx shadcn build",
96
- "release:check": "node scripts/registry-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs && npm run registry-app:audit",
99
+ "release:check": "node scripts/registry-check.mjs --ci && node scripts/brand-check.mjs && node scripts/distribution-debt.mjs --ci && node scripts/examples-drift-check.mjs && npm run registry-app:audit",
97
100
  "registry-app:audit": "npm audit --audit-level=high --prefix registry-app",
98
101
  "distribution:debt": "node scripts/distribution-debt.mjs",
99
102
  "lint:styles": "node scripts/lint-styles.mjs --ratchet origin/main",