forlogic-core 1.15.8 → 1.16.1

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 (193) hide show
  1. package/.note/memory/components/action-button-for-tables.md +23 -0
  2. package/.note/memory/components/alertdialog-permanent-deletion.md +47 -0
  3. package/.note/memory/components/baseform-custom-fields.md +60 -0
  4. package/.note/memory/components/baseform-usage.md +43 -0
  5. package/.note/memory/components/delete-confirmation-dialog.md +48 -0
  6. package/.note/memory/components/dialog-sizes-and-structure.md +31 -0
  7. package/.note/memory/components/dialog-variants.md +44 -0
  8. package/.note/memory/components/pagination-usage.md +28 -0
  9. package/.note/memory/documentation/consolidated-components-registry.md +18 -0
  10. package/.note/memory/features/crud-standardized-config-props.md +3 -0
  11. package/.note/memory/features/import/attachment-strategy.md +18 -0
  12. package/.note/memory/patterns/body-content-scroll-usage.md +59 -0
  13. package/.note/memory/patterns/crud-action-bar-3-zone-layout.md +3 -0
  14. package/.note/memory/patterns/crud-bulk-actions-dropdown-standard.md +3 -0
  15. package/.note/memory/patterns/crud-toolbar-layout.md +26 -0
  16. package/.note/memory/patterns/dialog-body-scroll-pattern.md +27 -0
  17. package/.note/memory/patterns/single-scroll-pattern.md +22 -0
  18. package/.note/memory/patterns/spa-navigation-pattern.md +19 -0
  19. package/.note/memory/rules/no-auto-index-rule.md +20 -0
  20. package/.note/memory/rules/no-delete-policy-rule.md +23 -0
  21. package/.note/memory/rules/no-env-modification-rule.md +19 -0
  22. package/.note/memory/rules/supabase-schema-rule.md +19 -0
  23. package/README.md +8 -4
  24. package/dist/README.md +7 -4
  25. package/dist/assets/AccordionDoc-BnfxyOi9.js +31 -0
  26. package/dist/assets/ActionButtonDoc-b4F_J8gn.js +47 -0
  27. package/dist/assets/AlertDoc-PkiHguSJ.js +37 -0
  28. package/dist/assets/AppHeaderDoc-CsFMZGV0.js +67 -0
  29. package/dist/assets/AppSidebarDoc-Bg71N-zq.js +196 -0
  30. package/dist/assets/AuthDoc-DDm57y_J.js +192 -0
  31. package/dist/assets/AvatarDoc-C6wiZIZR.js +11 -0
  32. package/dist/assets/BadgeDoc-Bsg7cfm0.js +36 -0
  33. package/dist/assets/BaseFormDoc-DeIlV273.js +169 -0
  34. package/dist/assets/BodyContentDoc-Q3DGvyN9.js +83 -0
  35. package/dist/assets/BreadcrumbDoc-ChsVFjMF.js +75 -0
  36. package/dist/assets/ButtonDoc-C7Q31Bh3.js +41 -0
  37. package/dist/assets/ButtonGroupDoc-Bn5vhjBq.js +7 -0
  38. package/dist/assets/CalendarDoc-iVjNyxyr.js +81 -0
  39. package/dist/assets/CardDoc-D511dll7.js +49 -0
  40. package/dist/assets/ChartDoc-CQyYOEHL.js +111 -0
  41. package/dist/assets/CheckboxDoc-Cjsy4XAq.js +55 -0
  42. package/dist/assets/ColorPickerDoc-hnYJUWpF.js +10 -0
  43. package/dist/assets/ColorsFoundationDoc-B8Z4tAyZ.js +13 -0
  44. package/dist/assets/ComboTreeDoc-ChEbW4a3.js +21 -0
  45. package/dist/assets/ComboboxDoc-CHWeGE_F.js +134 -0
  46. package/dist/assets/ComponentDocTemplate-BtOCnlM2.js +1 -0
  47. package/dist/assets/ContextMenuDoc-C3mFO_Yx.js +182 -0
  48. package/dist/assets/ContextsDoc-ChEbQxom.js +184 -0
  49. package/dist/assets/CreateCrudPageDoc-C9tXisCF.js +106 -0
  50. package/dist/assets/CrudActionBarDoc-Cp1L4gpO.js +112 -0
  51. package/dist/assets/CrudGridDoc-D-kSFBAQ.js +85 -0
  52. package/dist/assets/CrudOverviewDoc-CeLBwg-B.js +14 -0
  53. package/dist/assets/CrudPrimitivesDoc-B2u1vZog.js +164 -0
  54. package/dist/assets/CrudTableDoc-CvV-II_X.js +95 -0
  55. package/dist/assets/DataListDoc-BLRii0jB.js +13 -0
  56. package/dist/assets/DesignSystemHome-TE0Ubaup.js +1 -0
  57. package/dist/assets/DialogDoc--LC5Jvat.js +981 -0
  58. package/dist/assets/DropdownMenuDoc-oPlEriRY.js +175 -0
  59. package/dist/assets/EmptyStateDoc-rNqfWKok.js +35 -0
  60. package/dist/assets/EnvironmentsDoc-CT7l5s2u.js +96 -0
  61. package/dist/assets/ErrorBoundaryDoc-rPHOUygA.js +111 -0
  62. package/dist/assets/ExampleCard-DfuMYM6E.js +1 -0
  63. package/dist/assets/FormDoc-B0L_QaCT.js +81 -0
  64. package/dist/assets/FoundationOverview-Dbb8rBsU.js +1 -0
  65. package/dist/assets/GridDoc-ifcGA2Yw.js +28 -0
  66. package/dist/assets/HooksDoc-CUOT_3Du.js +665 -0
  67. package/dist/assets/HoverCardDoc-CdTU2QkI.js +31 -0
  68. package/dist/assets/I18nDoc-CMEvFqsz.js +232 -0
  69. package/dist/assets/IconPickerDoc-DF9hEwnJ.js +10 -0
  70. package/dist/assets/IconsFoundationDoc-D4Y0wKbm.js +33 -0
  71. package/dist/assets/InputDoc-d_IL4dsq.js +211 -0
  72. package/dist/assets/LabelDoc-Dr64ISiJ.js +42 -0
  73. package/dist/assets/LeadershipDoc-BnrTuaeV.js +416 -0
  74. package/dist/assets/MediaDoc-CLuVprAr.js +459 -0
  75. package/dist/assets/MenubarDoc-CW7L4QJ4.js +165 -0
  76. package/dist/assets/ModulesDialogDoc-CUb_g4X-.js +71 -0
  77. package/dist/assets/NavigationMenuDoc-Csc0U6bV.js +116 -0
  78. package/dist/assets/OnboardingDialogDoc-3RtjNH1O.js +55 -0
  79. package/dist/assets/PaginationDoc-BGurD4xQ.js +27 -0
  80. package/dist/assets/PaginationDoc-DqFyou6O.js +98 -0
  81. package/dist/assets/PlacesDoc-Dyx8gsqb.js +226 -0
  82. package/dist/assets/PopoverDoc-DHF-ItUX.js +64 -0
  83. package/dist/assets/ProgressDoc-DXKV-fkI.js +29 -0
  84. package/dist/assets/QualiexUserFieldDoc-BbP7w-Pu.js +149 -0
  85. package/dist/assets/RadioGroupDoc-D845uweM.js +57 -0
  86. package/dist/assets/RadiusDoc-vN4tTsay.js +7 -0
  87. package/dist/assets/RequiredFieldsCounterDoc-TzR9r-U9.js +58 -0
  88. package/dist/assets/ResizableDoc-Bkfz_25O.js +104 -0
  89. package/dist/assets/RichTextEditorDoc-BUQrg7M8.js +24 -0
  90. package/dist/assets/ScrollAreaDoc-B6ODYHMX.js +28 -0
  91. package/dist/assets/SecurityDoc-Chbt6w1s.js +204 -0
  92. package/dist/assets/SelectDoc-BhcpBIAO.js +80 -0
  93. package/dist/assets/SeparatorDoc-C3fhatb0.js +4 -0
  94. package/dist/assets/ServicesDoc-_uao-HA_.js +308 -0
  95. package/dist/assets/ShadowsDoc-DpkO_TZQ.js +9 -0
  96. package/dist/assets/SignDoc-BJtnoT6I.js +66 -0
  97. package/dist/assets/SkeletonDoc-BZS07PJh.js +54 -0
  98. package/dist/assets/SliderDoc-D2ApV3XT.js +41 -0
  99. package/dist/assets/SpacingDoc-PNrU24B2.js +12 -0
  100. package/dist/assets/SplitButtonDoc-D5tUF2Ja.js +53 -0
  101. package/dist/assets/StepSelectorDoc-Cj0ALYar.js +41 -0
  102. package/dist/assets/SwitchDoc-DtsT8oh_.js +56 -0
  103. package/dist/assets/TableDoc-BC-jQnXu.js +128 -0
  104. package/dist/assets/TableOfContents-DBMJMbI4.js +1 -0
  105. package/dist/assets/TabsDoc-DtXJ0xY5.js +42 -0
  106. package/dist/assets/TextareaDoc-nuW5tqBQ.js +46 -0
  107. package/dist/assets/ToastDoc-D1aX5zda.js +157 -0
  108. package/dist/assets/ToggleDoc-ILass4CS.js +51 -0
  109. package/dist/assets/TooltipDoc-lPbdWe_9.js +58 -0
  110. package/dist/assets/TruncatedCellDoc-DOAzbF2F.js +12 -0
  111. package/dist/assets/TypographyFoundationDoc-3ZD-rQZw.js +7 -0
  112. package/dist/assets/UtilitiesDoc-D7lkYhuz.js +145 -0
  113. package/dist/assets/blocks-Jy49RoqJ.js +1 -0
  114. package/dist/assets/calendar-days-Cvf2zLJl.js +1 -0
  115. package/dist/assets/circle-plus-MnG9kjyq.js +1 -0
  116. package/dist/assets/circle-x-B9ouupla.js +1 -0
  117. package/dist/assets/crown-BweN5jpI.js +1 -0
  118. package/dist/assets/date-picker-ttyYeYvC.js +1 -0
  119. package/dist/assets/disabled-menu-item-WlpPOqxg.js +1 -0
  120. package/dist/assets/drawer-DvU6_eK5.js +3 -0
  121. package/dist/assets/file-pen-line-C0VV-QjF.js +1 -0
  122. package/dist/assets/git-branch-DCjGGwvF.js +1 -0
  123. package/dist/assets/globe-BdFDFP_k.js +1 -0
  124. package/dist/assets/grip-vertical-CgXp0oI-.js +1 -0
  125. package/dist/assets/hash-BAYi_wfk.js +1 -0
  126. package/dist/assets/index-BtX5DZqb.js +310 -0
  127. package/dist/assets/index-C1So5Sai.css +1 -0
  128. package/dist/assets/life-buoy-BydIgTyJ.js +1 -0
  129. package/dist/assets/lucide-react-ZIMhRYmb.js +1 -0
  130. package/dist/assets/monitor-B6txWJPg.js +1 -0
  131. package/dist/assets/package-DNe3FsCh.js +1 -0
  132. package/dist/assets/pen-CzTmQ16z.js +1 -0
  133. package/dist/assets/pin-CJJgLEBz.js +1 -0
  134. package/dist/assets/radio-group-Btv_BY60.js +1 -0
  135. package/dist/assets/server-XQDXtrjm.js +1 -0
  136. package/dist/assets/share-2-Dz_89MJb.js +1 -0
  137. package/dist/assets/step-selector-D0_Y1dow.js +1 -0
  138. package/dist/assets/text-align-start-WsHo7CNJ.js +1 -0
  139. package/dist/assets/trash-CeK-mWnM.js +1 -0
  140. package/dist/assets/useMockCrud-RV9z9n5x.js +1 -0
  141. package/dist/assets/user-check-CrbWcnPN.js +1 -0
  142. package/dist/assets/user-plus-Dce9DbqQ.js +1 -0
  143. package/dist/auth/services/TokenManager.d.ts +5 -0
  144. package/dist/auth/services/TokenRegenerationService.d.ts +5 -3
  145. package/dist/auth/services/TokenService.d.ts +0 -4
  146. package/dist/bin/pull-docs.js +87 -64
  147. package/dist/components/modules/ModuleAccessGuard.d.ts +16 -0
  148. package/dist/components/modules/index.d.ts +2 -0
  149. package/dist/components/ui/chart.d.ts +1 -1
  150. package/dist/components/ui/color-picker.d.ts +4 -0
  151. package/dist/components/ui/combo-tree.d.ts +70 -0
  152. package/dist/components/ui/combobox.d.ts +1 -0
  153. package/dist/components/ui/dialog.d.ts +8 -0
  154. package/dist/components/ui/icon-picker.d.ts +2 -0
  155. package/dist/components/ui/input-group.d.ts +1 -1
  156. package/dist/components/ui/resizable.d.ts +1 -1
  157. package/dist/config/environments.d.ts +12 -0
  158. package/dist/config/index.d.ts +23 -9
  159. package/dist/contexts/ModuleContext.d.ts +34 -0
  160. package/dist/crud/components/SelectionCheckbox.d.ts +9 -0
  161. package/dist/crud/generateCrudConfig.d.ts +2 -2
  162. package/dist/docs/KNOWLEDGE.md +206 -0
  163. package/dist/exports/ui.d.ts +1 -0
  164. package/dist/hooks/useMediaQuery.d.ts +14 -0
  165. package/dist/hooks/useModuleAccess.d.ts +60 -0
  166. package/dist/hooks/usePageTitle.d.ts +7 -1
  167. package/dist/index.css +2 -2
  168. package/dist/index.css.map +1 -1
  169. package/dist/index.d.ts +9 -1
  170. package/dist/index.esm.js +1 -1
  171. package/dist/index.html +16 -11
  172. package/dist/index.js +1 -1
  173. package/dist/leadership/hooks/useLeadershipMutations.d.ts +0 -1
  174. package/dist/media/hooks/useMediaUpload.d.ts +0 -1
  175. package/dist/media/utils/imageHelpers.d.ts +1 -1
  176. package/dist/places/services/PlaceService.d.ts +1 -1
  177. package/dist/providers/CoreProviders.d.ts +20 -4
  178. package/dist/qualiex/services/qualiexApi.d.ts +22 -4
  179. package/dist/services/QualiexEnrichmentService.d.ts +0 -12
  180. package/dist/setup.d.ts +2 -0
  181. package/dist/sign/services/signService.d.ts +0 -6
  182. package/dist/types.d.ts +59 -10
  183. package/dist/utils/index.d.ts +2 -2
  184. package/docs/DESIGN_SYSTEM.md +12181 -0
  185. package/docs/KNOWLEDGE.md +206 -0
  186. package/docs/PUBLISH.md +168 -0
  187. package/package.json +16 -18
  188. package/dist/assets/index-D0RTIFH3.css +0 -1
  189. package/dist/assets/index-YMQXWoDk.js +0 -9868
  190. package/dist/auth/utils/AuthUtils.d.ts +0 -4
  191. package/dist/i18n/DatabaseBackend.d.ts +0 -9
  192. package/dist/i18n/components/TranslationLoader.d.ts +0 -10
  193. package/dist/services/TranslationService.d.ts +0 -20
