feat: Add complete PDPA compliance pages

- Admin dashboard (/admin/consent-logs) with password auth
- Consent API (/api/consent) with SQLite + IP hashing
- Privacy Policy (Thai) - PDPA Section 36 compliant
- Terms & Conditions (Thai) - 9 standard clauses
- .env.example template with Umami placeholder

All pages preserve current design system.
This commit is contained in:
Kunthawat
2026-03-10 21:28:23 +07:00
parent e98b9f2bff
commit b2e427791b
3282 changed files with 302503 additions and 435 deletions

View File

@@ -0,0 +1,17 @@
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var kysely_exports = {};
module.exports = __toCommonJS(kysely_exports);
//# sourceMappingURL=index.cjs.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../src/kysely/index.ts"],"sourcesContent":["import type { ColumnType } from 'kysely';\nimport type { InferInsertModel, InferSelectModel, MapColumnName, Table } from '~/table.ts';\nimport type { Simplify } from '~/utils.ts';\n\nexport type Kyselify<T extends Table> = Simplify<\n\t{\n\t\t[Key in keyof T['_']['columns'] & string as MapColumnName<Key, T['_']['columns'][Key], true>]: ColumnType<\n\t\t\t// select\n\t\t\tInferSelectModel<T, { dbColumnNames: true }>[MapColumnName<Key, T['_']['columns'][Key], true>],\n\t\t\t// insert\n\t\t\tMapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<\n\t\t\t\tT,\n\t\t\t\t{ dbColumnNames: true }\n\t\t\t> ? InferInsertModel<T, { dbColumnNames: true }>[MapColumnName<Key, T['_']['columns'][Key], true>]\n\t\t\t\t: never,\n\t\t\t// update\n\t\t\tMapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<\n\t\t\t\tT,\n\t\t\t\t{ dbColumnNames: true }\n\t\t\t> ? InferInsertModel<T, { dbColumnNames: true }>[MapColumnName<Key, T['_']['columns'][Key], true>]\n\t\t\t\t: never\n\t\t>;\n\t}\n>;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}

View File

@@ -0,0 +1,16 @@
import type { ColumnType } from 'kysely';
import type { InferInsertModel, InferSelectModel, MapColumnName, Table } from "../table.cjs";
import type { Simplify } from "../utils.cjs";
export type Kyselify<T extends Table> = Simplify<{
[Key in keyof T['_']['columns'] & string as MapColumnName<Key, T['_']['columns'][Key], true>]: ColumnType<InferSelectModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>], MapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<T, {
dbColumnNames: true;
}> ? InferInsertModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>] : never, MapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<T, {
dbColumnNames: true;
}> ? InferInsertModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>] : never>;
}>;

View File

@@ -0,0 +1,16 @@
import type { ColumnType } from 'kysely';
import type { InferInsertModel, InferSelectModel, MapColumnName, Table } from "../table.js";
import type { Simplify } from "../utils.js";
export type Kyselify<T extends Table> = Simplify<{
[Key in keyof T['_']['columns'] & string as MapColumnName<Key, T['_']['columns'][Key], true>]: ColumnType<InferSelectModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>], MapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<T, {
dbColumnNames: true;
}> ? InferInsertModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>] : never, MapColumnName<Key, T['_']['columns'][Key], true> extends keyof InferInsertModel<T, {
dbColumnNames: true;
}> ? InferInsertModel<T, {
dbColumnNames: true;
}>[MapColumnName<Key, T['_']['columns'][Key], true>] : never>;
}>;

View File

@@ -0,0 +1 @@
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}