@amaster.ai/pi-lark 0.1.6 → 0.1.8
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/README.md +5 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/lark-apps/SKILL.md +59 -14
- package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
- package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
- package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
- package/skills/lark-apps/creative-design/assets/index.html +27 -0
- package/skills/lark-apps/creative-design/creative-design.md +239 -0
- package/skills/lark-apps/creative-design/references/aily.md +39 -0
- package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
- package/skills/lark-apps/creative-design/references/charts.md +165 -0
- package/skills/lark-apps/creative-design/references/claude.md +36 -0
- package/skills/lark-apps/creative-design/references/codex.md +32 -0
- package/skills/lark-apps/creative-design/references/data-report.md +108 -0
- package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
- package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
- package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
- package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
- package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
- package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
- package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
- package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
- package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
- package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
- package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
- package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
- package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
- package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
- package/skills/lark-apps/references/lark-apps-automation.md +80 -2
- package/skills/lark-apps/references/lark-apps-cache.md +61 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -5
- package/skills/lark-apps/references/lark-apps-create.md +6 -4
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
- package/skills/lark-apps/references/lark-apps-file.md +2 -2
- package/skills/lark-apps/references/lark-apps-get.md +1 -1
- package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
- package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
- package/skills/lark-apps/references/lark-apps-init.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +2 -2
- package/skills/lark-apps/references/lark-apps-local-dev.md +80 -11
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
- package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
- package/skills/lark-base/SKILL.md +34 -19
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
- package/skills/lark-base/references/lark-base-dashboard.md +17 -4
- package/skills/lark-base/references/lark-base-data-query-guide.md +8 -0
- package/skills/lark-base/references/lark-base-data-query.md +11 -4
- package/skills/lark-base/references/lark-base-field-create.md +21 -6
- package/skills/lark-base/references/lark-base-field-json.md +9 -6
- package/skills/lark-base/references/lark-base-field-update.md +17 -1
- package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
- package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
- package/skills/lark-base/references/lark-base-form-submit.md +16 -7
- package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
- package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
- package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
- package/skills/lark-base/references/lark-base-role-guide.md +11 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
- package/skills/lark-base/references/role-config.md +31 -5
- package/skills/lark-calendar/SKILL.md +14 -8
- package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
- package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
- package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
- package/skills/lark-contact/SKILL.md +19 -3
- package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
- package/skills/lark-doc/SKILL.md +26 -61
- package/skills/lark-doc/references/genres/business-analysis.md +30 -0
- package/skills/lark-doc/references/genres/data-report.md +32 -0
- package/skills/lark-doc/references/genres/email.md +38 -0
- package/skills/lark-doc/references/genres/execution-plan.md +27 -0
- package/skills/lark-doc/references/genres/formal-doc.md +37 -0
- package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
- package/skills/lark-doc/references/genres/memo-brief.md +25 -0
- package/skills/lark-doc/references/genres/official-redhead.md +73 -0
- package/skills/lark-doc/references/genres/prd.md +26 -0
- package/skills/lark-doc/references/genres/proposal.md +24 -0
- package/skills/lark-doc/references/genres/research-report.md +32 -0
- package/skills/lark-doc/references/genres/retrospective.md +25 -0
- package/skills/lark-doc/references/genres/route-consumer.md +37 -0
- package/skills/lark-doc/references/genres/route-creative.md +36 -0
- package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
- package/skills/lark-doc/references/genres/route-marketing.md +40 -0
- package/skills/lark-doc/references/genres/route-media.md +36 -0
- package/skills/lark-doc/references/genres/route-opinion.md +38 -0
- package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
- package/skills/lark-doc/references/genres/route-platform.md +9 -0
- package/skills/lark-doc/references/genres/route-report.md +10 -0
- package/skills/lark-doc/references/genres/route-workplace.md +17 -0
- package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
- package/skills/lark-doc/references/genres/technical-doc.md +39 -0
- package/skills/lark-doc/references/genres/wechat.md +39 -0
- package/skills/lark-doc/references/genres/weekly-report.md +24 -0
- package/skills/lark-doc/references/genres/white-paper.md +32 -0
- package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
- package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
- package/skills/lark-doc/references/lark-doc-create.md +22 -48
- package/skills/lark-doc/references/lark-doc-fetch.md +84 -93
- package/skills/lark-doc/references/lark-doc-history.md +16 -15
- package/skills/lark-doc/references/lark-doc-md.md +5 -1
- package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
- package/skills/lark-doc/references/lark-doc-script.md +76 -0
- package/skills/lark-doc/references/lark-doc-update.md +70 -222
- package/skills/lark-doc/references/lark-doc-whiteboard.md +14 -17
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +46 -0
- package/skills/lark-doc/references/lark-doc-xml.md +38 -166
- package/skills/lark-drive/SKILL.md +32 -50
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
- package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +3 -3
- package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
- package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
- package/skills/lark-drive/references/lark-drive-copy.md +87 -0
- package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
- package/skills/lark-drive/references/lark-drive-download.md +6 -1
- package/skills/lark-drive/references/lark-drive-export.md +3 -0
- package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
- package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
- package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
- package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
- package/skills/lark-drive/references/lark-drive-preview.md +11 -1
- package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
- package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
- package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
- package/skills/lark-drive/references/lark-drive-search.md +7 -1
- package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
- package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
- package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
- package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
- package/skills/lark-event/SKILL.md +8 -4
- package/skills/lark-event/references/lark-event-application.md +38 -0
- package/skills/lark-event/references/lark-event-vc.md +8 -2
- package/skills/lark-im/SKILL.md +9 -9
- package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
- package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
- package/skills/lark-im/references/card/resource/icons.md +14 -0
- package/skills/lark-im/references/lark-im-chat-list.md +9 -2
- package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
- package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
- package/skills/lark-im/references/lark-im-chat-search.md +9 -2
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
- package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +9 -8
- package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
- package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
- package/skills/lark-im/references/lark-im-messages-search.md +4 -5
- package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
- package/skills/lark-mail/references/lark-mail-triage.md +19 -4
- package/skills/lark-minutes/SKILL.md +1 -1
- package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
- package/skills/lark-okr/SKILL.md +71 -26
- package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
- package/skills/lark-okr/references/lark-okr-create.md +173 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
- package/skills/lark-okr/references/lark-okr-entities.md +1 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
- package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
- package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
- package/skills/lark-shared/SKILL.md +3 -3
- package/skills/lark-sheets/SKILL.md +83 -82
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
- package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
- package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
- package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/skills/lark-sheets/scripts/sheets_df.py +21 -3
- package/skills/lark-slides/SKILL.md +134 -104
- package/skills/lark-slides/references/asset-planning.md +6 -4
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/lark-slides-create.md +86 -66
- package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +6 -7
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +4 -27
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
- package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -4
- package/skills/lark-slides/references/lark-slides-screenshot.md +33 -15
- package/skills/lark-slides/references/lark-slides-update-slide.md +146 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +90 -32
- package/skills/lark-slides/references/planning-layer.md +11 -10
- package/skills/lark-slides/references/slides_chart_demo.xml +1415 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +539 -79
- package/skills/lark-slides/references/troubleshooting.md +26 -9
- package/skills/lark-slides/references/validation-checklist.md +55 -18
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +299 -51
- package/skills/lark-slides/scripts/sxsd_validator.py +1052 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1964 -195
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +4051 -501
- package/skills/lark-task/SKILL.md +7 -0
- package/skills/lark-task/references/lark-task-complete.md +6 -2
- package/skills/lark-task/references/lark-task-create.md +9 -0
- package/skills/lark-task/references/lark-task-update.md +6 -2
- package/skills/lark-whiteboard/SKILL.md +21 -13
- package/skills/lark-whiteboard/elements/layout.md +1 -1
- package/skills/lark-whiteboard/elements/schema.md +2 -2
- package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +17 -16
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +7 -7
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +23 -31
- package/skills/lark-whiteboard/routes/dsl.md +11 -5
- package/skills/lark-whiteboard/routes/mermaid.md +3 -3
- package/skills/lark-whiteboard/routes/svg-edit.md +9 -6
- package/skills/lark-whiteboard/routes/svg.md +14 -7
- package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
- package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
- package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/mention.md +71 -0
- package/skills/lark-whiteboard/scenes/treemap.md +1 -1
- package/skills/lark-wiki/SKILL.md +6 -3
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
- package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
- package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
- package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
- package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
- package/skills/lark-slides/references/examples.md +0 -91
- package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
- package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
- package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -125
- package/skills/lark-slides/references/slide-templates.md +0 -201
- package/skills/lark-slides/references/slides_demo.xml +0 -226
- package/skills/lark-slides/references/xml-format-guide.md +0 -433
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/* BEGIN USAGE */
|
|
2
|
+
// Android.jsx — Simplified Android (Material 3) device frame
|
|
3
|
+
// Status bar + content + gesture nav + keyboard.
|
|
4
|
+
// Based on Figma M3 spec. No dependencies, no image assets.
|
|
5
|
+
// Exports (to window): AndroidDevice, AndroidStatusBar, AndroidListItem, AndroidNavBar, AndroidKeyboard
|
|
6
|
+
//
|
|
7
|
+
// Usage — wrap your screen content in <AndroidDevice> to get the bezel, status
|
|
8
|
+
// bar and gesture nav (props: width=412, height=892, dark, keyboard):
|
|
9
|
+
//
|
|
10
|
+
// <AndroidDevice>
|
|
11
|
+
// ...your screen content...
|
|
12
|
+
// </AndroidDevice>
|
|
13
|
+
// <AndroidDevice dark keyboard>…</AndroidDevice>
|
|
14
|
+
// <AndroidDevice width={360} height={800}>…</AndroidDevice> // smaller device size
|
|
15
|
+
/* END USAGE */
|
|
16
|
+
|
|
17
|
+
const MD_C = {
|
|
18
|
+
surface: '#f4fbf8',
|
|
19
|
+
surfaceVariant: '#dae5e1',
|
|
20
|
+
inverseOnSurface: '#ecf2ef',
|
|
21
|
+
secondaryContainer: '#cde8e1',
|
|
22
|
+
primaryFixedDim: '#83d5c6',
|
|
23
|
+
onSurface: '#171d1b',
|
|
24
|
+
onSurfaceVar: '#49454f',
|
|
25
|
+
onPrimaryContainer: '#00201c',
|
|
26
|
+
primary: '#006a60',
|
|
27
|
+
frameBorder: 'rgba(116,119,117,0.5)',
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// ─────────────────────────────────────────────────────────────
|
|
31
|
+
// Status bar (time left, wifi/cell/battery right)
|
|
32
|
+
// ─────────────────────────────────────────────────────────────
|
|
33
|
+
function AndroidStatusBar({ dark = false }) {
|
|
34
|
+
const c = dark ? '#fff' : MD_C.onSurface;
|
|
35
|
+
return (
|
|
36
|
+
<div style={{
|
|
37
|
+
height: 40, display: 'flex', alignItems: 'center',
|
|
38
|
+
justifyContent: 'space-between', padding: '0 16px',
|
|
39
|
+
position: 'relative',
|
|
40
|
+
fontFamily: 'Roboto, system-ui, sans-serif',
|
|
41
|
+
}}>
|
|
42
|
+
{/* time left */}
|
|
43
|
+
<div style={{ width: 128, display: 'flex', alignItems: 'center', gap: 8 }}>
|
|
44
|
+
<span style={{ fontSize: 14, fontWeight: 400, letterSpacing: 0.25, lineHeight: '20px', color: c }}>9:30</span>
|
|
45
|
+
</div>
|
|
46
|
+
{/* camera punch-hole (center) */}
|
|
47
|
+
<div style={{
|
|
48
|
+
position: 'absolute', left: '50%', top: 8, transform: 'translateX(-50%)',
|
|
49
|
+
width: 24, height: 24, borderRadius: 100, background: '#2e2e2e',
|
|
50
|
+
}} />
|
|
51
|
+
{/* status icons right */}
|
|
52
|
+
<div style={{ display: 'flex', alignItems: 'center' }}>
|
|
53
|
+
<div style={{ display: 'flex', paddingRight: 2 }}>
|
|
54
|
+
<svg width="16" height="16" viewBox="0 0 16 16" style={{ marginRight: -2 }}>
|
|
55
|
+
<path d="M8 13.3L.67 5.97a10.37 10.37 0 0114.66 0L8 13.3z" fill={c}/>
|
|
56
|
+
</svg>
|
|
57
|
+
<svg width="16" height="16" viewBox="0 0 16 16" style={{ marginRight: -2 }}>
|
|
58
|
+
<path d="M14.67 14.67V1.33L1.33 14.67h13.34z" fill={c}/>
|
|
59
|
+
</svg>
|
|
60
|
+
</div>
|
|
61
|
+
<svg width="16" height="16" viewBox="0 0 16 16">
|
|
62
|
+
<rect x="3.75" y="2" width="8.5" height="13" rx="1.5" fill={c}/>
|
|
63
|
+
<rect x="5.5" y="0.9" width="5" height="2" rx="0.5" fill={c}/>
|
|
64
|
+
</svg>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ─────────────────────────────────────────────────────────────
|
|
71
|
+
// List item (Material 3)
|
|
72
|
+
// ─────────────────────────────────────────────────────────────
|
|
73
|
+
function AndroidListItem({ headline, supporting, leading }) {
|
|
74
|
+
return (
|
|
75
|
+
<div style={{
|
|
76
|
+
display: 'flex', alignItems: 'center', gap: 16,
|
|
77
|
+
padding: '12px 16px', minHeight: 56, boxSizing: 'border-box',
|
|
78
|
+
fontFamily: 'Roboto, system-ui, sans-serif',
|
|
79
|
+
}}>
|
|
80
|
+
{leading && (
|
|
81
|
+
<div style={{
|
|
82
|
+
width: 40, height: 40, borderRadius: '50%',
|
|
83
|
+
background: MD_C.primary, color: '#fff',
|
|
84
|
+
display: 'flex', alignItems: 'center', justifyContent: 'center',
|
|
85
|
+
fontSize: 18, fontWeight: 500, flexShrink: 0,
|
|
86
|
+
}}>{leading}</div>
|
|
87
|
+
)}
|
|
88
|
+
<div style={{ flex: 1, minWidth: 0 }}>
|
|
89
|
+
<div style={{ fontSize: 16, color: MD_C.onSurface, lineHeight: '24px' }}>{headline}</div>
|
|
90
|
+
{supporting && (
|
|
91
|
+
<div style={{ fontSize: 14, color: MD_C.onSurfaceVar, lineHeight: '20px' }}>{supporting}</div>
|
|
92
|
+
)}
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ─────────────────────────────────────────────────────────────
|
|
99
|
+
// Gesture nav bar (pill)
|
|
100
|
+
// ─────────────────────────────────────────────────────────────
|
|
101
|
+
function AndroidNavBar({ dark = false }) {
|
|
102
|
+
return (
|
|
103
|
+
<div style={{
|
|
104
|
+
height: 24, display: 'flex', alignItems: 'center', justifyContent: 'center',
|
|
105
|
+
}}>
|
|
106
|
+
<div style={{
|
|
107
|
+
width: 108, height: 4, borderRadius: 2,
|
|
108
|
+
background: dark ? '#fff' : MD_C.onSurface, opacity: 0.4,
|
|
109
|
+
}} />
|
|
110
|
+
</div>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ─────────────────────────────────────────────────────────────
|
|
115
|
+
// Device frame — wraps everything
|
|
116
|
+
// ─────────────────────────────────────────────────────────────
|
|
117
|
+
function AndroidDevice({
|
|
118
|
+
children, width = 412, height = 892, dark = false,
|
|
119
|
+
keyboard = false,
|
|
120
|
+
}) {
|
|
121
|
+
return (
|
|
122
|
+
<div style={{
|
|
123
|
+
width, height, borderRadius: 18, overflow: 'hidden',
|
|
124
|
+
background: dark ? '#1d1b20' : MD_C.surface,
|
|
125
|
+
border: `8px solid ${MD_C.frameBorder}`,
|
|
126
|
+
display: 'flex', flexDirection: 'column', boxSizing: 'border-box',
|
|
127
|
+
}}>
|
|
128
|
+
<AndroidStatusBar dark={dark} />
|
|
129
|
+
<div style={{ flex: 1, overflow: 'auto' }}>
|
|
130
|
+
{children}
|
|
131
|
+
</div>
|
|
132
|
+
{keyboard && <AndroidKeyboard />}
|
|
133
|
+
<AndroidNavBar dark={dark} />
|
|
134
|
+
</div>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// ─────────────────────────────────────────────────────────────
|
|
139
|
+
// Keyboard — Gboard (Material 3)
|
|
140
|
+
// ─────────────────────────────────────────────────────────────
|
|
141
|
+
function AndroidKeyboard() {
|
|
142
|
+
let _k = 0;
|
|
143
|
+
const key = (l, { flex = 1, bg = MD_C.surface, r = 6, minW, fs = 21 } = {}) => (
|
|
144
|
+
<div key={_k++} style={{
|
|
145
|
+
height: 46, borderRadius: r, flex, minWidth: minW,
|
|
146
|
+
background: bg, display: 'flex', alignItems: 'center', justifyContent: 'center',
|
|
147
|
+
fontFamily: 'Roboto, system-ui', fontSize: fs,
|
|
148
|
+
color: MD_C.onPrimaryContainer,
|
|
149
|
+
}}>{l}</div>
|
|
150
|
+
);
|
|
151
|
+
const row = (keys, style = {}) => (
|
|
152
|
+
<div style={{ display: 'flex', gap: 6, justifyContent: 'center', ...style }}>
|
|
153
|
+
{keys.map(l => key(l))}
|
|
154
|
+
</div>
|
|
155
|
+
);
|
|
156
|
+
return (
|
|
157
|
+
<div style={{
|
|
158
|
+
background: MD_C.inverseOnSurface, padding: '0 8px 8px',
|
|
159
|
+
display: 'flex', flexDirection: 'column', gap: 4,
|
|
160
|
+
}}>
|
|
161
|
+
{/* navbar spacer (icons omitted) */}
|
|
162
|
+
<div style={{ height: 44 }} />
|
|
163
|
+
{/* key rows */}
|
|
164
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
165
|
+
{row(['q','w','e','r','t','y','u','i','o','p'])}
|
|
166
|
+
{row(['a','s','d','f','g','h','j','k','l'], { padding: '0 20px' })}
|
|
167
|
+
<div style={{ display: 'flex', gap: 6 }}>
|
|
168
|
+
{key('', { bg: MD_C.surfaceVariant })}
|
|
169
|
+
<div style={{ display: 'flex', gap: 6, flex: 7, minWidth: 274 }}>
|
|
170
|
+
{['z','x','c','v','b','n','m'].map(l => key(l))}
|
|
171
|
+
</div>
|
|
172
|
+
{key('', { bg: MD_C.surfaceVariant })}
|
|
173
|
+
</div>
|
|
174
|
+
<div style={{ display: 'flex', gap: 6 }}>
|
|
175
|
+
{key('?123', { bg: MD_C.secondaryContainer, r: 100, minW: 58, fs: 14 })}
|
|
176
|
+
{key(',', { bg: MD_C.surfaceVariant })}
|
|
177
|
+
{key('', { flex: 3, minW: 154 })}
|
|
178
|
+
{key('.', { bg: MD_C.surfaceVariant })}
|
|
179
|
+
{key('', { bg: MD_C.primaryFixedDim, r: 100, minW: 58 })}
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
Object.assign(window, {
|
|
187
|
+
AndroidDevice, AndroidStatusBar, AndroidListItem, AndroidNavBar, AndroidKeyboard,
|
|
188
|
+
});
|