@@ -0,0 +1,206 @@
1
+ # KNOWLEDGE — Regras Críticas do Projeto
2
+
3
+ > 📖 **Fonte oficial completa**: `README.md` | 🎨 **Design System**: `docs/DESIGN_SYSTEM.md`
4
+ > 🤖 **Para IA**: Consulte `.note/memory/` para padrões de componentes e layout
5
+
6
+ ---
7
+
8
+ ## 0. Variável de Schema
9
+
10
+ > ⚠️ **SCHEMA_PADRAO = `common`**
11
+ >
12
+ > Todos os exemplos abaixo usam `SCHEMA_PADRAO`. Em cada projeto, substitua pelo schema correto.
13
+ > **Neste projeto o schema é `common`.**
14
+
15
+ ---
16
+
17
+ ## 1. Schema Padrão
18
+
19
+ Toda query Supabase **DEVE** usar `.schema('SCHEMA_PADRAO')`. O projeto **NÃO** usa o schema `public`.
20
+
21
+ ```ts
22
+ // ✅ CORRETO
23
+ const { data } = await supabase.schema('SCHEMA_PADRAO').from('tabela').select('*');
24
+
25
+ // ❌ ERRADO (vai falhar em produção)
26
+ const { data } = await supabase.from('tabela').select('*');
27
+ ```
28
+
29
+ ---
30
+
31
+ ## 2. RLS Policies
32
+
33
+ ### Regras obrigatórias
34
+ - **NUNCA** criar policy `FOR DELETE` — usar soft delete (`deleted_at` + policy `FOR UPDATE`)
35
+ - **SEMPRE** usar `(SELECT auth.uid())` ou `(SELECT auth.jwt())` com parênteses — evita re-execução por linha
36
+ - Sintaxe: `SELECT` → `USING` | `INSERT` → `WITH CHECK` | `UPDATE` → `USING` + `WITH CHECK`
37
+
38
+ ### Padrão JWT alias (multi-tenancy por alias)
39
+
40
+ ```sql
41
+ -- SELECT
42
+ CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
43
+ FOR SELECT USING (
44
+ ((SELECT auth.jwt()) ->> 'alias'::text) = alias
45
+ );
46
+
47
+ -- INSERT
48
+ CREATE POLICY "table_insert" ON SCHEMA_PADRAO.tabela
49
+ FOR INSERT WITH CHECK (
50
+ ((SELECT auth.jwt()) ->> 'alias'::text) = alias
51
+ );
52
+
53
+ -- UPDATE
54
+ CREATE POLICY "table_update" ON SCHEMA_PADRAO.tabela
55
+ FOR UPDATE
56
+ USING (((SELECT auth.jwt()) ->> 'alias'::text) = alias)
57
+ WITH CHECK (((SELECT auth.jwt()) ->> 'alias'::text) = alias);
58
+ ```
59
+
60
+ ### Alternativa: auth.uid() (quando tabela tem `id_user`)
61
+
62
+ ```sql
63
+ CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
64
+ FOR SELECT USING (auth.uid() = id_user);
65
+
66
+ CREATE POLICY "table_insert" ON SCHEMA_PADRAO.tabela
67
+ FOR INSERT WITH CHECK (auth.uid() = id_user);
68
+
69
+ CREATE POLICY "table_update" ON SCHEMA_PADRAO.tabela
70
+ FOR UPDATE
71
+ USING (auth.uid() = id_user)
72
+ WITH CHECK (auth.uid() = id_user);
73
+ ```
74
+
75
+ ### Padrão company_id (multi-tenancy por empresa)
76
+
77
+ ```sql
78
+ CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
79
+ FOR SELECT TO authenticated
80
+ USING (
81
+ company_id = (
82
+ SELECT (auth.jwt() -> 'user_metadata' ->> 'company_id')::uuid
83
+ )
84
+ );
85
+ ```
86
+
87
+ ### ❌ Erros comuns de RLS
88
+
89
+ ```sql
90
+ -- ❌ WITH CHECK em SELECT (deve ser USING)
91
+ CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR SELECT WITH CHECK (...);
92
+
93
+ -- ❌ USING em INSERT (deve ser WITH CHECK)
94
+ CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR INSERT USING (...);
95
+
96
+ -- ❌ Parênteses extra no JWT
97
+ CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR SELECT USING (
98
+ ((SELECT (auth.jwt()) ->> 'alias'::text)) = alias
99
+ );
100
+
101
+ -- ❌ Política DELETE (usar soft delete)
102
+ CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR DELETE USING (...);
103
+ ```
104
+
105
+ ### Soft delete (padrão obrigatório)
106
+
107
+ ```sql
108
+ ALTER TABLE SCHEMA_PADRAO.tabela ADD COLUMN deleted_at TIMESTAMP WITH TIME ZONE;
109
+
110
+ -- Filtrar registros ativos
111
+ CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
112
+ FOR SELECT USING (
113
+ deleted_at IS NULL
114
+ AND ((SELECT auth.jwt()) ->> 'alias'::text) = alias
115
+ );
116
+ ```
117
+
118
+ ### Tabela de roles (quando necessário)
119
+
120
+ Usar função `SECURITY DEFINER` para checar roles e evitar recursão RLS:
121
+
122
+ ```sql
123
+ CREATE FUNCTION public.has_role(_user_id uuid, _role app_role)
124
+ RETURNS boolean LANGUAGE sql STABLE SECURITY DEFINER
125
+ SET search_path = public AS $$
126
+ SELECT EXISTS (SELECT 1 FROM public.user_roles WHERE user_id = _user_id AND role = _role)
127
+ $$;
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 3. Convenções de Nomenclatura (SQL)
133
+
134
+ | Tipo | Padrão | Exemplo |
135
+ |------|--------|---------|
136
+ | FK | `id_<tabela_singular>` | `id_process`, `id_user` |
137
+ | Boolean | `is_` ou `has_` | `is_active`, `has_access` |
138
+ | Timestamps | `created_at`, `updated_at`, `deleted_at` | — |
139
+ | Tabelas | plural, snake_case | `processes`, `user_roles` |
140
+
141
+ ---
142
+
143
+ ## 4. Proibições
144
+
145
+ | Regra | Detalhe |
146
+ |-------|---------|
147
+ | ❌ Índices automáticos | Nunca criar índices em migrations sem aprovação explícita |
148
+ | ❌ Modificar `.env` | Nunca sem autorização explícita do usuário |
149
+ | ❌ Policy DELETE | Usar soft delete com `deleted_at` |
150
+ | ❌ Duplicar componentes da lib | Sempre usar `forlogic-core` primeiro |
151
+ | ❌ Hardcoded admin checks | Nunca usar localStorage/sessionStorage para verificar roles |
152
+ | ❌ Import direto do client auto-gerado | Nunca importar de `@/integrations/supabase/client`. Usar `getSupabaseClient()` de `forlogic-core`. ESLint `no-restricted-imports` bloqueia automaticamente. O arquivo existe apenas como fonte de dados para o `vite.config.ts`. |
153
+
154
+ ---
155
+
156
+ ## 5. Lib-First (forlogic-core)
157
+
158
+ Antes de criar qualquer componente, verificar se já existe em `forlogic-core`:
159
+
160
+ - **UI**: Button, Dialog, Input, Select, Combobox, SplitButton, RichTextEditor, ColorPicker, IconPicker, etc.
161
+ - **Layout**: AppLayout, AppHeader, AppSidebar, BodyContent
162
+ - **CRUD**: createCrudPage, CrudTable, CrudGrid, CrudActionBar, BaseForm
163
+ - **Utilitários**: ActionButton, Pagination, FilterBar, EmptyState, LoadingState, StepSelector
164
+ - **Módulos**: Sign, Places, Leadership, Media, ModulesDialog
165
+
166
+ ```ts
167
+ import { Button, Dialog, createCrudPage, cn, formatDatetime } from 'forlogic-core';
168
+ ```
169
+
170
+ ---
171
+
172
+ ## 6. Padrões CRUD
173
+
174
+ - **Toolbar**: Layout 3 zonas — Esquerda (Botão Novo + Ações em lote), Centro (Busca), Direita (Filtros + Toggle view)
175
+ - **Paginação**: Sempre usar `CrudPrimitivePagination` com `variant="full"`
176
+ - **Ações em lote**: Dropdown "Ações em lote" no CrudActionBar (não criar BulkActionBar separado)
177
+ - **Ações de linha**: Sempre usar `ActionButton` da lib (nunca botão genérico com ícone MoreHorizontal)
178
+
179
+ ---
180
+
181
+ ## 7. Componentes/Padrões Deprecated
182
+
183
+ | Não usar | Usar em vez disso |
184
+ |----------|-------------------|
185
+ | `BulkActionBar` separado | Dropdown integrado no `CrudActionBar` |
186
+ | Botão genérico `<MoreHorizontal>` | `ActionButton` da lib |
187
+ | Paginação manual | `CrudPrimitivePagination` |
188
+ | `public` schema | `.schema('SCHEMA_PADRAO')` |
189
+ | `StatusSelect` | `Combobox` |
190
+ | `DeleteConfirmationDialog` | `Dialog` |
191
+ | `Searchbar` | `Input` com ícone |
192
+
193
+ ---
194
+
195
+ ## 8. Fontes Complementares
196
+
197
+ | Fonte | Caminho | Conteúdo |
198
+ |-------|---------|----------|
199
+ | **Memory rules** | `.note/memory/rules/` | Regras de schema, RLS, índices, .env |
200
+ | **Memory patterns** | `.note/memory/patterns/` | Layouts CRUD, toolbar, scroll, navegação SPA |
201
+ | **Memory components** | `.note/memory/components/` | ActionButton, BaseForm, Dialog, Pagination |
202
+ | **README.md** | `README.md` | Documentação completa e genérica da lib |
203
+ | **Design System** | Rota `/ds` no app | Documentação visual de todos os componentes |
204
+ | **DESIGN_SYSTEM.md** | `docs/DESIGN_SYSTEM.md` | Documentação técnica do Design System |
205
+
206
+ > 📌 Ao implementar qualquer funcionalidade, consulte as fontes acima antes de criar código novo.
@@ -0,0 +1,168 @@
1
+ # 📦 Como Publicar a Biblioteca forlogic-core
2
+
3
+ > **Nota:** Para documentação de uso e instalação da biblioteca, consulte [README.md](../README.md)
4
+
5
+ ## Configuração Inicial
6
+
7
+ A biblioteca está configurada para ser publicada no NPM como `forlogic-core`.
8
+
9
+ ### Arquivos de Configuração
10
+
11
+ - `package.json` - Configuração principal com campos de biblioteca
12
+ - `rollup.config.js` - Configuração de build
13
+ - `tsconfig.json` - Configuração TypeScript unificada
14
+ - `.npmignore` - Arquivos excluídos da publicação (inclui `docs/` - não publicada no NPM)
15
+ - `README.md` - Documentação principal (copiada para dist/)
16
+
17
+ ## Comandos Disponíveis
18
+
19
+ ### 1. Build da Biblioteca
20
+
21
+ ```bash
22
+ npm run build:lib
23
+ ```
24
+
25
+ ### 2. Teste de Publicação (Dry Run)
26
+
27
+ ```bash
28
+ npm publish --dry-run
29
+ ```
30
+
31
+ ### 3. Release Automatizado (Recomendado)
32
+
33
+ **Script JavaScript**
34
+
35
+ ```bash
36
+ # Release patch (1.0.0 → 1.0.1)
37
+ node scripts/publish/release.js patch
38
+
39
+ # Release minor (1.0.0 → 1.1.0)
40
+ node scripts/publish/release.js minor
41
+
42
+ # Release major (1.0.0 → 2.0.0)
43
+ node scripts/publish/release.js major
44
+ ```
45
+
46
+ ### 4. Publicação Manual (Legado)
47
+
48
+ ```bash
49
+ # Incrementar versão e publicar manualmente
50
+ npm version patch # 1.0.0 → 1.0.1
51
+ npm version minor # 1.0.0 → 1.1.0
52
+ npm version major # 1.0.0 → 2.0.0
53
+
54
+ # Publicar versão atual
55
+ npm publish
56
+ ```
57
+
58
+ ## Processo de Release Automatizado
59
+
60
+ ### Scripts Automatizados
61
+
62
+ Os scripts `scripts/publish/release.js` e `scripts/publish/release.sh` executam automaticamente:
63
+
64
+ 1. **Verificação**: Confere se não há mudanças pendentes no Git
65
+ 2. **Build**: Executa `npm run build:lib` com Rollup
66
+ 3. **Versão**: Incrementa versão no `package.json`
67
+ 4. **Publicação**: Publica no NPM
68
+ 5. **Tags**: Envia tags para o GitHub
69
+
70
+ ### Processo Manual (Legado)
71
+
72
+ 1. **Build**: Executa `npm run build:lib` com Rollup
73
+ 2. **Geração**: Cria arquivos CJS, ESM e declarações TypeScript
74
+ 3. **Publicação**: Usa `npm publish` diretamente
75
+
76
+ ## Estrutura da Publicação
77
+
78
+ ```
79
+ dist/
80
+ ├── index.js # CommonJS
81
+ ├── index.esm.js # ES Modules
82
+ ├── index.d.ts # TypeScript declarations
83
+ ├── index.css # CSS da biblioteca
84
+ ├── package.json # Configuração da lib
85
+ └── README.md # Documentação
86
+ ```
87
+
88
+ ## Documentação para Usuários
89
+
90
+ A documentação completa está **consolidada no README.md** e disponível publicamente no repositório GitHub:
91
+
92
+ - **[📖 README.md](../README.md)** - Guia completo (~350 linhas)
93
+ - ✅ Regras críticas e checklist
94
+ - ✅ Quick start CRUD
95
+ - ✅ Migrations e RLS
96
+ - ✅ Troubleshooting
97
+ - ✅ Referência rápida
98
+
99
+ ### ⚙️ Documentação no Pacote NPM
100
+
101
+ O `README.md` é incluído no pacote NPM publicado (`dist/README.md`) e contém toda a documentação necessária em um único arquivo otimizado para leitura por IA e desenvolvedores.
102
+
103
+ #### Documentações Modulares
104
+
105
+ Algumas features possuem documentação detalhada em arquivos específicos para desenvolvimento local:
106
+
107
+ - `lib/crud/components/CUSTOM_FIELDS.md` - Campos customizados do BaseForm
108
+ - `lib/qualiex/places/README.md` - Sistema de gestores de locais
109
+
110
+ **Importante:** Essas documentações **não são publicadas no NPM**. O conteúdo consolidado está no `README.md` principal que é copiado para `dist/README.md`.
111
+
112
+ ## Verificação antes da Publicação
113
+
114
+ 1. ✅ Build bem-sucedido (`npm run build:lib`)
115
+ 2. ✅ Dry-run sem erros (`npm publish --dry-run`)
116
+ 3. ✅ Versão correta no `package.json`
117
+ 4. ✅ README atualizado
118
+ 5. ✅ Changelog documentado (se aplicável)
119
+
120
+ ## Troubleshooting
121
+
122
+ ### Erro de Permissão NPM
123
+
124
+ ```bash
125
+ npm login
126
+ ```
127
+
128
+ ### Build Falha
129
+
130
+ Verifique se todas as dependências estão instaladas:
131
+
132
+ ```bash
133
+ npm install
134
+ ```
135
+
136
+ ### Rollup Errors
137
+
138
+ Confirme que o `rollup.config.js` está correto e que o `lib/index.ts` existe e exporta tudo necessário.
139
+
140
+ ### CSS Import Issues
141
+
142
+ Se houver erro ao importar CSS, use:
143
+
144
+ ```tsx
145
+ import 'forlogic-core/index.css';
146
+ ```
147
+
148
+ O CSS é extraído para `index.css` durante o build da biblioteca.
149
+
150
+ # Comandos Disponíveis
151
+
152
+ ## Instalar a última versão do forlogic-core
153
+
154
+ ```bash
155
+ npm i forlogic-core@latest
156
+ ```
157
+
158
+ ## Build do projeto
159
+
160
+ ```bash
161
+ npm run build
162
+ ```
163
+
164
+ ## Limpar cache do NPM
165
+
166
+ ```bash
167
+ npm cache clean --force
168
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forlogic-core",
3
- "version": "1.15.8",
3
+ "version": "1.16.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -26,6 +26,8 @@
26
26
  },
