diff --git a/core/lib/makeswift/components.ts b/core/lib/makeswift/components.ts index 02d435766f..b1ef515dd3 100644 --- a/core/lib/makeswift/components.ts +++ b/core/lib/makeswift/components.ts @@ -14,6 +14,7 @@ import './components/site-header/register'; import './components/site-theme/register'; import './components/slideshow/register'; import './components/sticky-sidebar/register'; +import './components/noibu/register'; import { MakeswiftComponentType } from '@makeswift/runtime'; diff --git a/core/lib/makeswift/components/noibu/client.tsx b/core/lib/makeswift/components/noibu/client.tsx new file mode 100644 index 0000000000..e87a41efa9 --- /dev/null +++ b/core/lib/makeswift/components/noibu/client.tsx @@ -0,0 +1,51 @@ +interface NoibuHelpCodeProps { + style?: string; +} + +interface NoibuRequestHelpCodeButtonProps { + text?: string; + style?: string; +} + +interface NoibuRequestHelpCodeLabelProps { + style?: string; +} + +function parseInlineStyle(style?: string): Record { + const parsed: Record = {}; + + if (style) { + style.split(';').forEach((rule) => { + const [prop, value] = rule.split(':'); + if (prop && value && !prop.trim().includes('-')) { + parsed[prop.trim()] = value.trim(); + } + }); + } + + return parsed; +} + +export function NoibuAutomaticHelpCode({ style }: NoibuHelpCodeProps) { + return ( +
+   +
+ ); +} + +export function NoibuRequestHelpCodeButton({ text, style }: NoibuRequestHelpCodeButtonProps) { + return ( + + ); +} + +export function NoibuRequestHelpCodeLabel({ style }: NoibuRequestHelpCodeLabelProps) { + return ( +
+   +
+ ); +} diff --git a/core/lib/makeswift/components/noibu/register.tsx b/core/lib/makeswift/components/noibu/register.tsx new file mode 100644 index 0000000000..20a92b2b9f --- /dev/null +++ b/core/lib/makeswift/components/noibu/register.tsx @@ -0,0 +1,32 @@ +import { TextInput } from '@makeswift/runtime/controls'; +import { runtime } from '~/lib/makeswift/runtime'; +import { + NoibuAutomaticHelpCode, + NoibuRequestHelpCodeButton, + NoibuRequestHelpCodeLabel, +} from './client'; + +runtime.registerComponent(NoibuAutomaticHelpCode, { + type: 'Noibu - Automatic Help Code', + label: 'Noibu - Automatic Help Code', + props: { + style: TextInput({ label: 'Custom style (inline CSS)', defaultValue: '' }), + }, +}); + +runtime.registerComponent(NoibuRequestHelpCodeButton, { + type: 'Noibu - Request Help Code Button', + label: 'Noibu - Request Help Code Button', + props: { + text: TextInput({ label: 'Button text', defaultValue: 'Request Help Code' }), + style: TextInput({ label: 'Custom style (inline CSS)', defaultValue: '' }), + }, +}); + +runtime.registerComponent(NoibuRequestHelpCodeLabel, { + type: 'Noibu - Request Help Code Label', + label: 'Noibu - Request Help Code Label', + props: { + style: TextInput({ label: 'Custom style (inline CSS)', defaultValue: '' }), + }, +});