{"_id":"@dbs-portal/module-text-template-management","name":"@dbs-portal/module-text-template-management","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dbs-portal/module-text-template-management","version":"1.0.0","description":"Text template management module with template engine, variable system, and localization support","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"vite build","dev":"vite build --watch","type-check":"tsc --noEmit","lint":"eslint src --ext .ts,.tsx","lint:fix":"eslint src --ext .ts,.tsx --fix","test":"vitest","test:ui":"vitest --ui","clean":"rimraf dist"},"dependencies":{"@dbs-portal/core-shared":"1.0.0","@dbs-portal/core-api":"1.0.0","@dbs-portal/module-language-management":"1.0.0","@tanstack/react-query":"^5.0.0","antd":"^5.0.0","react":"^18.0.0","react-dom":"^18.0.0","date-fns":"^3.0.0","lodash-es":"^4.17.21","zod":"^3.22.0","handlebars":"^4.7.8","monaco-editor":"^0.45.0","react-monaco-editor":"^0.55.0","marked":"^12.0.0","dompurify":"^3.0.0"},"devDependencies":{"@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/lodash-es":"^4.17.0","@types/handlebars":"^4.1.0","@types/dompurify":"^3.0.0","typescript":"^5.0.0","vite":"^5.0.0","vitest":"^1.0.0","eslint":"^8.0.0","rimraf":"^5.0.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"keywords":["dbs-portal","text-template","template-engine","handlebars","variables","localization","react","typescript"],"author":{"name":"DBS Portal Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/devboost-solutions/dbs-portal.git","directory":"packages/modules/text-template-management"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"homepage":"https://github.com/your-org/dbs-portal#readme","_id":"@dbs-portal/module-text-template-management@1.0.0","gitHead":"61a23904a481b624f3e8ed7abb6c944ecfeaca7b","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-eSO4tONaasYvwDsK12jEH0RxukzRwNhh27cI3ECm7om6klsano/PVlydNSHAI2KcJlNREFEyUrdYQDTz9Uj7ZA==","shasum":"20c41f2d70e1a03d3fbbd98607115084be360845","tarball":"https://registry.npmjs.org/@dbs-portal/module-text-template-management/-/module-text-template-management-1.0.0.tgz","fileCount":4,"unpackedSize":494777,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPoaoyyJgJPpm2GZDLKzRs45gqrDJsaD6LAZh0HR92JgIhAP3/eSRCei258dDASBElqIRapbug/xS9cAvx0Yo9kL8j"}]},"_npmUser":{"name":"longvq","email":"vqlong1604@gmail.com"},"directories":{},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/module-text-template-management_1.0.0_1754218663052_0.1732762485948265"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-03T10:57:42.978Z","1.0.0":"2025-08-03T10:57:43.212Z","modified":"2025-08-03T10:57:43.436Z"},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"description":"Text template management module with template engine, variable system, and localization support","homepage":"https://github.com/your-org/dbs-portal#readme","keywords":["dbs-portal","text-template","template-engine","handlebars","variables","localization","react","typescript"],"repository":{"type":"git","url":"git+https://github.com/devboost-solutions/dbs-portal.git","directory":"packages/modules/text-template-management"},"author":{"name":"DBS Portal Team"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"license":"MIT","readme":"# Text Template Management Module\n\nA comprehensive template management system for DBS Portal with Handlebars-based template engine, variable management, live preview, version control, and localization support.\n\n## Features\n\n### 🎨 Template Engine\n- **Handlebars Integration**: Powerful template engine with custom helpers\n- **Variable System**: Type-safe variable definitions with validation\n- **Live Preview**: Real-time template rendering with sample data\n- **Syntax Validation**: Comprehensive template validation and error reporting\n\n### 📝 Rich Editor Experience\n- **Monaco Editor**: VS Code-like editing experience with syntax highlighting\n- **Auto-completion**: Intelligent variable and helper suggestions\n- **Error Detection**: Real-time syntax and logic error detection\n- **Helper Integration**: Easy insertion of template helpers and functions\n\n### 🔧 Variable Management\n- **Type System**: Support for string, number, boolean, date, email, URL, phone, currency, array, and object types\n- **Validation Rules**: Pattern matching, min/max values, length constraints, and option lists\n- **Grouping**: Organize variables into logical groups for better management\n- **Default Values**: Set default and example values for variables\n\n### 🌍 Localization Support\n- **Multi-language**: Template localization for different languages and regions\n- **Locale-specific**: Date, number, and currency formatting per locale\n- **Translation Management**: Track translation progress and completeness\n\n### 📊 Version Control\n- **Template Versions**: Maintain multiple versions of templates\n- **Change Tracking**: Detailed changelog and version history\n- **Active Version**: Control which version is currently active\n- **Rollback Support**: Easy rollback to previous versions\n\n### 📈 Analytics & Statistics\n- **Usage Tracking**: Monitor template usage and performance\n- **Render Analytics**: Track rendering times and error rates\n- **Popular Variables**: Identify most-used variables and patterns\n- **Global Analytics**: System-wide template statistics\n\n## Installation\n\n```bash\nnpm install @dbs-portal/module-text-template-management\n```\n\n## Dependencies\n\n### Required\n- `@tanstack/react-query` - Data fetching and caching\n- `antd` - UI components\n- `react` - React framework\n\n### Optional (Enhanced Features)\n- `handlebars` - Template engine (fallback available)\n- `monaco-editor` - Rich code editor (textarea fallback)\n- `react-monaco-editor` - React wrapper for Monaco\n- `marked` - Markdown support\n- `dompurify` - HTML sanitization\n\n## Quick Start\n\n### 1. Basic Template Management\n\n```tsx\nimport { TemplateList, TemplateEditor } from '@dbs-portal/module-text-template-management'\n\nfunction TemplateManagementPage() {\n  const [selectedTemplate, setSelectedTemplate] = useState(null)\n\n  return (\n    <div>\n      <TemplateList \n        onTemplateSelect={setSelectedTemplate}\n        showActions\n        selectable\n      />\n      \n      {selectedTemplate && (\n        <TemplateEditor\n          template={selectedTemplate}\n          showPreview\n          onChange={(content) => console.log('Content changed:', content)}\n        />\n      )}\n    </div>\n  )\n}\n```\n\n### 2. Template Editor with Preview\n\n```tsx\nimport { TemplateEditor, TemplatePreview } from '@dbs-portal/module-text-template-management'\n\nfunction TemplateEditorPage() {\n  const [content, setContent] = useState('Hello {{name}}!')\n  const [variables, setVariables] = useState([\n    {\n      name: 'name',\n      displayName: 'Name',\n      type: 'string',\n      required: true,\n      defaultValue: 'World'\n    }\n  ])\n\n  return (\n    <Row gutter={16}>\n      <Col span={12}>\n        <TemplateEditor\n          content={content}\n          variables={variables}\n          onChange={setContent}\n          onVariableChange={setVariables}\n        />\n      </Col>\n      <Col span={12}>\n        <TemplatePreview\n          content={content}\n          variables={{ name: 'John Doe' }}\n        />\n      </Col>\n    </Row>\n  )\n}\n```\n\n### 3. Variable Management\n\n```tsx\nimport { TemplateVariableManager } from '@dbs-portal/module-text-template-management'\n\nfunction VariableManagerPage() {\n  const [variables, setVariables] = useState([])\n  const [groups, setGroups] = useState([])\n\n  return (\n    <TemplateVariableManager\n      variables={variables}\n      groups={groups}\n      onChange={setVariables}\n      onGroupChange={setGroups}\n    />\n  )\n}\n```\n\n### 4. Template Rendering\n\n```tsx\nimport { useRenderTemplate } from '@dbs-portal/module-text-template-management'\n\nfunction RenderExample() {\n  const renderMutation = useRenderTemplate()\n\n  const handleRender = async () => {\n    try {\n      const result = await renderMutation.mutateAsync({\n        templateId: 'template-123',\n        variables: {\n          name: 'John Doe',\n          email: 'john@example.com',\n          date: new Date()\n        },\n        options: {\n          locale: 'en-US',\n          escapeHtml: true\n        }\n      })\n      \n      console.log('Rendered content:', result.content)\n    } catch (error) {\n      console.error('Rendering failed:', error)\n    }\n  }\n\n  return (\n    <Button onClick={handleRender} loading={renderMutation.isPending}>\n      Render Template\n    </Button>\n  )\n}\n```\n\n## API Reference\n\n### Components\n\n#### TemplateList\nComprehensive template management interface with filtering and bulk operations.\n\n```tsx\ninterface TemplateListProps {\n  filters?: Partial<TemplateSearchFilters>\n  onTemplateSelect?: (template: Template) => void\n  onTemplateEdit?: (template: Template) => void\n  onTemplateDelete?: (template: Template) => void\n  onTemplateClone?: (template: Template) => void\n  showActions?: boolean\n  selectable?: boolean\n  className?: string\n}\n```\n\n#### TemplateEditor\nRich template editor with Monaco integration and live validation.\n\n```tsx\ninterface TemplateEditorProps {\n  template?: Template\n  content?: string\n  variables?: TemplateVariable[]\n  engine?: TemplateEngine\n  onChange?: (content: string) => void\n  onVariableChange?: (variables: TemplateVariable[]) => void\n  readOnly?: boolean\n  showPreview?: boolean\n  className?: string\n}\n```\n\n#### TemplatePreview\nLive template preview with variable editing capabilities.\n\n```tsx\ninterface TemplatePreviewProps {\n  template?: Template\n  content?: string\n  variables?: Record<string, any>\n  engine?: TemplateEngine\n  locale?: string\n  onVariableChange?: (variables: Record<string, any>) => void\n  className?: string\n}\n```\n\n#### TemplateVariableManager\nAdvanced variable and group management interface.\n\n```tsx\ninterface TemplateVariableManagerProps {\n  variables: TemplateVariable[]\n  groups?: TemplateVariableGroup[]\n  onChange?: (variables: TemplateVariable[]) => void\n  onGroupChange?: (groups: TemplateVariableGroup[]) => void\n  readOnly?: boolean\n  className?: string\n}\n```\n\n### Hooks\n\n#### Template CRUD Operations\n- `useTemplates(page, pageSize, filters)` - Fetch paginated templates\n- `useTemplate(id)` - Fetch single template\n- `useCreateTemplate()` - Create new template\n- `useUpdateTemplate()` - Update existing template\n- `useDeleteTemplate()` - Delete template\n- `useCloneTemplate()` - Clone template\n\n#### Template Operations\n- `useValidateTemplate()` - Validate template syntax\n- `usePreviewTemplate()` - Preview template with sample data\n- `useTestTemplate()` - Test template with real data\n- `useRenderTemplate()` - Render template with variables\n\n#### Version Management\n- `useTemplateVersions(id)` - Get template versions\n- `useCreateTemplateVersion()` - Create new version\n- `useSetActiveTemplateVersion()` - Set active version\n\n#### Localization\n- `useTemplateLocalizations(id)` - Get localizations\n- `useUpdateTemplateLocalization()` - Update localization\n- `useDeleteTemplateLocalization()` - Delete localization\n\n#### Analytics\n- `useTemplateStatistics(id)` - Get template statistics\n- `useTemplateAnalytics(id, period)` - Get usage analytics\n- `useGlobalTemplateAnalytics()` - Get global analytics\n\n### Template Engine\n\n#### Built-in Helpers\n\n```handlebars\n<!-- Date formatting -->\n{{formatDate createdAt \"short\"}}\n{{formatDate updatedAt \"time\"}}\n\n<!-- Number formatting -->\n{{formatNumber price}}\n{{formatCurrency amount \"USD\"}}\n\n<!-- String manipulation -->\n{{uppercase name}}\n{{lowercase email}}\n{{capitalize title}}\n{{truncate description 100}}\n\n<!-- Conditionals -->\n{{#if (eq status \"active\")}}Active{{/if}}\n{{#unless (gt count 0)}}No items{{/unless}}\n\n<!-- Arrays -->\n{{#each items}}\n  {{@index}}: {{this.name}}\n{{/each}}\n{{join tags \", \"}}\n\n<!-- Markdown -->\n{{markdown content}}\n\n<!-- Default values -->\n{{default name \"Anonymous\"}}\n```\n\n#### Variable Types\n\n```tsx\ntype TemplateVariableType = \n  | 'string'    // Text input\n  | 'number'    // Numeric input\n  | 'boolean'   // Switch/checkbox\n  | 'date'      // Date picker\n  | 'email'     // Email input with validation\n  | 'url'       // URL input with validation\n  | 'phone'     // Phone number input\n  | 'currency'  // Currency input with formatting\n  | 'array'     // Multi-select/tags\n  | 'object'    // JSON object input\n```\n\n## Advanced Usage\n\n### Custom Template Engine\n\n```tsx\nimport { createTemplateEngine } from '@dbs-portal/module-text-template-management'\n\nconst customEngine = createTemplateEngine({\n  allowUnsafeContent: false,\n  enableMarkdown: true,\n  maxRenderTime: 10000,\n  currencyCode: 'EUR'\n})\n\nconst result = await customEngine.render(template, {\n  variables: data,\n  locale: 'de-DE',\n  escapeHtml: true\n})\n```\n\n### Template Validation\n\n```tsx\nimport { templateEngine } from '@dbs-portal/module-text-template-management'\n\nconst validation = templateEngine.validate(content, variables)\n\nif (!validation.isValid) {\n  console.log('Errors:', validation.errors)\n  console.log('Missing variables:', validation.missingVariables)\n  console.log('Unused variables:', validation.unusedVariables)\n}\n```\n\n### Bulk Operations\n\n```tsx\nimport { useBulkUpdateTemplates, useBulkDeleteTemplates } from '@dbs-portal/module-text-template-management'\n\nconst bulkUpdate = useBulkUpdateTemplates()\nconst bulkDelete = useBulkDeleteTemplates()\n\n// Update multiple templates\nawait bulkUpdate.mutateAsync({\n  templateIds: ['id1', 'id2', 'id3'],\n  updates: { status: 'active', category: 'email' }\n})\n\n// Delete multiple templates\nawait bulkDelete.mutateAsync(['id1', 'id2', 'id3'])\n```\n### More example: [Examples](./examples/usage.md)\n\n\n## Configuration\n\n### Environment Variables\n```env\n# Template engine settings\nVITE_TEMPLATE_MAX_RENDER_TIME=5000\nVITE_TEMPLATE_MAX_CONTENT_LENGTH=1000000\nVITE_TEMPLATE_ALLOW_UNSAFE_CONTENT=false\n\n# Editor settings\nVITE_TEMPLATE_EDITOR_THEME=vs-light\nVITE_TEMPLATE_ENABLE_MONACO=true\nVITE_TEMPLATE_ENABLE_MARKDOWN=true\n```\n\n## Development\n\n### Building\n```bash\nnpm run build\n```\n\n### Testing\n```bash\nnpm test\n```\n\n### Type Checking\n```bash\nnpm run type-check\n```\n\n## Contributing\n\n1. Follow established patterns for components, hooks, and services\n2. Ensure all new features have TypeScript types\n3. Add comprehensive validation for template operations\n4. Update documentation for API changes\n5. Test with various template scenarios\n\n## License\n\nMIT License - see LICENSE file for details.\n","readmeFilename":"README.md","_rev":"1-66f979faabed85a92e24162a8526c2aa"}