27
27
  "files": [
28
28
  "dist",
29
+ "docs",
30
+ ".note/memory",
29
31
  "DESIGN_SYSTEM.md"
30
32
  ],
31
33
  "sideEffects": [
@@ -44,13 +46,9 @@
44
46
  "lib-update": "dist/bin/pull-docs.js"
45
47
  },
46
48
  "dependencies": {
47
- "@babel/parser": "^7.28.5",
48
- "@babel/traverse": "^7.28.5",
49
- "@babel/types": "^7.28.5",
50
49
  "@dnd-kit/core": "^6.3.1",
51
50
  "@dnd-kit/sortable": "^10.0.0",
52
51
  "@hookform/resolvers": "^3.10.0",
53
- "@playwright/test": "^1.57.0",
54
52
  "@radix-ui/react-accordion": "^1.2.11",
55
53
  "@radix-ui/react-alert-dialog": "^1.1.14",
56
54
  "@radix-ui/react-avatar": "^1.1.10",
@@ -77,12 +75,7 @@
77
75
  "@radix-ui/react-toggle": "^1.1.9",
78
76
  "@radix-ui/react-toggle-group": "^1.1.10",
79
77
  "@radix-ui/react-tooltip": "^1.2.7",
80
- "@rollup/plugin-commonjs": "^28.0.6",
81
- "@rollup/plugin-json": "^6.1.0",
82
- "@rollup/plugin-node-resolve": "^16.0.1",
83
- "@rollup/plugin-terser": "^0.4.4",
84
- "@supabase/supabase-js": "^2.98.0",
85
- "@svgr/rollup": "^8.1.0",
78
+ "@supabase/supabase-js": "^2.99.0",
86
79
  "@tanstack/react-query": "^5.83.0",
87
80
  "@tiptap/extension-color": "^3.14.0",
88
81
  "@tiptap/extension-highlight": "^3.14.0",
@@ -97,22 +90,16 @@
97
90
  "date-fns-tz": "^3.2.0",
98
91
  "exceljs": "^4.4.0",
99
92
  "i18next-browser-languagedetector": "^8.2.0",
93
+ "jszip": "^3.10.1",
100
94
  "lucide-react": "^0.553.0",
101
95
  "next-themes": "^0.3.0",
102
96
  "react": "^18.3.1",
103
97
  "react-day-picker": "^9.13.0",
104
98
  "react-dom": "^18.3.1",
105
99
  "react-hook-form": "^7.61.1",
106
- "react-is": "^19.2.3",
107
- "react-markdown": "^10.1.0",
108
- "react-refresh": "^0.18.0",
109
100
  "react-resizable-panels": "^3.0.6",
110
101
  "react-router-dom": "^6.30.1",
111
102
  "recharts": "^3.6.0",
112
- "remark-gfm": "^4.0.1",
113
- "rollup": "^4.50.1",
114
- "rollup-plugin-copy": "^3.5.0",
115
- "rollup-plugin-postcss": "^4.0.2",
116
103
  "sonner": "^1.7.4",
117
104
  "tailwind-merge": "^3.3.1",
118
105
  "tailwindcss-animate": "^1.0.7",
@@ -124,9 +111,17 @@
124
111
  "react-i18next": "^16.0.0"
125
112
  },
