@stamprally/admin-ui 0.7.0 → 0.9.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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {\n type AdminRallyConfig,\n CURRENT_RALLY_CONFIG_VERSION,\n DEFAULT_SHEET_THEME,\n type LocaleDictionary,\n type LocalizedText,\n migrateRallyConfig,\n type RallyConfig,\n type RewardItem,\n type RewardUnlockCondition,\n resolveLocalizedText,\n type SheetTheme,\n type SpotItem,\n type StampCondition,\n type SupportedLocale,\n stripSensitiveConfig,\n THEME_PRESETS,\n toPublicRallyConfig,\n validateAdminRallyConfig,\n validateRallyConfig,\n} from \"@stamprally/core\";\nimport type { ChangeEvent } from \"react\";\nimport { useState } from \"react\";\n\nexport type { LocaleDictionary } from \"@stamprally/core\";\n\nexport interface AdminRallyEditorProps<\n TLocale extends string = string,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly config: AdminRallyConfig<TLocale, TMeta>;\n readonly locale?: TLocale;\n readonly onChange: (config: AdminRallyConfig<TLocale, TMeta>) => void;\n}\n\n/** Universal-model editor surface; the existing field editors remain available for legacy demos. */\nexport function AdminRallyEditor<\n TLocale extends string = string,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n>({ config, onChange }: AdminRallyEditorProps<TLocale, TMeta>) {\n const [value, setValue] = useState(() => JSON.stringify(config, null, 2));\n const [error, setError] = useState<string | null>(null);\n const apply = (): void => {\n try {\n const candidate: unknown = JSON.parse(value);\n const result = validateAdminRallyConfig(candidate);\n if (!result.valid) {\n setError(result.errors.map((item) => `${item.path}: ${item.message}`).join(\" \"));\n return;\n }\n onChange(candidate as AdminRallyConfig<TLocale, TMeta>);\n setError(null);\n } catch {\n setError(\"Invalid rally JSON.\");\n }\n };\n return (\n <section aria-label=\"Universal rally editor\" className=\"stamprally-admin-card\">\n <textarea value={value} onChange={(event) => setValue(event.target.value)} />\n <button type=\"button\" onClick={apply}>\n Apply configuration\n </button>\n <button\n type=\"button\"\n onClick={() =>\n navigator.clipboard?.writeText(JSON.stringify(toPublicRallyConfig(config), null, 2))\n }\n >\n Copy public configuration\n </button>\n {error !== null && <p role=\"alert\">{error}</p>}\n </section>\n );\n}\n\nconst localePair = (value: LocalizedText | undefined): Record<string, string> => {\n if (typeof value === \"string\") return { ja: value, en: \"\" };\n const result: Record<string, string> = {};\n for (const [key, text] of Object.entries(value ?? {})) {\n if (text !== undefined) result[key] = text;\n }\n return result;\n};\n\nfunction updateText(value: LocalizedText | undefined, locale: string, next: string): LocalizedText {\n const current = localePair(value);\n return { ...current, [locale]: next };\n}\n\nexport interface GeneralSettingsFormProps<TLocale extends string = SupportedLocale> {\n readonly config: RallyConfig<TLocale>;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n readonly onChange: (config: RallyConfig<TLocale>) => void;\n}\nexport function GeneralSettingsForm<TLocale extends string = SupportedLocale>({\n config,\n locale = \"ja\" as TLocale,\n onChange,\n}: GeneralSettingsFormProps<TLocale>) {\n const pair = localePair(config.title);\n return (\n <fieldset className=\"stamprally-admin-card\">\n <legend>General settings</legend>\n <label>\n ID <input value={config.id} readOnly />\n </label>\n <label>\n Title ({locale}){\" \"}\n <input\n value={pair[locale]}\n required\n onChange={(event) =>\n onChange({ ...config, title: updateText(config.title, locale, event.target.value) })\n }\n />\n </label>\n <label>\n Start date{\" \"}\n <input\n type=\"datetime-local\"\n value={config.startDate?.slice(0, 16) ?? \"\"}\n onChange={(event) => {\n if (event.target.value === \"\") {\n const { startDate: _startDate, ...rest } = config;\n onChange(rest);\n } else onChange({ ...config, startDate: new Date(event.target.value).toISOString() });\n }}\n />\n </label>\n <label>\n End date{\" \"}\n <input\n type=\"datetime-local\"\n value={config.endDate?.slice(0, 16) ?? \"\"}\n onChange={(event) => {\n if (event.target.value === \"\") {\n const { endDate: _endDate, ...rest } = config;\n onChange(rest);\n } else onChange({ ...config, endDate: new Date(event.target.value).toISOString() });\n }}\n />\n </label>\n <label>\n <input\n type=\"checkbox\"\n checked={config.isSequential === true}\n onChange={(event) => onChange({ ...config, isSequential: event.target.checked })}\n />{\" \"}\n Sequential check-in\n </label>\n </fieldset>\n );\n}\n\nexport interface ConditionEditorProps {\n readonly condition: StampCondition;\n readonly onChange: (condition: StampCondition) => void;\n readonly locale?: SupportedLocale | (string & {});\n}\nexport function ConditionEditor({ condition, onChange }: ConditionEditorProps) {\n const type = condition.type;\n return (\n <fieldset className=\"stamprally-admin-card\">\n <legend>Check-in condition</legend>\n <label>\n Type{\" \"}\n <select\n value={type}\n onChange={(event) => {\n const next = event.target.value;\n if (next === \"token\") onChange({ type: \"token\", token: \"\" });\n else if (next === \"geo\")\n onChange({ type: \"geo\", latitude: 0, longitude: 0, radiusMeters: 100 });\n else onChange({ type: \"instant\" });\n }}\n >\n <option value=\"instant\">Instant</option>\n <option value=\"token\">QR / passcode</option>\n <option value=\"geo\">GPS</option>\n </select>\n </label>\n {condition.type === \"token\" && (\n <label>\n Token{\" \"}\n <input\n value={condition.token}\n onChange={(event) => onChange({ ...condition, token: event.target.value })}\n />\n </label>\n )}\n {condition.type === \"geo\" && (\n <>\n <label>\n Latitude{\" \"}\n <input\n type=\"number\"\n min={-90}\n max={90}\n value={condition.latitude}\n onChange={(event) => onChange({ ...condition, latitude: Number(event.target.value) })}\n />\n </label>\n <label>\n Longitude{\" \"}\n <input\n type=\"number\"\n min={-180}\n max={180}\n value={condition.longitude}\n onChange={(event) =>\n onChange({ ...condition, longitude: Number(event.target.value) })\n }\n />\n </label>\n <label>\n Radius (m){\" \"}\n <input\n type=\"number\"\n min={1}\n value={condition.radiusMeters}\n onChange={(event) =>\n onChange({ ...condition, radiusMeters: Number(event.target.value) })\n }\n />\n </label>\n </>\n )}\n </fieldset>\n );\n}\n\nexport interface SpotItemFormProps<TLocale extends string = SupportedLocale> {\n readonly spot: SpotItem<TLocale>;\n readonly index?: number;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n readonly onChange: (spot: SpotItem<TLocale>) => void;\n readonly onDelete?: () => void;\n}\nexport function SpotItemForm<TLocale extends string = SupportedLocale>({\n spot,\n index = 0,\n locale = \"ja\" as TLocale,\n onChange,\n onDelete,\n}: SpotItemFormProps<TLocale>) {\n const pair = localePair(spot.name);\n const setField = (\n field:\n | \"iconUrl\"\n | \"imageUrl\"\n | \"externalUrl\"\n | \"guideId\"\n | \"groupId\"\n | \"deckId\"\n | \"redirectUrlAfterClaim\",\n event: ChangeEvent<HTMLInputElement>,\n ) => {\n if (event.target.value === \"\") {\n const { [field]: _removed, ...rest } = spot;\n onChange(rest);\n } else onChange({ ...spot, [field]: event.target.value });\n };\n return (\n <article className=\"stamprally-admin-card\">\n <header>\n <strong>Spot {index + 1}</strong>\n {onDelete !== undefined && (\n <button type=\"button\" onClick={onDelete}>\n Delete\n </button>\n )}\n </header>\n <label>\n ID{\" \"}\n <input\n value={spot.id}\n onChange={(event) => onChange({ ...spot, id: event.target.value })}\n />\n </label>\n <label>\n Name ({locale}){\" \"}\n <input\n value={pair[locale]}\n required\n onChange={(event) =>\n onChange({ ...spot, name: updateText(spot.name, locale, event.target.value) })\n }\n />\n </label>\n <label>\n Description ({locale}){\" \"}\n <textarea\n value={resolveLocalizedText(spot.description, locale)}\n onChange={(event) =>\n onChange({\n ...spot,\n description: updateText(spot.description, locale, event.target.value),\n })\n }\n />\n </label>\n <label>\n Hint ({locale}){\" \"}\n <textarea\n value={resolveLocalizedText(spot.hint, locale)}\n onChange={(event) =>\n onChange({ ...spot, hint: updateText(spot.hint, locale, event.target.value) })\n }\n />\n </label>\n <label>\n Order index{\" \"}\n <input\n type=\"number\"\n value={spot.orderIndex ?? spot.order ?? index + 1}\n onChange={(event) => onChange({ ...spot, orderIndex: Number(event.target.value) })}\n />\n </label>\n <label>\n Icon URL{\" \"}\n <input value={spot.iconUrl ?? \"\"} onChange={(event) => setField(\"iconUrl\", event)} />\n </label>\n <label>\n Image URL{\" \"}\n <input value={spot.imageUrl ?? \"\"} onChange={(event) => setField(\"imageUrl\", event)} />\n </label>\n <label>\n External URL{\" \"}\n <input\n value={spot.externalUrl ?? \"\"}\n onChange={(event) => setField(\"externalUrl\", event)}\n />\n </label>\n <label>\n Redirect URL after claim{\" \"}\n <input\n value={spot.redirectUrlAfterClaim ?? \"\"}\n onChange={(event) => setField(\"redirectUrlAfterClaim\", event)}\n />\n </label>\n <label>\n Prerequisites (comma-separated stamp IDs){\" \"}\n <input\n value={(spot.requiresStampIds ?? spot.dependsOn ?? []).join(\", \")}\n onChange={(event) => {\n const ids = event.target.value\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean);\n if (ids.length === 0) {\n const { requiresStampIds: _requiresStampIds, ...rest } = spot;\n onChange(rest);\n } else onChange({ ...spot, requiresStampIds: ids });\n }}\n />\n </label>\n <label>\n Metadata (JSON){\" \"}\n <textarea\n value={JSON.stringify(spot.metadata ?? {}, null, 2)}\n onChange={(event) => {\n try {\n const parsed: unknown = JSON.parse(event.target.value);\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n onChange({ ...spot, metadata: parsed as Record<string, unknown> });\n }\n } catch {\n // Keep the last valid metadata while the user edits JSON.\n }\n }}\n />\n </label>\n <ConditionEditor\n condition={spot.condition}\n onChange={(condition) => onChange({ ...spot, condition })}\n locale={locale}\n />\n </article>\n );\n}\n\nexport interface SpotListEditorProps<TLocale extends string = SupportedLocale> {\n readonly spots: ReadonlyArray<SpotItem<TLocale>>;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n readonly onChange: (spots: ReadonlyArray<SpotItem<TLocale>>) => void;\n}\nexport function SpotListEditor<TLocale extends string = SupportedLocale>({\n spots,\n locale = \"ja\" as TLocale,\n onChange,\n}: SpotListEditorProps<TLocale>) {\n return (\n <section aria-label=\"Spots\">\n <h2>Spots</h2>\n {spots.map((spot, index) => (\n <SpotItemForm\n key={spot.id}\n spot={spot}\n index={index}\n locale={locale}\n onChange={(next) =>\n onChange(spots.map((item, itemIndex) => (itemIndex === index ? next : item)))\n }\n onDelete={() => onChange(spots.filter((_, itemIndex) => itemIndex !== index))}\n />\n ))}\n </section>\n );\n}\n\nexport interface RewardListEditorProps<TLocale extends string = SupportedLocale> {\n readonly rewards: ReadonlyArray<RewardItem<TLocale>>;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n readonly onChange: (rewards: ReadonlyArray<RewardItem<TLocale>>) => void;\n}\nexport function RewardListEditor<TLocale extends string = SupportedLocale>({\n rewards,\n locale = \"ja\" as TLocale,\n onChange,\n}: RewardListEditorProps<TLocale>) {\n return (\n <section aria-label=\"Rewards\">\n <h2>Rewards</h2>\n {rewards.map((reward, index) => (\n <article className=\"stamprally-admin-card\" key={reward.id}>\n <label>\n ID{\" \"}\n <input\n value={reward.id}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index ? { ...item, id: event.target.value } : item,\n ),\n )\n }\n />\n </label>\n <label>\n Title ({locale}){\" \"}\n <input\n value={resolveLocalizedText(reward.title, locale)}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index\n ? { ...item, title: updateText(item.title, locale, event.target.value) }\n : item,\n ),\n )\n }\n />\n </label>\n <label>\n Description ({locale}){\" \"}\n <textarea\n value={resolveLocalizedText(reward.description, locale)}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index\n ? {\n ...item,\n description: updateText(item.description, locale, event.target.value),\n }\n : item,\n ),\n )\n }\n />\n </label>\n <label>\n Required stamps{\" \"}\n <input\n type=\"number\"\n min={0}\n value={reward.requiredStampCount}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index\n ? { ...item, requiredStampCount: Number(event.target.value) }\n : item,\n ),\n )\n }\n />\n </label>\n <label>\n Valid until{\" \"}\n <input\n type=\"datetime-local\"\n value={reward.validUntil?.slice(0, 16) ?? \"\"}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) => {\n if (itemIndex !== index) return item;\n if (event.target.value === \"\") {\n const { validUntil: _validUntil, ...rest } = item;\n return rest;\n }\n return { ...item, validUntil: new Date(event.target.value).toISOString() };\n }),\n )\n }\n />\n </label>\n <label>\n Stock limit{\" \"}\n <input\n type=\"number\"\n min={1}\n value={reward.stockLimit ?? reward.maxStock ?? \"\"}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) => {\n if (itemIndex !== index) return item;\n if (event.target.value === \"\") {\n const { stockLimit: _stockLimit, ...rest } = item;\n return rest;\n }\n return { ...item, stockLimit: Number(event.target.value) };\n }),\n )\n }\n />\n </label>\n <label>\n User claim limit{\" \"}\n <input\n type=\"number\"\n min={1}\n value={reward.userClaimLimit ?? reward.limitPerUser ?? \"\"}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) => {\n if (itemIndex !== index) return item;\n if (event.target.value === \"\") {\n const { userClaimLimit: _userClaimLimit, ...rest } = item;\n return rest;\n }\n return { ...item, userClaimLimit: Number(event.target.value) };\n }),\n )\n }\n />\n </label>\n <label>\n Redemption method{\" \"}\n <select\n value={reward.redemptionMethod}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index\n ? {\n ...item,\n redemptionMethod: event.target.value as RewardItem[\"redemptionMethod\"],\n }\n : item,\n ),\n )\n }\n >\n <option value=\"manual_slide\">manual_slide</option>\n <option value=\"staff_passcode\">staff_passcode</option>\n <option value=\"view_only\">view_only</option>\n <option value=\"server_claim\">server_claim</option>\n </select>\n </label>\n {reward.redemptionMethod === \"staff_passcode\" && (\n <label>\n Staff passcode{\" \"}\n <input\n type=\"password\"\n value={reward.staffPasscode ?? \"\"}\n onChange={(event) =>\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index ? { ...item, staffPasscode: event.target.value } : item,\n ),\n )\n }\n />\n </label>\n )}\n <label>\n Conditions (JSON){\" \"}\n <textarea\n value={JSON.stringify(reward.conditions ?? [], null, 2)}\n onChange={(event) => {\n try {\n const parsed: unknown = JSON.parse(event.target.value);\n if (Array.isArray(parsed)) {\n onChange(\n rewards.map((item, itemIndex) =>\n itemIndex === index\n ? { ...item, conditions: parsed as ReadonlyArray<RewardUnlockCondition> }\n : item,\n ),\n );\n }\n } catch {\n // Keep the last valid condition set while the user edits JSON.\n }\n }}\n />\n </label>\n </article>\n ))}\n </section>\n );\n}\n\nexport interface ThemePresetSelectorProps {\n readonly value?: SheetTheme;\n readonly locale?: SupportedLocale | (string & {});\n readonly onChange: (theme: SheetTheme) => void;\n}\nexport function ThemePresetSelector({ value, locale = \"ja\", onChange }: ThemePresetSelectorProps) {\n const selected =\n THEME_PRESETS.find((preset) => JSON.stringify(preset.theme) === JSON.stringify(value))?.id ??\n \"custom\";\n return (\n <label>\n Theme preset{\" \"}\n <select\n value={selected}\n onChange={(event) => {\n const preset = THEME_PRESETS.find((item) => item.id === event.target.value);\n if (preset !== undefined) onChange(preset.theme);\n }}\n >\n <option value=\"custom\">Custom</option>\n {THEME_PRESETS.map((preset) => (\n <option key={preset.id} value={preset.id}>\n {resolveLocalizedText(preset.name, locale)}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\nexport interface ThemeEditorProps {\n readonly theme?: SheetTheme;\n readonly locale?: SupportedLocale | (string & {});\n readonly onChange: (theme: SheetTheme) => void;\n}\nexport function ThemeEditor({\n theme = DEFAULT_SHEET_THEME,\n locale = \"ja\",\n onChange,\n}: ThemeEditorProps) {\n const update = (field: keyof SheetTheme, value: string | number) =>\n onChange({ ...theme, [field]: value });\n return (\n <fieldset className=\"stamprally-admin-card\">\n <legend>Theme</legend>\n <ThemePresetSelector value={theme} locale={locale} onChange={onChange} />\n <label>\n Primary color{\" \"}\n <input\n type=\"color\"\n value={theme.primaryColor}\n onChange={(event) => update(\"primaryColor\", event.target.value)}\n />\n </label>\n <label>\n Grid columns{\" \"}\n <input\n type=\"number\"\n min={1}\n max={6}\n value={theme.gridColumns}\n onChange={(event) => update(\"gridColumns\", Number(event.target.value))}\n />\n </label>\n </fieldset>\n );\n}\n\nexport interface QrExportModalProps<TLocale extends string = SupportedLocale> {\n readonly open: boolean;\n readonly config: RallyConfig<TLocale>;\n readonly locale?: TLocale;\n readonly onClose: () => void;\n}\nexport function QrExportModal<TLocale extends string = SupportedLocale>({\n open,\n config,\n locale = \"ja\" as TLocale,\n onClose,\n}: QrExportModalProps<TLocale>) {\n if (!open) return null;\n return (\n <div role=\"dialog\" aria-modal=\"true\" className=\"stamprally-qr-modal\">\n <div className=\"stamprally-qr-modal__toolbar\">\n <h2>QR print kit</h2>\n <button type=\"button\" onClick={() => window.print()}>\n Print\n </button>\n <button type=\"button\" onClick={onClose}>\n Close\n </button>\n </div>\n <div className=\"stamprally-qr-modal__grid\">\n {config.stamps.map((spot) => (\n <article key={spot.id}>\n <h3>{resolveLocalizedText(spot.name, locale)}</h3>\n <pre>\n {JSON.stringify({\n version: CURRENT_RALLY_CONFIG_VERSION,\n rallyId: config.id,\n stampId: spot.id,\n })}\n </pre>\n </article>\n ))}\n </div>\n </div>\n );\n}\n\nexport interface JsonConfigIOProps<TLocale extends string = SupportedLocale> {\n readonly config: RallyConfig<TLocale>;\n readonly onImport: (config: RallyConfig<TLocale>) => void;\n readonly locale?: TLocale;\n}\nexport function JsonConfigIO<TLocale extends string = SupportedLocale>({\n config,\n onImport,\n}: JsonConfigIOProps<TLocale>) {\n const [value, setValue] = useState(() => JSON.stringify(stripSensitiveConfig(config), null, 2));\n const [error, setError] = useState<string | null>(null);\n const importConfig = (): void => {\n try {\n const migrated = migrateRallyConfig<TLocale>(JSON.parse(value) as unknown);\n const validation = validateRallyConfig(migrated);\n if (!validation.valid) {\n setError(validation.errors.map((item) => `${item.path}: ${item.message}`).join(\" \"));\n return;\n }\n onImport(migrated);\n setError(null);\n } catch {\n setError(\"Invalid rally JSON.\");\n }\n };\n return (\n <section className=\"stamprally-admin-card\" aria-label=\"JSON configuration\">\n <textarea value={value} onChange={(event) => setValue(event.target.value)} />\n <button type=\"button\" onClick={importConfig}>\n Import and migrate\n </button>\n <button\n type=\"button\"\n onClick={() =>\n navigator.clipboard?.writeText(JSON.stringify(stripSensitiveConfig(config), null, 2))\n }\n >\n Copy public JSON\n </button>\n {error !== null && <p role=\"alert\">{error}</p>}\n </section>\n );\n}\n\nexport interface RallyEditorProps<TLocale extends string = SupportedLocale> {\n readonly config: RallyConfig<TLocale>;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n readonly onChange: (config: RallyConfig<TLocale>) => void;\n}\nexport function RallyEditor<TLocale extends string = SupportedLocale>({\n config,\n locale = \"ja\" as TLocale,\n onChange,\n}: RallyEditorProps<TLocale>) {\n const [showQr, setShowQr] = useState(false);\n return (\n <main className=\"stamprally-admin\">\n <header>\n <h1>{resolveLocalizedText(config.title, locale) || config.id}</h1>\n <button type=\"button\" onClick={() => setShowQr(true)}>\n QR export\n </button>\n </header>\n <GeneralSettingsForm config={config} locale={locale} onChange={onChange} />\n {config.theme === undefined ? (\n <ThemeEditor locale={locale} onChange={(theme) => onChange({ ...config, theme })} />\n ) : (\n <ThemeEditor\n theme={config.theme}\n locale={locale}\n onChange={(theme) => onChange({ ...config, theme })}\n />\n )}\n <SpotListEditor\n spots={config.stamps}\n locale={locale}\n onChange={(stamps) => onChange({ ...config, stamps })}\n />\n <RewardListEditor\n rewards={config.rewards ?? []}\n locale={locale}\n onChange={(rewards) => onChange({ ...config, rewards })}\n />\n <JsonConfigIO config={config} onImport={onChange} />\n <QrExportModal\n open={showQr}\n config={config}\n locale={locale}\n onClose={() => setShowQr(false)}\n />\n </main>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n AdminRallyConfig,\n CheckInCondition,\n LocaleDictionary,\n Reward,\n SpotItem,\n SupportedLocale,\n} from \"@stamprally/core\";\nimport { resolveLocalizedText } from \"@stamprally/core\";\nimport { type ChangeEvent, type ReactElement, useState } from \"react\";\n\nexport interface AdminRallyEditorProps<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly config: AdminRallyConfig<TLocale, TMeta>;\n readonly onChange: (config: AdminRallyConfig<TLocale, TMeta>) => void;\n readonly locale?: TLocale;\n readonly dictionary?: LocaleDictionary<TLocale>;\n}\nconst condition = (): CheckInCondition => ({ type: \"passcode\", code: \"\" });\nconst newSpot = <TLocale extends string, TMeta extends Record<string, unknown>>(\n index: number,\n): SpotItem<TLocale, TMeta> => ({\n id: `spot-${index + 1}`,\n orderIndex: index,\n name: `Spot ${index + 1}`,\n conditions: [condition()],\n});\nconst newReward = (index: number): Reward => ({\n id: `reward-${index + 1}`,\n title: `Reward ${index + 1}`,\n type: \"digital\",\n redemptionMethod: \"server_claim\",\n requiredStampCount: index + 1,\n});\nexport function AdminRallyEditor<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n>({\n config,\n onChange,\n locale = \"en\" as TLocale,\n}: AdminRallyEditorProps<TLocale, TMeta>): ReactElement {\n const update = (next: Partial<AdminRallyConfig<TLocale, TMeta>>): void =>\n onChange({ ...config, ...next });\n return (\n <section aria-label=\"Rally editor\">\n <h1>{resolveLocalizedText(config.title, locale)}</h1>\n <label>\n Title\n <input\n value={resolveLocalizedText(config.title, locale)}\n onChange={(event) => update({ title: event.target.value })}\n />\n </label>\n <button\n type=\"button\"\n onClick={() =>\n update({ spots: [...config.spots, newSpot<TLocale, TMeta>(config.spots.length)] })\n }\n >\n Add spot\n </button>\n <button\n type=\"button\"\n onClick={() => update({ rewards: [...config.rewards, newReward(config.rewards.length)] })}\n >\n Add reward\n </button>\n <ul>\n {config.spots.map((spot) => (\n <li key={spot.id}>{resolveLocalizedText(spot.name, locale)}</li>\n ))}\n </ul>\n </section>\n );\n}\nexport const RallyEditor = AdminRallyEditor;\nexport interface SpotItemFormProps<TLocale extends string = SupportedLocale> {\n readonly spot: SpotItem<TLocale>;\n readonly onChange: (spot: SpotItem<TLocale>) => void;\n}\nexport function SpotItemForm<TLocale extends string = SupportedLocale>({\n spot,\n onChange,\n}: SpotItemFormProps<TLocale>): ReactElement {\n return (\n <label>\n Spot name\n <input\n value={resolveLocalizedText(spot.name, \"en\")}\n onChange={(event) => onChange({ ...spot, name: event.target.value })}\n />\n </label>\n );\n}\nexport interface GeneralSettingsFormProps<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly config: AdminRallyConfig<TLocale, TMeta>;\n readonly onChange: (config: AdminRallyConfig<TLocale, TMeta>) => void;\n}\nexport function GeneralSettingsForm<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n>({ config, onChange }: GeneralSettingsFormProps<TLocale, TMeta>): ReactElement {\n return (\n <label>\n Rally title\n <input\n value={resolveLocalizedText(config.title, \"en\")}\n onChange={(event) => onChange({ ...config, title: event.target.value })}\n />\n </label>\n );\n}\nexport interface JsonConfigIOProps<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly config: AdminRallyConfig<TLocale, TMeta>;\n readonly onImport: (config: AdminRallyConfig<TLocale, TMeta>) => void;\n}\nexport function JsonConfigIO<\n TLocale extends string = SupportedLocale,\n TMeta extends Record<string, unknown> = Record<string, unknown>,\n>({ config, onImport }: JsonConfigIOProps<TLocale, TMeta>): ReactElement {\n const [value, setValue] = useState(() => JSON.stringify(config, null, 2));\n const parse = (event: ChangeEvent<HTMLTextAreaElement>): void => {\n setValue(event.target.value);\n };\n return (\n <div>\n <textarea value={value} onChange={parse} />\n <button\n type=\"button\"\n onClick={() => {\n try {\n onImport(JSON.parse(value) as AdminRallyConfig<TLocale, TMeta>);\n } catch {\n /* invalid JSON remains local */\n }\n }}\n >\n Import\n </button>\n </div>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamprally/admin-ui",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Accessible authoring components for stamp rally administrators.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  "./styles.css": "./dist/index.css"
30
30
  },
31
31
  "dependencies": {
32
- "@stamprally/core": "0.7.0"
32
+ "@stamprally/core": "0.9.0"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "react": "^18.0.0 || ^19.0.0",