126
113
  "devDependencies": {
114
+ "@babel/parser": "^7.28.5",
115
+ "@babel/traverse": "^7.28.5",
116
+ "@babel/types": "^7.28.5",
127
117
  "@eslint/js": "^9.32.0",
118
+ "@rollup/plugin-commonjs": "^28.0.6",
119
+ "@rollup/plugin-json": "^6.1.0",
120
+ "@rollup/plugin-node-resolve": "^16.0.1",
121
+ "@rollup/plugin-terser": "1.0.0",
128
122
  "@rollup/plugin-typescript": "^12.1.4",
129
123
  "@rollup/plugin-url": "^8.0.2",
124
+ "@svgr/rollup": "^8.1.0",
130
125
  "@tailwindcss/typography": "^0.5.16",
131
126
  "@types/file-saver": "^2.0.7",
132
127
  "@types/node": "^22.16.5",
@@ -141,7 +136,10 @@
141
136
  "globals": "^15.15.0",
142
137
  "lovable-tagger": "^1.1.9",
143
138
  "postcss": "^8.5.6",
139
+ "rollup": "^4.50.1",
140
+ "rollup-plugin-copy": "^3.5.0",
144
141
  "rollup-plugin-esbuild": "^6.2.1",
142
+ "rollup-plugin-postcss": "^4.0.2",
145
143
  "tailwindcss": "^3.4.17",
146
144
  "tsx": "^4.20.6",
147
145
  "typescript": "^5.8.3",